king
2022-08-06 cbeffcc0902631909c0373f274752a97ddaf2d4e
src/tabviews/zshare/mutilform/index.jsx
@@ -26,11 +26,11 @@
const MKFileUpload = asyncComponent(() => import('../fileupload'))
const MKColor = asyncComponent(() => import('./mkColor'))
const MkFormula = asyncComponent(() => import('./mkFormula'))
const MkCascader = asyncComponent(() => import('./mkCascader'))
const MKEditor = asyncComponent(() => import('@/components/editor'))
class MainSearch extends Component {
  static propTpyes = {
    menuType: PropTypes.object,  // 菜单类型,是否为HS
    action: PropTypes.object,    // 按钮信息、表单列表
    data: PropTypes.any,         // 表格数据
    BID: PropTypes.any,          // 主表ID
@@ -99,7 +99,7 @@
        item.precision = 'second'
      }
      if (!item.field || !['text', 'number', 'switch', 'rate', 'select', 'link', 'linkMain', 'funcvar', 'date', 'datemonth', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color'].includes(item.type)) return false
      if (!item.field || !['text', 'number', 'switch', 'rate', 'select', 'link', 'cascader', 'linkMain', 'funcvar', 'date', 'datemonth', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color'].includes(item.type)) return false
      if (/^\s+$/.test(item.label)) {
        item.style = item.style || {}
@@ -124,7 +124,7 @@
        item.initval = item.initval || 0
      }
      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type)) {
      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type)) {
        item.options = item.options || []
        item.options = item.options.filter(cell => {
          cell.value = cell.Value
@@ -206,7 +206,7 @@
        item.initval = ''
      }
      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type) && item.resourceType === '1') {
      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type) && item.resourceType === '1') {
        deForms.push(item)
      } else if (item.type === 'rate') {
        item.rateCount = item.rateCount || 5
@@ -236,8 +236,13 @@
          pattern: /^[^']*$/ig,
          message: '不可使用英文状态的单引号!'
        }, {
          pattern: /^[^--]*$/ig,
          message: '不可使用 -- !'
          validator: (rule, value, callback) => {
            if (/--/ig.test(value)) {
              callback('不可使用 -- !')
            } else {
              callback()
            }
          }
        }, {
          required: item.required === 'true',
          message: item.label + '不可为空!'
@@ -301,17 +306,20 @@
          {
            max: item.fieldlength,
            message: formRule.input.formMessage.replace('@max', item.fieldlength)
          }
        ]
        if (item.encryption !== 'true') {
          _rules.push({
          },
          {
            pattern: /^[^']*$/ig,
            message: '不可使用英文状态的单引号!'
          }, {
            pattern: /^[^--]*$/ig,
            message: '不可使用 -- !'
          })
        }
            validator: (rule, value, callback) => {
              if (/--/ig.test(value)) {
                callback('不可使用 -- !')
              } else {
                callback()
              }
            }
          }
        ]
        item.rules = _rules
      } else if (item.type === 'brafteditor') {
        item.rules = [
@@ -382,7 +390,7 @@
      let item = fieldMap.get(cell.field)
      // 下级表单控制-字段写入
      if ((['select', 'radio', 'link'].includes(item.type) || (item.type === 'checkcard' && item.multiple !== 'true')) && item.linkSubField) {
      if ((['select', 'radio', 'link'].includes(item.type) || (item.type === 'checkcard' && item.multiple !== 'true') || (item.type === 'cascader' && item.resourceType !== '2')) && item.linkSubField) {
        item.subFields = []
        item.linkSubField.forEach(m => {
          let n = fieldMap.get(m)
@@ -422,7 +430,7 @@
        item.options = item.oriOptions.filter(option => option.ParentID === item.supInitVal || option.value === '')
      }
      if (['select', 'link', 'radio'].includes(item.type) && item.resourceType !== '1') { // 选中第一项
      if (['select', 'link', 'radio'].includes(item.type) && item.resourceType === '0') { // 选中第一项
        if (typeof(item.initval) === 'string' && item.initval.indexOf('$first') > -1) {
          item.initval = item.options[0] ? item.options[0].value : ''
        }
@@ -449,8 +457,12 @@
      }
      if (item.subFields && item.options.length > 0) {
        let initval = item.initval
        if (item.type === 'cascader' && item.separator) {
          initval = initval.split(item.separator).pop()
        }
        // eslint-disable-next-line
        let option = item.options.filter(cell => item.initval == cell.value)[0]
        let option = item.options.filter(cell => initval == cell.value)[0]
        if (option) {
          reFieldsVal = reFieldsVal || {}
@@ -484,7 +496,7 @@
      }
      if (deForms.length > 0) {
        if (this.props.menuType !== 'HS' && options.sysType === 'local' && window.GLOB.systemType !== 'production') {
        if (!window.GLOB.mkHS && options.sysType === 'local' && window.GLOB.systemType !== 'production') {
          this.improveSimpleActionForm(deForms)
        } else {
          this.improveActionForm(deForms)
@@ -497,7 +509,7 @@
   * @description 获取下拉表单选项信息
   */
  improveActionForm = (deForms) => {
    const { BID, menuType, action } = this.props
    const { BID, action } = this.props
    let deffers = []
    let mainItems = []  // 云端或单点数据
@@ -512,7 +524,7 @@
      }
    })
    
    if (menuType !== 'HS' && options.sysType !== 'local') {
    if (!window.GLOB.mkHS && options.sysType !== 'local') {
      localItems = [...localItems, ...mainItems]
      mainItems = []
    }
@@ -532,7 +544,7 @@
      param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
      param.secretkey = Utils.encrypt(param.LText, param.timestamp)
      if (menuType === 'HS') { // 云端数据验证
      if (window.GLOB.mkHS) { // 云端数据验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
@@ -567,7 +579,7 @@
      mainparam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
      mainparam.secretkey = Utils.encrypt(mainparam.LText, mainparam.timestamp)
      if (menuType === 'HS') { // 云端数据验证
      if (window.GLOB.mkHS) { // 云端数据验证
        mainparam.open_key = Utils.encryptOpenKey(mainparam.secretkey, mainparam.timestamp)
        if (options.cloudServiceApi) {
          mainparam.rduri = options.cloudServiceApi
@@ -660,7 +672,7 @@
  resetFormList = (result) => {
    let reFieldsVal = null
    let _formlist = fromJS(this.state.formlist).toJS().map(item => {
      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type) && result[item.field] && result[item.field].length > 0) {
      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type) && result[item.field] && result[item.field].length > 0) {
        let options = []
        result[item.field].forEach(cell => {
          let _cell = { key: Utils.getuuid() }
@@ -706,8 +718,12 @@
        }
        if (item.subFields && item.options.length > 0) {
          let initval = item.initval
          if (item.type === 'cascader' && item.separator) {
            initval = initval.split(item.separator).pop()
          }
          // eslint-disable-next-line
          let option = item.options.filter(cell => item.initval == cell.value)[0]
          let option = item.options.filter(cell => initval == cell.value)[0]
  
          if (option) {
            reFieldsVal = reFieldsVal || {}
@@ -749,9 +765,12 @@
        callback(item.label + '最小值为 ' + item.min)
      } else if (typeof(item.max) === 'number' && val > item.max) {
        callback(item.label + '最大值为 ' + item.max)
      } else {
        callback()
      }
    } else {
      callback()
    }
    callback()
  }
  recordChange = (values, item) => {
@@ -840,6 +859,8 @@
          content = (<MKNumberInput config={item} onChange={(val, defer) => !defer && this.recordChange({[item.field]: val})} onSubmit={this.props.inputSubmit} />)
        } else if (item.type === 'select' || item.type === 'link' || item.type === 'multiselect') {
          content = (<MKSelect config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)} onSubmit={this.props.inputSubmit} />)
        } else if (item.type === 'cascader') {
          content = (<MkCascader config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>)
        } else if (item.type === 'color') {
          content = (<MKColor config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>)
        } else if (item.type === 'checkcard') {