king
2023-05-09 7b0dbecd1d6155d26ec67be0a47a16264c738c85
src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx
@@ -1,8 +1,3 @@
import zhCN from '@/locales/zh-CN/model.js'
import enUS from '@/locales/en-US/model.js'
const Formdict = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS
/**
 * @description 获取显示列表单配置信息
 * @param {object} card       // 搜索条件对象
@@ -19,25 +14,29 @@
    roleList = []
  }
  if (['picture', 'link', 'colspan'].includes(card.type)) {
  // if (['picture', 'link', 'colspan'].includes(card.type)) {
  if (['picture', 'link'].includes(card.type)) {
    card.type = 'text'
  }
  let options = [{
    value: 'text',
    text: Formdict['model.form.text']
    text: '文本'
  }, {
    value: 'number',
    text: Formdict['model.form.number']
    text: '数字'
  }, {
    value: 'textarea',
    text: Formdict['model.form.textarea']
    text: '多行文本'
  }, {
    value: 'custom',
    text: '自定义列'
  }, {
    value: 'action',
    text: '操作'
    value: 'colspan',
    text: '合并列'
  // }, {
  //   value: 'action',
  //   text: '操作'
  }, {
    value: 'formula',
    text: '公式'
@@ -46,10 +45,25 @@
    text: '序号'
  }]
  if (!card.isSub) {
    options.push({
      value: 'action',
      text: '操作'
    })
  }
  let editCols = [
    {
      field: '$sub',
      label: '提交'
    },
    {
      field: '$next',
      label: '下一行'
    },
    {
      field: '$noAct',
      label: '无动作'
    }
  ]
  columns.forEach(col => {
@@ -57,6 +71,15 @@
      editCols.push({
        field: col.uuid,
        label: col.label
      })
    } else if (col.type === 'colspan') {
      col.subcols.forEach(subcol => {
        if (subcol.editable === 'true' && subcol.uuid !== card.uuid) {
          editCols.push({
            field: subcol.uuid,
            label: col.label + '-' + subcol.label
          })
        }
      })
    }
  })
@@ -72,7 +95,7 @@
    {
      type: 'select',
      key: 'type',
      label: Formdict['model.form.type'],
      label: '类型',
      initVal: card.type,
      required: true,
      options: options
@@ -80,7 +103,7 @@
    {
      type: 'select',
      key: 'field',
      label: Formdict['model.form.field'],
      label: '字段',
      initVal: card.field,
      required: true,
      options: fields
@@ -90,72 +113,71 @@
      key: 'Width',
      min: 20,
      max: 1000,
      decimal: 0,
      label: Formdict['model.form.columnWidth'],
      precision: 0,
      label: '列宽',
      initVal: card.Width || 120,
      required: true
    },
    {
      type: 'radio',
      key: 'Hide',
      label: Formdict['model.hidden'],
      label: '隐藏',
      initVal: card.Hide || 'false',
      required: true,
      options: [{
        value: 'true',
        text: Formdict['model.true']
        text: '是'
      }, {
        value: 'false',
        text: Formdict['model.false']
        text: '否'
      }]
    },
    {
      type: 'radio',
      key: 'IsSort',
      label: Formdict['model.sort'],
      initVal: card.IsSort || 'false',
      label: '排序',
      initVal: card.IsSort || (card.isSub ? 'false' : 'true'),
      required: true,
      forbidden: card.isSub,
      options: [{
        value: 'true',
        text: Formdict['model.true']
        text: '是'
      }, {
        value: 'false',
        text: Formdict['model.false']
        text: '否'
      }]
    },
    {
      type: 'radio',
      key: 'Align',
      label: Formdict['model.form.align'],
      label: '对齐方式',
      initVal: card.Align || 'left',
      required: true,
      options: [{
        value: 'left',
        text: Formdict['model.form.alignLeft']
        text: '左对齐'
      }, {
        value: 'center',
        text: Formdict['model.form.alignCenter']
        text: '居中'
      }, {
        value: 'right',
        text: Formdict['model.form.alignRight']
        text: '右对齐'
      }]
    },
    {
      type: 'radio',
      key: 'sum',
      label: '显示合计',
      initVal: card.sum || 'false',
      tooltip: '合计信息只在使用系统数据源时有效。',
      required: false,
      options: [{
        value: 'true',
        text: Formdict['model.true']
      }, {
        value: 'false',
        text: Formdict['model.false']
      }]
    },
    // {
    //   type: 'radio',
    //   key: 'sum',
    //   label: '显示合计',
    //   initVal: card.sum || 'false',
    //   tooltip: '合计信息只在使用系统数据源时有效。',
    //   required: false,
    //   options: [{
    //     value: 'true',
    //     text: '是'
    //   }, {
    //     value: 'false',
    //     text: '否'
    //   }]
    // },
    {
      type: 'radio',
      key: 'editable',
@@ -168,6 +190,153 @@
      }, {
        value: 'true',
        text: '是'
      }]
    },
    {
      type: 'radio',
      key: 'editType',
      label: '编辑类型',
      initVal: card.editType || 'text',
      required: true,
      options: [{
        value: 'text',
        text: '文本'
      }, {
        value: 'select',
        text: '下拉'
      }, {
        value: 'switch',
        text: '开关'
      }]
    },
    {
      type: 'text',
      key: 'initval',
      label: '默认值',
      initVal: card.initval,
      tooltip: '使用$copy时,表示新增时复制上一行信息。',
      required: false
    },
    {
      type: 'text',
      key: 'openVal',
      label: '开启值',
      initVal: card.openVal || '',
      required: false
    },
    {
      type: 'text',
      key: 'closeVal',
      label: '关闭值',
      initVal: card.closeVal || '',
      required: false
    },
    {
      type: 'text',
      key: 'openText',
      label: '开启提示',
      initVal: card.openText || '',
      required: false
    },
    {
      type: 'text',
      key: 'closeText',
      label: '关闭提示',
      initVal: card.closeText || '',
      required: false
    },
    {
      type: 'radio',
      key: 'resourceType',
      label: '选项来源',
      initVal: card.resourceType || '0',
      required: true,
      options: [{
        value: '0',
        text: '自定义'
      }, {
        value: '1',
        text: '数据源'
      }]
    },
    {
      type: 'select',
      key: 'editField',
      label: '编辑字段',
      initVal: card.editField || '',
      tooltip: '当值与提示文字不同时,可额外添加编辑字段,作为实际值的录入字段。',
      allowClear: true,
      required: false,
      options: fields
    },
    {
      type: 'options',
      key: 'options',
      label: '选项',
      initVal: card.options || [],
      required: true,
    },
    {
      type: 'codemirror',
      key: 'dataSource',
      label: '数据源',
      initVal: card.dataSource || '',
      required: true,
    },
    {
      type: 'text',
      key: 'valueField',
      label: '值·字段',
      initVal: card.valueField || '',
      required: true,
    },
    {
      type: 'text',
      key: 'valueText',
      label: '文本·字段',
      initVal: card.valueText || '',
      required: true,
    },
    {
      type: 'text',
      key: 'orderBy',
      label: '排序·字段',
      initVal: card.orderBy || '',
      required: false,
    },
    {
      type: 'select',
      key: 'orderType',
      label: '排序方式',
      initVal: card.orderType || 'asc',
      options: [{
        value: 'asc',
        text: '正序'
      }, {
        value: 'desc',
        text: '倒序'
      }]
    },
    {
      type: 'text',
      key: 'disableField',
      label: '禁用·字段',
      initVal: card.disableField || '',
      tooltip: '设置禁用字段,且字段值为true时,选项不可选。',
      required: false,
    },
    {
      type: 'radio',
      key: 'dropdown',
      label: '下拉宽度',
      initVal: card.dropdown || 'flex',
      required: false,
      options: [{
        value: 'flex',
        text: '自适应'
      }, {
        value: 'fixed',
        text: '定宽'
      }]
    },
    {
@@ -185,46 +354,70 @@
      }]
    },
    {
      type: 'text',
      key: 'initval',
      label: '默认值',
      initVal: card.initval,
      tooltip: '使用$copy时,表示新增时复制上一行信息。',
      required: false
      type: 'radio',
      key: 'database',
      label: '数据库',
      initVal: card.database || 'local',
      options: [{
        value: 'local',
        text: '本地'
      }, {
        value: 'sso',
        text: '系统'
      }]
    },
    {
      type: 'select',
      key: 'enter',
      label: '回车切换',
      initVal: card.enter || '$next',
      tooltip: '包括文本或数值回车事件、下拉菜单选中事件、开关切换事件。',
      options: editCols
    },
    {
      type: 'radio',
      key: 'footEnter',
      label: '末行回车',
      initVal: card.footEnter || 'false',
      tooltip: '新增功能仅在表格可新增时有效。',
      options: [{
        value: 'sub',
        text: '提交'
      }, {
        value: 'add',
        text: '新增'
      }, {
        value: 'false',
        text: '无动作'
      }]
      type: 'select',
      key: 'ctrlField',
      label: '禁用字段',
      initVal: card.ctrlField || '',
      tooltip: '控制单元格是否可以编辑。',
      allowClear: true,
      required: false,
      options: fields
    },
    {
      type: 'text',
      key: 'ctrlValue',
      label: '禁用值',
      initVal: card.ctrlValue || '',
      tooltip: '多个值用逗号分隔。',
      required: false
    },
    // {
    //   type: 'radio',
    //   key: 'footEnter',
    //   label: '末行回车',
    //   initVal: card.footEnter || 'false',
    //   tooltip: '新增功能仅在表格可新增时有效。',
    //   options: [{
    //     value: 'sub',
    //     text: '提交'
    //   }, {
    //     value: 'add',
    //     text: '新增'
    //   }, {
    //     value: 'false',
    //     text: '无动作'
    //   }]
    // },
    {
      type: 'number',
      key: 'decimal',
      min: 0,
      max: 18,
      decimal: 0,
      label: Formdict['header.form.decimal'],
      precision: 0,
      label: '小数位',
      initVal: card.decimal || 0,
      required: true
      required: false
    },
    {
      type: 'number',
@@ -245,28 +438,34 @@
    {
      type: 'select',
      key: 'format',
      label: Formdict['header.form.format'],
      label: '格式化',
      initVal: card.format || 'none',
      options: [{
        value: 'none',
        text: Formdict['model.empty']
        text: '无'
      }, {
        value: 'thdSeparator',
        text: Formdict['header.form.thdSeparator']
        text: '千分位'
      }, {
        value: 'percent',
        text: '百分比'
      }, {
        value: 'abs',
        text: '绝对值'
      }],
      required: false
    },
    {
      type: 'select',
      key: 'textFormat',
      label: Formdict['header.form.format'],
      label: '格式化',
      initVal: card.textFormat || 'none',
      options: [{
        value: 'none',
        text: Formdict['model.empty']
        text: '无'
      }, {
        value: 'encryption',
        text: '加密'
      }, {
        value: 'YYYY-MM-DD',
        text: 'YYYY-MM-DD'
@@ -279,24 +478,22 @@
    {
      type: 'text',
      key: 'prefix',
      label: Formdict['header.form.prefix'],
      label: '前缀',
      initVal: card.prefix || '',
      required: false,
      readonly: false
    },
    {
      type: 'text',
      key: 'postfix',
      label: Formdict['header.form.postfix'],
      label: '后缀',
      initVal: card.postfix || '',
      required: false,
      readonly: false
    },
    {
      type: 'radio',
      key: 'eval',
      label: '解析',
      initVal: card.eval || 'true',
      initVal: card.eval || 'false',
      tooltip: '当公式内容涉及计算时请选择“是”,当公式内容为字段拼接时请选择“否”。',
      required: false,
      options: [
@@ -309,14 +506,37 @@
      key: 'formula',
      label: '公式',
      initVal: card.formula || '',
      tooltip: '执行时会使用查询到的数据替换相应的字段,展示获得的结果。可使用JS的一些语法,如:三元表达式 @field1@ > @field2@ ? 0 : 1;Math对象,取绝对值 Math.abs(@field@)、四舍五入 Math.round(@field@)等',
      tooltip: '执行时会使用查询到的数据替换相应的字段,展示获得的结果,在不使用解析时换行符或空格会替换为页面元素。可使用JS的一些语法,如:三元表达式 @field1@ > @field2@ ? 0 : 1;Math对象,取绝对值 Math.abs(@field@)、四舍五入 Math.round(@field@)等',
      placeholder: '例如:@price@ * @number@',
      required: true
    },
    {
      type: 'multiselect',
      key: 'linkSubField',
      label: '填充表单',
      tooltip: '在切换选项时会把信息自动填入关联的字段中。',
      initVal: card.linkSubField || [],
      options: fields
    },
    {
      type: 'radio',
      key: 'noValue',
      label: '空值',
      initVal: card.noValue || 'show',
      tooltip: '当值为0时是否显示',
      required: false,
      options: [{
        value: 'show',
        text: '显示'
      }, {
        value: 'hide',
        text: '隐藏'
      }]
    },
    {
      type: 'multiselect',
      key: 'blacklist',
      label: Formdict['header.form.blacklist'],
      label: '黑名单',
      initVal: card.blacklist || [],
      required: false,
      options: roleList