king
2021-11-17 c51f5e007a3e03c9d6731ab7f28f0080de009990
src/templates/zshare/formconfig.jsx
@@ -288,14 +288,80 @@
 */
export function getSearchForm (card, linkableFields) {
  let roleList = sessionStorage.getItem('sysRoles')
  let appType = sessionStorage.getItem('appType')
  if (roleList) {
    try {
      roleList = JSON.parse(roleList)
    } catch {
    } catch (e) {
      roleList = []
    }
  } else {
    roleList = []
  }
  let typeOptions = []
  if (appType === 'mob') {
    typeOptions = [{
      value: 'range',
      text: '数值(区间)'
    }, {
      value: 'checkcard',
      text: '选项卡'
    }, {
      value: 'date',
      text: Formdict['model.form.dateday']
    }, {
      value: 'datemonth',
      text: Formdict['model.form.datemonth']
    // }, {
    //   value: 'daterange',
    //   text: Formdict['model.form.daterange']
    }]
  } else {
    typeOptions = [{
      value: 'text',
      text: Formdict['model.form.text']
    }, {
      value: 'select',
      text: Formdict['model.form.select']
    }, {
      value: 'multiselect',
      text: Formdict['model.form.multiselect']
    }, {
      value: 'link',
      text: Formdict['model.form.link']
    }, {
      value: 'checkcard',
      text: '选项卡'
    }, {
      value: 'date',
      text: Formdict['model.form.dateday']
    }, {
      value: 'dateweek',
      text: Formdict['model.form.dateweek']
    }, {
      value: 'datemonth',
      text: Formdict['model.form.datemonth']
    }, {
      value: 'daterange',
      text: Formdict['model.form.daterange']
    }, {
      value: 'group',
      text: Formdict['model.form.dategroup']
    }]
  }
  if (card.focus) {
    if (['text', 'multiselect'].includes(card.type)) {
      card.match = 'like'
    } else if (['select', 'link', 'checkcard'].includes(card.type)) {
      card.match = '='
    } else if (card.type === 'date') {
      card.match = '>='
    } else if (['datemonth', 'dateweek', 'daterange', 'range'].includes(card.type)) {
      card.match = 'between'
    }
  }
  return [
@@ -322,34 +388,7 @@
      label: Formdict['model.form.type'],
      initVal: card.type,
      required: true,
      options: [{
        value: 'text',
        text: Formdict['model.form.text']
      }, {
        value: 'select',
        text: Formdict['model.form.select']
      }, {
        value: 'multiselect',
        text: Formdict['model.form.multiselect']
      }, {
        value: 'link',
        text: Formdict['model.form.link']
      }, {
        value: 'date',
        text: Formdict['model.form.dateday']
      }, {
        value: 'dateweek',
        text: Formdict['model.form.dateweek']
      }, {
        value: 'datemonth',
        text: Formdict['model.form.datemonth']
      }, {
        value: 'daterange',
        text: Formdict['model.form.daterange']
      }, {
        value: 'group',
        text: Formdict['model.form.dategroup']
      }]
      options: typeOptions
    },
    {
      type: 'text',
@@ -363,7 +402,7 @@
      type: 'text',
      key: 'initval',
      label: Formdict['header.form.initval'],
      tooltip: '类型为下拉菜单时,初始值应为数据的Value值(使用数据源时,应为《值·字段》的值)',
      tooltip: '类型为下拉菜单时,初始值应为数据的Value值(使用数据源时,应为《值·字段》的值);类型为数值(区间)时,初始值使用逗号拼接,例如 3,10',
      initVal: card.initval,
      required: false
    },
@@ -395,6 +434,75 @@
      }]
    },
    {
      type: 'radio',
      key: 'display',
      label: '显示',
      initVal: card.display || 'text',
      required: true,
      options: [{
        value: 'text',
        text: '文本'
      }, {
        value: 'picture',
        text: '图片'
      }]
    },
    {
      type: 'number',
      key: 'width',
      min: 1,
      max: 24,
      precision: 0,
      label: '元素宽度',
      initVal: card.width || 4,
      tooltip: '栅格布局,每行等分为24列。',
      required: true
    },
    {
      type: 'text',
      key: 'cardValField',
      label: Formdict['header.form.valueField'],
      initVal: card.cardValField || 'Value',
      required: true,
      readonly: false
    },
    {
      type: 'text',
      key: 'urlField',
      label: '地址字段',
      initVal: card.urlField || '',
      required: true,
      readonly: false
    },
    {
      type: 'radio',
      key: 'picratio',
      label: '图片比例',
      initVal: card.picratio || '1:1',
      required: true,
      options: [{
        value: '1:1',
        text: '1:1'
      }, {
        value: '3:2',
        text: '3:2'
      }, {
        value: '4:3',
        text: '4:3'
      }, {
        value: '16:9',
        text: '16:9'
      }]
    },
    {
      type: 'fields',
      key: 'fields',
      label: '字段集',
      initVal: card.fields || [],
      required: true,
      readonly: false
    },
    {
      type: 'textarea',
      key: 'dataSource',
      label: Formdict['header.form.datasource'],
@@ -405,7 +513,7 @@
    {
      type: 'options',
      key: 'options',
      label: '',
      label: '选项',
      initVal: card.options || [],
      required: true,
      readonly: false
@@ -526,8 +634,23 @@
      max: 24,
      label: Formdict['header.form.ratio'],
      tooltip: '栅格布局,每行等分为24列。',
      initVal: card.ratio,
      initVal: card.ratio || 6,
      forbid: appType === 'mob',
      required: false
    },
    {
      type: 'radio',
      key: 'multiple',
      label: '可多选',
      initVal: card.multiple || 'false',
      required: true,
      options: [{
        value: 'true',
        text: '是'
      }, {
        value: 'false',
        text: '否'
      }]
    },
    {
      type: 'radio',
@@ -557,29 +680,68 @@
    },
    {
      type: 'radio',
      key: 'transfer',
      label: '传递',
      initVal: card.transfer || 'false',
      tooltip: '数据查询时,类型字段是否作为参数传递,类型字段对应值为 {"日": "day", "周": "week", "月": "month", "季": "quarter", "年": "year", "自定义": "customized"}。',
      key: 'query',
      label: '参与查询',
      initVal: card.query || 'true',
      tooltip: '是否作为 where 条件,参与数据查询。',
      options: [{
        value: 'true',
        text: Formdict['model.true']
        text: '是'
      }, {
        value: 'false',
        text: Formdict['model.false']
        text: '否'
      }]
    },
    // {
    //   type: 'radio',
    //   key: 'transfer',
    //   label: '传递',
    //   initVal: card.transfer || 'false',
    //   tooltip: '数据查询时,类型字段是否作为参数传递,类型字段对应值为 {"日": "day", "周": "week", "月": "month", "季": "quarter", "年": "year", "自定义": "customized"}。',
    //   options: [{
    //     value: 'true',
    //     text: Formdict['model.true']
    //   }, {
    //     value: 'false',
    //     text: Formdict['model.false']
    //   }]
    // },
    {
      type: 'number',
      key: 'maxValue',
      label: '最大值',
      initVal: card.maxValue,
      forbid: appType !== 'mob',
      required: true
    },
    {
      type: 'number',
      key: 'minValue',
      label: '最小值',
      initVal: card.minValue,
      forbid: appType !== 'mob',
      required: true
    },
    {
      type: 'number',
      key: 'step',
      label: '步长',
      initVal: card.step,
      tooltip: '步长取值必须大于 0,并且可被 (max - min) 整除',
      forbid: appType !== 'mob',
      required: true
    },
    {
      type: 'radio',
      key: 'labelShow',
      label: '显示名称',
      label: '名称',
      initVal: card.labelShow || 'true',
      options: [{
        value: 'true',
        text: Formdict['model.true']
        text: '显示'
      }, {
        value: 'false',
        text: Formdict['model.false']
        text: '隐藏'
      }]
    },
    {
@@ -587,6 +749,7 @@
      key: 'advanced',
      label: '高级搜索',
      initVal: card.advanced || 'false',
      forbid: appType === 'mob',
      options: [{
        value: 'true',
        text: Formdict['model.true']
@@ -594,6 +757,50 @@
        value: 'false',
        text: Formdict['model.false']
      }]
    },
    {
      type: 'radio',
      key: 'dropdown',
      label: '下拉框',
      initVal: card.dropdown || 'true',
      forbid: appType === 'mob',
      options: [{
        value: 'true',
        text: '定宽'
      }, {
        value: 'false',
        text: '自适应'
      }]
    },
    {
      type: 'radio',
      key: 'inputType',
      label: '输入样式',
      initVal: card.inputType || 'input',
      tooltip: '使用高级搜索时无效。',
      required: false,
      options: [{
        value: 'input',
        text: '输入框'
      }, {
        value: 'search',
        text: '搜索框'
      }]
    },
    {
      type: 'color',
      key: 'backgroundColor',
      label: '背景色',
      initVal: card.backgroundColor || '',
      tooltip: '设置背景色后,选中效果由背景颜色控制。',
      required: false
    },
    {
      type: 'color',
      key: 'borderColor',
      label: '边框颜色',
      initVal: card.borderColor || '',
      required: false
    },
    {
      type: 'multiselect',
@@ -609,12 +816,13 @@
/**
 * @description 获取按钮表单配置信息
 * @param {*} card           编辑按钮
 * @param {*} functip        生成存储过程提示
 * @param {*} config         页面配置
 * @param {*} usefulFields   存储过程可用的开始字段
 * @param {*} type           按钮类型,用于区分可选的打开方式
 */
export function getActionForm (card, functip, config, usefulFields, type, menulist = [], printTemps = []) {
export function getActionForm (card, config, usefulFields, type, menulist = [], printTemps = []) {
  let columns = (config.columns || []).filter(col => col.field)
  let opentypes = [
    {
      value: 'pop',
@@ -646,19 +854,10 @@
    }
  ]
  // 标签类型,主表才会存在表单标签页
  let tabTems = [{
    value: 'FormTab',
    text: '表单标签页'
  }]
  if (type === 'subtable') {
    tabTems = []
  }
  if (card.execSuccess === 'view' || card.execSuccess === 'refresh') { // refresh为表单标签页
    card.execSuccess = 'grid'
  }
  if (card.execError === 'view' || card.execSuccess === 'refresh') {
  if (card.execError === 'view' || card.execError === 'refresh') {
    card.execError = 'grid'
  }
  if (card.popClose === 'view') {
@@ -680,6 +879,13 @@
    })
  }
  if (card.OpenType === 'blank') {
    card.OpenType = 'tab'
  }
  if (!card.control && card.controlField) {
    card.control = 'disabled'
  }
  return [
    {
      type: 'select',
@@ -690,7 +896,7 @@
      options: opentypes
    },
    {
      type: 'radio',
      type: 'select',
      key: 'funcType',
      label: Formdict['header.form.funcType'],
      initVal: card.funcType || '',
@@ -701,6 +907,9 @@
      }, {
        value: 'print',
        text: '标签打印'
      }, {
        value: 'closetab',
        text: '标签关闭'
      }]
    },
    {
@@ -770,23 +979,12 @@
      key: 'innerFunc',
      label: Formdict['header.form.innerFunc'],
      initVal: card.innerFunc || '',
      tooltip: functip,
      tooltip: `函数名称需以${usefulFields.join(', ')}等字符开始。`,
      fields: usefulFields,
      tooltipClass: 'middle',
      required: card.intertype === 'inner',
      readonly: false
    },
    // {
    //   type: 'select',
    //   key: 'tabType',
    //   label: Formdict['model.form.tabType'],
    //   initVal: card.tabType || 'SubTable',
    //   required: true,
    //   options: [{
    //     value: 'SubTable',
    //     text: Formdict['model.menu.tab.subtable']
    //   }]
    // },
    {
      type: 'select',
      key: 'linkTab',
@@ -953,20 +1151,6 @@
      options: []
    },
    {
      type: 'select',
      key: 'tabTemplate',
      label: '标签类型',
      initVal: card.tabTemplate || '',
      required: true,
      options: [
        {
          value: 'ThdMenu',
          text: Formdict['model.menu.level3']
        },
        ...tabTems
      ]
    },
    {
      type: 'cascader',
      key: 'linkmenu',
      label: Formdict['model.form.linkmenu'],
@@ -975,45 +1159,29 @@
      options: menulist
    },
    {
      type: 'radio',
      key: 'afterExecSuccess',
      label: Formdict['header.form.afterExecSuccess'],
      initVal: card.afterExecSuccess || 'close',
      required: true,
      options: [{
        value: 'close',
        text: Formdict['model.close']
      }, {
        value: 'notclose',
        text: Formdict['model.notclose']
      }]
    },
    {
      type: 'radio',
      key: 'afterExecError',
      label: Formdict['header.form.afterExecError'],
      initVal: card.afterExecError || 'notclose',
      required: true,
      options: [{
        value: 'close',
        text: Formdict['model.close']
      }, {
        value: 'notclose',
        text: Formdict['model.notclose']
      }]
      type: 'cascader',
      key: 'refreshTab',
      label: '刷新标签',
      initVal: card.refreshTab || [],
      required: false,
      options: menulist
    },
    {
      type: refresh.length === 0 ? 'radio' : 'select',
      key: 'execSuccess',
      label: Formdict['model.form.afterSuccess'],
      initVal: card.execSuccess || 'never',
      tooltip: '选择刷新行时,如果选择多条数据会刷新表格。',
      required: true,
      options: [{
        value: 'never',
        text: Formdict['header.form.refresh.never']
        text: '不刷新'
      }, {
        value: 'grid',
        text: Formdict['header.form.refresh.grid']
        text: '刷新表格'
      }, {
        value: 'line',
        text: '刷新行'
      },
      ...refresh]
    },
@@ -1022,13 +1190,17 @@
      key: 'execError',
      label: Formdict['model.form.afterError'],
      initVal: card.execError || 'never',
      tooltip: '选择刷新行时,如果选择多条数据会刷新表格。',
      required: true,
      options: [{
        value: 'never',
        text: Formdict['header.form.refresh.never']
        text: '不刷新'
      }, {
        value: 'grid',
        text: Formdict['header.form.refresh.grid']
        text: '刷新表格'
      }, {
        value: 'line',
        text: '刷新行'
      },
      ...refresh]
    },
@@ -1040,10 +1212,10 @@
      required: true,
      options: [{
        value: 'never',
        text: Formdict['header.form.refresh.never']
        text: '不刷新'
      }, {
        value: 'grid',
        text: Formdict['header.form.refresh.grid']
        text: '刷新表格'
      },
      ...refresh]
    },
@@ -1076,6 +1248,23 @@
      initVal: card.class,
      required: false,
      options: []
    },
    {
      type: 'cascader',
      key: 'openmenu',
      label: '打开菜单',
      initVal: card.openmenu || [],
      tooltip: '执行成功后需要打开的菜单。',
      required: false,
      options: menulist
    },
    {
      type: 'text',
      key: 'output',
      label: '返回值',
      tooltip: '执行成功后的返回值。',
      initVal: card.output || '',
      required: false
    },
    {
      type: 'radio',
@@ -1125,7 +1314,98 @@
        value: 'false',
        text: '非必填'
      }]
    }
    },
    {
      type: 'radio',
      key: 'display',
      label: '显示方式',
      initVal: card.display || 'modal',
      required: true,
      options: [{
        value: 'modal',
        text: '模态框'
      }, {
        value: 'drawer',
        text: '抽屉'
      }]
    },
    {
      type: 'number',
      key: 'ratio',
      min: 1,
      max: 24,
      precision: 0,
      label: '比例',
      initVal: card.ratio || 85,
      tooltip: '小于100为宽度(或高度)百分比,大于100为像素值。',
      required: true
    },
    {
      type: 'radio',
      key: 'placement',
      label: '抽屉方向',
      initVal: card.placement || 'right',
      tooltip: '使用抽屉时有效。',
      required: false,
      options: [{
        value: 'right',
        text: '右侧'
      }, {
        value: 'left',
        text: '左侧'
      }, {
        value: 'top',
        text: '上侧'
      }, {
        value: 'bottom',
        text: '下侧'
      }]
    },
    {
      type: 'text',
      key: 'preFunc',
      label: '前置函数',
      initVal: card.preFunc || '',
      tooltip: `函数名称需以${usefulFields.join(', ')}等字符开始;前置函数执行完成后,结果会传入内部函数中,此时内部函数会异步执行;当前置函数返回中ErrCode等于-1时,将不再执行内部函数。`,
      fields: usefulFields,
      tooltipClass: 'middle',
      required: false,
      readonly: false
    },
    {
      type: 'radio',
      key: 'control',
      label: '按钮控制',
      initVal: card.control || '',
      required: false,
      options: [{
        value: '',
        text: '无'
      }, {
        value: 'disabled',
        text: '禁用'
      }, {
        value: 'hidden',
        text: '隐藏'
      }]
    },
    {
      type: 'select',
      key: 'controlField',
      label: '控制字段',
      tooltip: '控制字段,可根据数据控制按钮的隐藏或禁用。',
      initVal: card.controlField || '',
      required: true,
      options: columns
    },
    {
      type: 'text',
      key: 'controlVal',
      label: '控制值',
      tooltip: '当选择控制字段,且字段值与控制值相等时,按钮会隐藏或禁用,多个值用逗号分隔。',
      initVal: card.controlVal || '',
      required: false
    },
  ]
}
@@ -1139,7 +1419,7 @@
  if (roleList) {
    try {
      roleList = JSON.parse(roleList)
    } catch {
    } catch (e) {
      roleList = []
    }
  } else {
@@ -1458,7 +1738,7 @@
  if (roleList) {
    try {
      roleList = JSON.parse(roleList)
    } catch {
    } catch (e) {
      roleList = []
    }
  } else {
@@ -1905,9 +2185,8 @@
 * @param {*} tabfields       // 可切换表单
 * @param {*} linkableFields  // 可关联表单
 * @param {*} linksupFields   // 上级表单
 * @param {*} subtable        // 是否为子表表单
 */
export function getModalForm (card, inputfields = [], tabfields = [], linkableFields, linksupFields, subtable = false) {
export function getModalForm (card, inputfields = [], tabfields = [], linkableFields, linksupFields) {
  let appType = sessionStorage.getItem('appType')
  let roleList = sessionStorage.getItem('sysRoles')
  if (roleList) {
@@ -1920,7 +2199,7 @@
          label: role.text
        }
      })
    } catch {
    } catch (e) {
      roleList = []
    }
  } else {
@@ -1984,6 +2263,9 @@
  }, {
    value: 'split',
    text: '分隔线'
  }, {
    value: 'linkMain',
    text: Formdict['header.form.linkMain']
  }]
  let _fieldlength = 50
@@ -2038,11 +2320,6 @@
      value: 'split',
      text: '分隔线'
    }]
  } else if (subtable) {
    _openType.push({
      value: 'linkMain',
      text: Formdict['header.form.linkMain']
    })
  }
  if (['fileupload', 'multiselect', 'checkbox'].includes(card.type)) {
@@ -2156,7 +2433,7 @@
      min: 1,
      max: 24,
      precision: 0,
      label: '卡片宽度',
      label: '元素宽度',
      initVal: card.width || 4,
      tooltip: '栅格布局,每行等分为24列。',
      required: true
@@ -2281,6 +2558,15 @@
      }]
    },
    {
      type: 'text',
      key: 'disableField',
      label: '禁用·字段',
      initVal: card.disableField || '',
      tooltip: '设置禁用字段,且字段值为true时,选项不可选。',
      required: false,
      readonly: false
    },
    {
      type: 'radio',
      key: 'multiple',
      label: '可多选',
@@ -2319,6 +2605,70 @@
      required: false
    },
    {
      type: 'select',
      key: 'minDate',
      label: '最小值',
      initVal: card.minDate || '',
      required: false,
      options: [{
        value: '',
        text: '无'
      }, {
        value: '0',
        text: '当天'
      }, {
        value: '-1',
        text: '前一天'
      }, {
        value: '-2',
        text: '前两天'
      }, {
        value: '-3',
        text: '前三天'
      }, {
        value: '-7',
        text: '前七天'
      }, {
        value: '-30',
        text: '前30天'
      }, {
        value: '-90',
        text: '前90天'
      }]
    },
    {
      type: 'select',
      key: 'maxDate',
      label: '最大值',
      initVal: card.maxDate || '',
      required: false,
      options: [{
        value: '',
        text: '无'
      }, {
        value: '0',
        text: '当天'
      }, {
        value: '1',
        text: '后一天'
      }, {
        value: '2',
        text: '后两天'
      }, {
        value: '3',
        text: '后三天'
      }, {
        value: '7',
        text: '后七天'
      }, {
        value: '30',
        text: '后30天'
      }, {
        value: '90',
        text: '后90天'
      }]
    },
    {
      type: 'number',
      key: 'fieldlength',
      min: 1,
@@ -2332,11 +2682,12 @@
    {
      type: 'number',
      key: 'maxRows',
      min: 2,
      min: 1,
      max: 100,
      precision: 0,
      label: Formdict['header.form.maxRows'],
      initVal: card.maxRows || 6,
      label: appType === 'mob' ? '行数' : Formdict['header.form.maxRows'],
      tooltip: appType === 'mob' ? '行数为空时,高度自适应' : '',
      initVal: card.maxRows || (appType === 'mob' ? '' : 6),
      required: false
    },
    {
@@ -2356,6 +2707,9 @@
      }, {
        value: 'letter&number',
        text: Formdict['header.form.letter&number']
      }, {
        value: 'phone',
        text: '手机号'
      }]
    },
    {
@@ -2364,38 +2718,29 @@
      label: '显示方式',
      initVal: card.fileType || 'text',
      options: [{
        value: 'picture',
        text: '图文信息'
      }, {
        value: 'picture-card',
        text: '图片卡'
      }, {
        value: 'text',
        text: '文件'
      }]
      },
      {
        value: 'picture',
        text: '图文信息'
      },
      {
        value: 'picture-card',
        text: '图片卡'
      }],
      forbid: appType === 'mob'
    },
    {
      type: 'number',
      key: 'maxfile',
      min: 1,
      max: 1000000,
      min: 0,
      max: 1000,
      precision: 0,
      label: '最大文件数',
      initVal: card.maxfile || '',
      tooltip: '等于0时不做限制。',
      required: false
    },
    {
      type: 'radio',
      key: 'hidelabel',
      label: '隐藏名称',
      initVal: card.hidelabel || 'false',
      options: [{
        value: 'true',
        text: Formdict['model.true']
      }, {
        value: 'false',
        text: Formdict['model.false']
      }]
    },
    {
      type: 'radio',
@@ -2455,11 +2800,11 @@
      label: '光标',
      initVal: card.cursor || 'left',
      options: [{
        value: 'right',
        text: '右对齐'
      }, {
        value: 'left',
        text: '左对齐'
      }, {
        value: 'right',
        text: '右对齐'
      }],
      forbid: appType !== 'mob'
    },
@@ -2469,11 +2814,14 @@
      label: '扫码',
      initVal: card.scan || 'false',
      options: [{
        value: 'true',
        text: '启用'
      }, {
        value: 'false',
        text: '不启用'
        text: '禁用'
      }, {
        value: 'simple',
        text: '单次'
      }, {
        value: 'multi',
        text: '连续'
      }],
      forbid: appType !== 'mob'
    },
@@ -2481,7 +2829,7 @@
      type: 'radio',
      key: 'readin',
      label: Formdict['header.form.readin'],
      tooltip: Formdict['header.form.readin.tooltip'],
      tooltip: '是否将表格选中的数据自动填充到表单(字段相同)',
      initVal: card.readin || 'true',
      options: [{
        value: 'true',
@@ -2489,6 +2837,9 @@
      }, {
        value: 'false',
        text: Formdict['model.false']
      }, {
        value: 'top',
        text: '首行'
      }]
    },
    {
@@ -2507,6 +2858,62 @@
    },
    {
      type: 'radio',
      key: 'dropdown',
      label: '下拉框',
      initVal: card.dropdown || 'true',
      forbid: appType === 'mob',
      options: [{
        value: 'true',
        text: '定宽'
      }, {
        value: 'false',
        text: '自适应'
      }]
    },
    {
      type: 'radio',
      key: 'hidelabel',
      label: '隐藏名称',
      initVal: card.hidelabel || 'false',
      options: [{
        value: 'true',
        text: Formdict['model.true']
      }, {
        value: 'false',
        text: Formdict['model.false']
      }]
    },
    {
      type: 'radio',
      key: 'arrange',
      label: '元素排列',
      initVal: card.arrange || 'adaptive',
      forbid: appType !== 'mob',
      options: [{
        value: 'line',
        text: '整行'
      }, {
        value: 'adaptive',
        text: '自适应'
      }]
    },
    {
      type: 'color',
      key: 'backgroundColor',
      label: '背景色',
      initVal: card.backgroundColor || '',
      tooltip: '设置背景色后,选中效果由背景颜色控制。',
      required: false
    },
    {
      type: 'color',
      key: 'borderColor',
      label: '边框颜色',
      initVal: card.borderColor || '',
      required: false
    },
    {
      type: 'radio',
      key: 'declareType',
      label: '数据类型',
      tooltip: '声明变量时的类型,时间格式datetime或文本格式nvarchar(50)。',
@@ -2519,6 +2926,20 @@
        text: 'nvarchar(50)'
      }]
    },
    // {
    //   type: 'radio',
    //   key: 'mode',
    //   label: '模式',
    //   initVal: card.mode || 'picker',
    //   options: [{
    //     value: 'picker',
    //     text: '选择器'
    //   }, {
    //     value: 'calendar',
    //     text: '日历'
    //   }],
    //   forbid: appType !== 'mob'
    // },
    {
      type: 'number',
      key: 'span',
@@ -2542,6 +2963,51 @@
      tooltip: '名称占据表单宽度的百分比。注:存在多列表单时,当前表单如果想要占据整行可参照以下比例,两列(16.2)、三列(10.5)、四列(7.7)',
      required: true,
      forbid: appType === 'mob'
    },
    {
      type: 'radio',
      key: 'compress',
      label: '压缩',
      initVal: card.compress || 'false',
      tooltip: '文件压缩必须为图片,图片格式为jpg、png、gif 或 jpeg',
      options: [{
        value: 'true',
        text: Formdict['model.true']
      }, {
        value: 'false',
        text: Formdict['model.false']
      }]
    },
    {
      type: 'number',
      key: 'limit',
      min: 0.01,
      max: 1000,
      precision: 2,
      label: '起点(M)',
      initVal: card.limit || 2,
      tooltip: '压缩起点,小于起点值的文件不进行压缩。',
      required: true
    },
    {
      type: 'textarea',
      key: 'rduri',
      label: '转存接口',
      rows: 1,
      initVal: card.rduri || '',
      tooltip: '图片转存在同一单点服务器下的其他业务系统。',
      required: false,
      readonly: false
    },
    {
      type: 'textarea',
      key: 'proRduri',
      label: '正式接口',
      rows: 1,
      initVal: card.proRduri || '',
      tooltip: '正式系统转存接口,图片转存在同一单点服务器下的其他业务系统。',
      required: false,
      readonly: false
    },
    {
      type: 'text',
@@ -2580,6 +3046,50 @@
      }]
    },
    {
      type: 'radio',
      key: 'splitline',
      label: '分割线',
      initVal: card.splitline || 'true',
      forbid: appType !== 'mob',
      options: [{
        value: 'true',
        text: '显示'
      }, {
        value: 'false',
        text: '隐藏'
      }]
    },
    {
      type: 'radio',
      key: 'place',
      label: '排列',
      initVal: card.place || 'left_right',
      tooltip: '提示文字与输入框的位置关系。',
      forbid: appType !== 'mob',
      options: [{
        value: 'left_right',
        text: '左右'
      }, {
        value: 'up_down',
        text: '上下'
      }]
    },
    {
      type: 'radio',
      key: 'count',
      label: '计数功能',
      initVal: card.count || 'false',
      tooltip: '显示输入的字符数,设置行数时生效,注:加密传输时最大值与字段长度不等。',
      options: [{
        value: 'true',
        text: '开启'
      }, {
        value: 'false',
        text: '关闭'
      }],
      forbid: appType !== 'mob'
    },
    {
      type: 'select',
      key: 'supField',
      label: '上级表单',
@@ -2593,7 +3103,7 @@
      type: 'text',
      key: 'supvalue',
      label: '显示值',
      tooltip: '请填写显示值,只有上级表单值与显示值相同时,该表单才会显示,注:多个值用逗号分隔。',
      tooltip: '请填写显示值,只有上级表单值与显示值相同时,该表单才会显示,注:1、多个值用逗号分隔;2、上级表单初始值为$first时暂未处理。',
      initVal: card.supvalue || '',
      required: true,
      readonly: false
@@ -2615,6 +3125,14 @@
      initVal: card.extra || '',
      required: false,
      forbid: appType === 'mob'
    },
    {
      type: 'text',
      key: 'placeholder',
      label: '提示信息',
      tooltip: '字段预期值的提示信息。',
      initVal: card.placeholder || '',
      required: false
    },
    {
      type: 'text',
@@ -2658,6 +3176,28 @@
      options: inputfields
    },
    {
      type: 'number',
      key: 'marginTop',
      label: '上边距(px)',
      initVal: card.marginTop || 0,
      min: 0,
      max: 1000,
      precision: 0,
      required: false,
      forbid: appType !== 'mob'
    },
    {
      type: 'number',
      key: 'marginBottom',
      label: '下边距(px)',
      initVal: card.marginBottom || 0,
      min: 0,
      max: 1000,
      precision: 0,
      required: false,
      forbid: appType !== 'mob'
    },
    {
      type: 'multiselect',
      key: 'blacklist',
      label: Formdict['header.form.blacklist'],
@@ -2686,17 +3226,6 @@
      initVal: card.label || '',
      required: true
    },
    // {
    //   type: 'select',
    //   key: 'type',
    //   label: Formdict['model.form.tabType'],
    //   initVal: card.type || 'SubTable',
    //   required: true,
    //   options: [{
    //     value: 'SubTable',
    //     text: Formdict['model.menu.tab.subtable']
    //   }]
    // },
    {
      type: 'select',
      key: 'linkTab',