king
2025-04-21 f3d4db769ba9b51b799d981511a710fd443d0e08
src/mob/components/tabs/antv-tabs/options.jsx
@@ -1,8 +1,9 @@
import MenuUtils from '@/utils/utils-custom.js'
/**
 * @description Wrap表单配置信息
 */
export function getTabForm(tab, setting) {
  let appType = sessionStorage.getItem('appType')
export function getTabForm(tab) {
  let roleList = sessionStorage.getItem('sysRoles')
  if (roleList) {
@@ -23,7 +24,6 @@
      initval: tab.label || '',
      required: true,
      focus: true,
      span: 22
    },
    {
      type: 'mkicon',
@@ -32,28 +32,29 @@
      initval: tab.icon || '',
      required: false,
      allowClear: true,
      span: 22
    },
    // {
    //   type: 'radio',
    //   field: 'hasSearch',
    //   label: '搜索',
    //   initval: tab.hasSearch || 'false',
    //   required: false,
    //   options: [
    //     {value: 'false', label: '无'},
    //     {value: 'icon', label: '有'},
    //   ],
    //   forbid: appType !== 'mob' || setting.display !== 'inline-block',
    //   span: 22
    //   type: 'text',
    //   field: 'controlVal',
    //   label: '隐藏标记',
    //   initval: tab.controlVal || '',
    //   tooltip: '当禁用字段值与隐藏标记相等时,标签页会隐藏。注:多个值请用逗号分隔。',
    //   required: false
    // },
    // {
    //   type: 'text',
    //   field: 'selectVal',
    //   label: '选中标记',
    //   initval: tab.selectVal || '',
    //   tooltip: '当选中字段值与选中标记相等时,标签页默认选中。',
    //   required: false
    // },
    {
      type: 'color',
      field: 'backgroundColor',
      label: '背景色',
      label: '背景(内容区)',
      initval: tab.backgroundColor || 'transparent',
      required: false,
      span: 22
    },
    {
      type: 'radio',
@@ -65,18 +66,7 @@
        {value: 'false', label: '否'},
        {value: 'true', label: '是'},
      ],
      span: 22
    },
    {
      type: 'multiselect',
      field: 'blacklist',
      label: '黑名单',
      initval: tab.blacklist || [],
      required: false,
      options: roleList,
      forbid: !!appType,
      span: 22
    },
    }
  ]
  return tabForm
@@ -85,7 +75,16 @@
/**
 * @description tabs表单配置信息
 */
export function getTabsSetForm(setting) {
export function getTabsSetForm(setting, uuid, subtabs) {
  let modules = MenuUtils.getSupModules(window.GLOB.customMenu.components, uuid, window.GLOB.customMenu.interfaces)
  modules.push({
    value: 'preview',
    label: '上一页(url参数)'
  })
  let controlVals = subtabs.map(item => ({uuid: item.uuid, label: item.label, value: item.controlVal || ''}))
  let selectVals = subtabs.map(item => ({uuid: item.uuid, label: item.label, value: item.selectVal || ''}))
  const tabForm = [
    {
      type: 'text',
@@ -106,22 +105,6 @@
      precision: 0,
      required: true
    },
    // {
    //   type: 'select',
    //   field: 'position',
    //   label: '标签位置',
    //   initval: setting.position || 'top',
    //   required: true,
    //   options: [
    //     {value: 'top', label: 'top'},
    //     {value: 'bottom', label: 'bottom'},
    //     {value: 'left', label: 'left'},
    //     {value: 'right', label: 'right'},
    //   ],
    //   controlFields: [
    //     {field: 'display', values: ['top', 'bottom']},
    //   ]
    // },
    {
      type: 'radio',
      field: 'display',
@@ -132,6 +115,125 @@
        {value: 'flex', label: '弹性布局'},
        {value: 'inline-block', label: '定宽'},
      ],
    },
    {
      type: 'cascader',
      field: 'supModule',
      label: '上级组件',
      initval: setting.supModule || [],
      tooltip: '标签组可以选择上级组件,填入禁用字段,用于控制标签隐藏。',
      help: '用于控制标签页隐藏。',
      required: false,
      allowClear: true,
      options: modules,
      controlFields: [
        {field: 'controlField', notNull: true},
        {field: 'controlVals', notNull: true},
        {field: 'swiper', values: ['']},
      ],
    },
    {
      type: 'text',
      field: 'controlField',
      label: '禁用字段',
      initval: setting.controlField || '',
      tooltip: '用于控制标签隐藏的字段,在标签中填入隐藏标记。',
      required: true
    },
    {
      type: 'radio',
      field: 'swiper',
      label: '滑动切换',
      initval: setting.swiper || 'false',
      required: false,
      options: [
        {value: 'false', label: '禁用'},
        {value: 'true', label: '启用'},
      ],
    },
    {
      type: 'text',
      field: 'selectField',
      label: '选中字段',
      initval: setting.selectField || '',
      tooltip: '用于控制标签页初始化选中,在标签中填入选中标记,注:数据源于url参数。',
      required: false,
      controlFields: [
        {field: 'selectVals', notNull: true},
      ]
    },
    {
      type: 'color',
      field: 'backgroundColor',
      label: '背景(标题栏)',
      initval: setting.backgroundColor || 'transparent',
      required: false
    },
    {
      type: 'radio',
      field: 'permission',
      label: '权限验证',
      initval: setting.permission || 'false',
      required: false,
      options: [
        {value: 'true', label: '启用'},
        {value: 'false', label: '禁用'},
      ],
      forbid: sessionStorage.getItem('editMenuType') === 'popview'
    },
    {
      type: 'table',
      field: 'controlVals',
      label: '标签组(禁用)',
      initval: controlVals,
      tooltip: '当禁用字段值与隐藏标记相等时,标签页会隐藏。注:1、多个值请用逗号分隔,2、@pass@值表示忽略此设置(始终显示),2、@pass_empty@值表示忽略空值,即未获取上级组件信息时显示(可与其他值拼接)。',
      required: false,
      actions: ['edit'],
      span: 24,
      columns: [
        {
          title: '标签名称',
          dataIndex: 'label',
          editable: false,
          required: false,
          width: '30%'
        },
        {
          title: '隐藏标记',
          dataIndex: 'value',
          inputType: 'input',
          editable: true,
          required: false,
          width: '50%'
        }
      ]
    },
    {
      type: 'table',
      field: 'selectVals',
      label: '标签组(选中)',
      initval: selectVals,
      tooltip: '当选中字段值与选中标记相等时,标签页默认选中。',
      required: false,
      actions: ['edit'],
      span: 24,
      columns: [
        {
          title: '标签名称',
          dataIndex: 'label',
          editable: false,
          required: false,
          width: '30%'
        },
        {
          title: '选中标记',
          dataIndex: 'value',
          inputType: 'input',
          editable: true,
          required: false,
          width: '50%'
        }
      ]
    }
  ]