king
2024-03-07 cdd5b449130ea4d7223fde4f414a11a7d0c33d6d
src/menu/components/card/cardsimplecomponent/options.jsx
@@ -1,9 +1,36 @@
/**
 * @description tablecard setting表单配置信息
 */
export function getTableSetting (setting, columns) {
export function getTableSetting (setting, columns, buttons = [], action = []) {
  let _columns = columns.map(item => ({value: item.field, label: item.label}))
  _columns.push({value: '$Index', label: '序号(前端)'})
  let appType = sessionStorage.getItem('appType')
  let menulist = []
  let appmenulist = []
  if (appType) {
    appmenulist = sessionStorage.getItem('appMenus')
    if (appmenulist) {
      try {
        appmenulist = JSON.parse(appmenulist)
      } catch (e) {
        appmenulist = []
      }
    } else {
      appmenulist = []
    }
  } else {
    menulist = sessionStorage.getItem('fstMenuList')
    if (menulist) {
      try {
        menulist = JSON.parse(menulist)
      } catch (e) {
        menulist = []
      }
    } else {
      menulist = []
    }
  }
  const settingForm = [
    {
@@ -50,6 +77,88 @@
      label: '对比值',
      initval: setting.controlValue || '',
      required: false
    },
    {
      type: 'radio',
      field: 'click',
      label: '点击事件',
      initval: setting.click || '',
      // tooltip: '当选择触发按钮时,只有当卡片中只存在一个按钮时有效。',
      required: false,
      options: [
        {value: '', label: '无'},
        {value: 'menu', label: '菜单'},
        {value: 'link', label: '链接'},
        {value: 'button', label: '按钮'},
      ],
      controlFields: [
        {field: 'menu', values: ['menu']},
        {field: 'linkurl', values: ['link']},
        {field: 'open', values: ['menu', 'link']},
        {field: 'joint', values: ['menu', 'link']},
        {field: 'linkbtn', values: ['button']},
      ]
    },
    {
      type: 'radio',
      field: 'joint',
      label: '参数拼接',
      initval: setting.joint || 'true',
      required: false,
      options: [
        {value: 'true', label: '是'},
        {value: 'false', label: '否'},
      ],
    },
    {
      type: 'radio',
      field: 'open',
      label: '打开方式',
      initval: setting.open || 'blank',
      required: false,
      options: [
        {value: 'blank', label: appType !== 'mob' ? '新窗口' : '新页面'},
        {value: 'self', label: appType !== 'mob' ? '当前窗口' : '当前页面'},
      ],
      forbid: appType !== 'pc' && appType !== 'mob'
    },
    {
      type: appType ? 'select' : 'cascader',
      field: 'menu',
      label: '关联菜单',
      initval: setting.menu || (appType ? '' : []),
      required: true,
      extendName: 'MenuNo',
      options: appType ? appmenulist : menulist,
    },
    {
      type: 'textarea',
      field: 'linkurl',
      label: '链接',
      initval: setting.linkurl || '',
      required: true,
      options: [],
      span: 24
    },
    {
      type: 'select',
      field: 'linkbtn',
      label: '关联按钮',
      initval: setting.linkbtn || '',
      required: true,
      options: buttons
    },
    {
      type: 'radio',
      field: 'swipe',
      label: '滑动按钮',
      initval: setting.swipe || 'true',
      required: false,
      options: [
        {value: 'true', label: '显示'},
        {value: 'false', label: '不显示'},
      ],
      forbid: action.length === 0 || appType !== 'mob'
    }
  ]
@@ -70,7 +179,7 @@
    if (appmenulist) {
      try {
        appmenulist = JSON.parse(appmenulist)
      } catch {
      } catch (e) {
        appmenulist = []
      }
    } else {
@@ -81,12 +190,20 @@
    if (menulist) {
      try {
        menulist = JSON.parse(menulist)
      } catch {
      } catch (e) {
        menulist = []
      }
    } else {
      menulist = []
    }
  }
  let ops = []
  let adapters = sessionStorage.getItem('adapter') || ''
  if (adapters.indexOf('wxmini') > -1) {
    ops.push({value: 'miniprogram', label: '小程序'})
  } else if (setting.click === 'miniprogram') {
    setting.click = ''
  }
  const cardSettingForm = [
@@ -95,9 +212,20 @@
      field: 'primaryId',
      label: '主键值',
      initval: setting.primaryId || '',
      tooltip: '卡片点击时,向其他组件传递的ID值。',
      tooltip: '设置一个属性卡静态ID,向其他组件传递的指定静态ID值',
      required: false,
      forbid: !hasPrimaryKey
    },
    {
      type: 'radio',
      field: 'layout',
      label: '元素布局',
      initval: setting.layout || 'grid',
      required: false,
      options: [
        {value: 'grid', label: '栅格布局'},
        {value: 'flex', label: '弹性布局'},
      ]
    },
    {
      type: 'radio',
@@ -109,41 +237,25 @@
        {value: '', label: '无'},
        {value: 'menu', label: '菜单'},
        {value: 'link', label: '链接'},
        ...ops
      ],
      controlFields: [
        {field: 'menu', values: ['menu']},
        {field: 'appmenu', values: ['menu']},
        {field: 'linkurl', values: ['link']},
        {field: 'open', values: ['menu', 'link']},
        {field: 'joint', values: ['menu', 'link']},
        {field: 'joint', values: ['menu', 'link', 'miniprogram']},
        {field: 'miniAppId', values: ['miniprogram']},
        {field: 'miniPath', values: ['miniprogram']},
      ]
    },
    {
      type: 'cascader',
      type: appType ? 'select' : 'cascader',
      field: 'menu',
      label: '菜单',
      initval: setting.menu || [],
      required: true,
      options: menulist,
      forbid: !!appType
    },
    {
      type: 'select',
      field: 'appmenu',
      label: '关联菜单',
      initval: setting.menu || '',
      initval: setting.menu || (appType ? '' : []),
      required: true,
      options: appmenulist,
      forbid: !appType
    },
    {
      type: 'textarea',
      field: 'linkurl',
      label: '链接',
      initval: setting.linkurl || '',
      required: true,
      options: [],
      span: 24
      extendName: 'MenuNo',
      options: appType ? appmenulist : menulist,
    },
    {
      type: 'radio',
@@ -152,10 +264,25 @@
      initval: setting.open || 'blank',
      required: false,
      options: [
        {value: 'blank', label: '新窗口'},
        {value: 'self', label: '当前窗口'},
        {value: 'blank', label: appType !== 'mob' ? '新窗口' : '新页面'},
        {value: 'self', label: appType !== 'mob' ? '当前窗口' : '当前页面'},
      ],
      forbid: appType !== 'pc'
      forbid: appType !== 'pc' && appType !== 'mob'
    },
    {
      type: 'text',
      field: 'miniAppId',
      label: '小程序AppID',
      initval: setting.miniAppId || '',
      required: true
    },
    {
      type: 'text',
      field: 'miniPath',
      label: '页面路径',
      initval: setting.miniPath || '',
      tooltip: '可指定跳转小程序页面,为空时打开首页,注:参数拼接在指定页面时有效。',
      required: false
    },
    {
      type: 'radio',
@@ -168,6 +295,15 @@
        {value: 'false', label: '否'},
      ],
    },
    {
      type: 'textarea',
      field: 'linkurl',
      label: '链接',
      initval: setting.linkurl || '',
      required: true,
      options: [],
      span: 24
    },
  ]
  return cardSettingForm