king
2022-08-06 cbeffcc0902631909c0373f274752a97ddaf2d4e
src/menu/components/card/data-card/options.jsx
@@ -4,10 +4,11 @@
/**
 * @description Wrap表单配置信息
 */
export default function (wrap, subtype, columns = [], id = '', supNodes = []) {
export default function (wrap, subtype, columns = [], id = '', supNodes = [], setting) {
  let appType = sessionStorage.getItem('appType')
  let MenuType = ''
  let menu = fromJS(window.GLOB.customMenu).toJS()
  let laypage = setting && setting.laypage !== 'false'
  if (menu.parentId === 'BillPrintTemp') {
    MenuType = 'billPrint'
@@ -27,6 +28,21 @@
    }
  } else {
    roleList = []
  }
  let menulist = []
  if (appType === 'mob') {
    menulist = sessionStorage.getItem('appMenus')
    if (menulist) {
      try {
        menulist = JSON.parse(menulist)
      } catch (e) {
        menulist = []
      }
    } else {
      menulist = []
    }
  }
  const cardWrapForm = [
@@ -71,9 +87,27 @@
      controlFields: [
        {field: 'goback', values: ['dynamic']},
        {field: 'empty', values: ['dynamic']},
        {field: 'jump', values: ['dynamic']},
        {field: 'supModule', values: ['static']},
      ],
      forbid: subtype !== 'propcard'
    },
    {
      type: 'radio',
      field: 'layout',
      label: '卡片布局',
      initval: wrap.layout || 'grid',
      tooltip: appType === 'mob' ? '弹性布局时,滑动加载无效' : '弹性布局时,左右切换无效',
      required: false,
      options: [
        {value: 'grid', label: '栅格布局'},
        {value: 'flex', label: '弹性布局'},
      ],
      controlFields: subtype !== 'propcard' ? [
        {field: 'printHeight', values: ['flex']},
        {field: 'cardFloat', values: ['grid']},
      ] : [{field: 'cardFloat', values: ['grid']}],
      forbid: subtype === 'tablecard'
    },
    {
      type: 'radio',
@@ -82,10 +116,14 @@
      initval: wrap.pagestyle || 'page',
      tooltip: '数据源选择分页时有效。注:滑动加载只有第一个有效',
      required: false,
      disabled: !laypage,
      options: [
        {value: 'page', label: '页码'},
        {value: 'switch', label: '左右切换', forbid: appType === 'mob'},
        {value: 'slide', label: '滑动加载', forbid: appType !== 'mob'},
      ],
      controlFields: [
        {field: 'slidetip', values: ['slide']},
      ],
      forbid: !(subtype === 'datacard' || (subtype === 'tablecard' && appType === 'mob'))
    },
@@ -129,12 +167,14 @@
      field: 'selected',
      label: '首行选中',
      initval: wrap.selected || 'false',
      tooltip: '当按钮执行完成并返回主键值时,默认选中主键值对应行。',
      required: false,
      options: [
        {value: 'false', label: '无'},
        {value: 'init', label: '初始化'},
        {value: 'always', label: '数据加载'},
      ]
      ],
      forbid: subtype === 'tablecard'
    },
    {
      type: 'select',
@@ -148,9 +188,10 @@
        {value: 'active', label: '外阴影'},
        {value: 'backFont', label: '背景+文字'},
        {value: 'font', label: '文字'},
        {value: 'tabs', label: '标签页'},
        ...(subtype === 'datacard' && appType === 'mob' ? [{value: 'check', label: '勾选'}] : [])
      ]
      // forbid: subtype !== 'propcard'
      ],
      forbid: subtype === 'tablecard'
    },
    // {
    //   type: 'radio',
@@ -169,7 +210,7 @@
      field: 'cardFloat',
      label: '对齐方式',
      initval: wrap.cardFloat || 'left',
      tooltip: '设置为居中对齐或右对齐,只在卡片为1行时有效。',
      tooltip: '设置卡片的对齐方式。',
      required: false,
      options: [
        {value: 'left', label: '左对齐'},
@@ -202,7 +243,19 @@
        {value: 'content', label: '内容'},
        {value: 'headerOrfooter', label: '页眉/页脚'},
      ],
      controlFields: [
        {field: 'printHeight', values: ['content']},
      ],
      forbid: subtype !== 'propcard' || MenuType !== 'billPrint'
    },
    {
      type: 'number',
      field: 'printHeight',
      label: '换算高度',
      initval: wrap.printHeight || '',
      tooltip: subtype !== 'propcard' ? '当前数据卡高度相当于几条数据。' : '当前属性卡高度相当于几条数据。',
      required: false,
      forbid: subtype === 'tablecard' || MenuType !== 'billPrint'
    },
    {
      type: 'select',
@@ -239,6 +292,67 @@
        {value: 'show', label: '否'},
        {value: 'hidden', label: '是'},
      ],
    },
    {
      type: 'radio',
      field: 'jump',
      label: '页面跳转',
      initval: wrap.jump || '',
      tooltip: '通过查询返回值判断页面是否要跳转。',
      required: false,
      options: [
        {value: '', label: '无'},
        {value: 'menu', label: '菜单'},
        {value: 'link', label: '链接'},
      ],
      controlFields: [
        {field: 'jumpField', values: ['menu', 'link']},
        {field: 'joint', values: ['menu', 'link']},
        {field: 'menu', values: ['menu']},
        {field: 'link', values: ['link']},
      ],
      forbid: subtype !== 'propcard' || appType !== 'mob'
    },
    {
      type: 'select',
      field: 'jumpField',
      label: '控制字段',
      initval: wrap.jumpField || '',
      tooltip: '当字段值为true时',
      required: true,
      options: columns,
      forbid: subtype !== 'propcard' || appType !== 'mob'
    },
    {
      type: 'select',
      field: 'menu',
      label: '菜单',
      initval: wrap.menu || '',
      required: true,
      options: menulist,
      forbid: subtype !== 'propcard' || appType !== 'mob'
    },
    {
      type: 'select',
      field: 'link',
      label: '链接字段',
      initval: wrap.link || '',
      tooltip: '跳转链接为查询数据的返回值。',
      required: true,
      options: columns,
      forbid: subtype !== 'propcard' || appType !== 'mob'
    },
    {
      type: 'radio',
      field: 'joint',
      label: '参数拼接',
      initval: wrap.joint || 'true',
      required: false,
      options: [
        {value: 'true', label: '是'},
        {value: 'false', label: '否'},
      ],
      forbid: subtype !== 'propcard' || appType !== 'mob'
    },
    {
      type: 'radio',
@@ -280,9 +394,9 @@
    {
      type: 'text',
      field: 'controlVal',
      label: '控制值',
      label: '禁用值',
      initval: wrap.controlVal || '',
      tooltip: '当字段值与控制值相等时,行数据会禁用,多个值用逗号分隔。',
      tooltip: '当字段值与禁用值相等时,行数据会禁用,多个值用逗号分隔。',
      required: false,
      forbid: subtype !== 'datacard'
    },
@@ -303,6 +417,18 @@
      ]
    },
    {
      type: 'radio',
      field: 'permission',
      label: '权限验证',
      initval: wrap.permission || 'false',
      required: false,
      options: [
        {value: 'true', label: '启用'},
        {value: 'false', label: '禁用'},
      ],
      forbid: !appType
    },
    {
      type: 'multiselect',
      field: 'blacklist',
      label: '黑名单',
@@ -310,6 +436,15 @@
      required: false,
      options: roleList,
      forbid: !!appType
    },
    {
      type: 'text',
      field: 'slidetip',
      label: '底部提示',
      initval: wrap.slidetip || wrap.slidetip === '' ? wrap.slidetip : '没有更多了',
      tooltip: '滑动加载至底部时的提示信息。',
      required: false,
      forbid: !laypage || appType !== 'mob' || subtype === 'propcard'
    },
    {
      type: 'table',
@@ -342,11 +477,11 @@
    }
  ]
  return cardWrapForm.map(item => {
  return cardWrapForm.filter(item => {
    if (['pagestyle'].includes(item.field)) {
      item.options = item.options.filter(option => !option.forbid)
    }
    return item
    return !item.forbid
  })