king
2024-06-21 2bccb9ec7bdefe23292a22bc153463cfa1479a49
src/tabviews/zshare/mutilform/index.jsx
@@ -6,7 +6,6 @@
import moment from 'moment'
import Api from '@/api'
import { formRule } from '@/utils/option.js'
import Utils from '@/utils/utils.js'
import asyncComponent from '@/utils/asyncComponent'
import MKEmitter from '@/utils/events.js'
@@ -48,7 +47,8 @@
    timestamp: '',
    n_id: '',
    focusId: '',
    reFocusId: ''
    reFocusId: '',
    dict: window.GLOB.dict
  }
  record = {}
@@ -56,6 +56,7 @@
  componentDidMount () {
    const { action, unload } = this.props
    const { dict } = this.state
    let data = {}
    let BData = {}
@@ -148,6 +149,7 @@
      item.readin = item.readin !== 'false' && item.readin !== 'top'
      item.readonly = check || item.readonly === 'true'
      item.writein = item.writein !== 'false'
      item.defHidden = item.hidden === 'true'
      item.hidden = item.hidden === 'true'
      item.fieldlength = item.fieldlength || 50
@@ -314,14 +316,14 @@
        if (item.required === 'true') {
          item.rules.push({
            required: true,
            message: item.label + '不可为空!'
            message: item.label + (dict['not_empty'] || '不可为空!')
          })
        }
        item.rules.push({
          validator: (rule, value, callback) => {
            if (/'/.test(value)) {
              callback('不可使用英文状态的单引号!')
              callback(dict['single_quot'] || '不可使用英文状态的单引号!')
            // } else if (/--/.test(value)) {
            //   callback('不可使用 -- !')
            } else {
@@ -333,7 +335,7 @@
        if (!item.lenControl || item.lenControl === 'limit') {
          item.rules.push({
            max: item.fieldlength,
            message: formRule.input.formMessage.replace('@max', item.fieldlength)
            message: (dict['max_char'] || '最多@max个字符').replace('@max', item.fieldlength)
          })
        }
@@ -345,7 +347,7 @@
            }
            item.rules.push({
              pattern: reg,
              message: item.regularText || formRule.input.numbermsg
              message: item.regularText || dict['enter_num'] || '请输入数字!'
            })
          } else if (item.regular === 'letter') {
            let reg = /^[a-zA-Z]*$/
@@ -354,7 +356,7 @@
            }
            item.rules.push({
              pattern: reg,
              message: item.regularText || formRule.input.lettermsg
              message: item.regularText || dict['enter_letter'] || '请输入字母!'
            })
          } else if (item.regular === 'letter_number') {
            let reg = /^[a-zA-Z0-9]*$/
@@ -363,7 +365,7 @@
            }
            item.rules.push({
              pattern: reg,
              message: item.regularText || '请输入数字或字母'
              message: item.regularText || dict['enter_num_letter'] || '请输入数字或字母'
            })
          } else if (item.regular === 'letter&number') {
            let reg = /^[a-zA-Z0-9@_.]*$/
@@ -372,31 +374,33 @@
            }
            item.rules.push({
              pattern: reg,
              message: item.regularText || '请输入数字、字母以及@_.'
              message: item.regularText || dict['enter_num_letter_char'] || '请输入数字、字母以及@_.'
            })
          } else if (item.regular === 'phone') {
            item.rules.push({
              pattern: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
              message: item.regularText || '请正确输入手机号'
              message: item.regularText || dict['phone_error'] || '请正确输入手机号'
            })
          } else if (item.regular === 'email') {
            item.rules.push({
              pattern: /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/,
              message: item.regularText || '请正确输入邮箱地址'
              message: item.regularText || dict['email_error'] || '请正确输入邮箱地址'
            })
          }
        }
      } else if (item.type === 'number') {
        item.rules = [{
          required: true,
          message: item.label + '不可为空!'
          message: item.label + (dict['not_empty'] || '不可为空!')
        }]
        if (typeof(item.min) === 'number' || typeof(item.max) === 'number') {
        if (typeof(item.min) === 'number' || typeof(item.max) === 'number' || item.notZero === 'true') {
          item.rules.push({
            validator: (rule, value, callback) => {
              if (isNaN(value)) {
                callback()
              } else if (item.notZero === 'true' && value === 0) {
                callback(item.label + (dict['not_zero'] || '不可为0'))
              } else if (typeof(item.min) === 'number' && value < item.min) {
                if (item.min < 1e-6) {
                  if (item.min === 1e-6) {
@@ -415,10 +419,10 @@
                    callback(item.label + '最小值为 ' + item.min)
                  }
                } else {
                  callback(item.label + '最小值为 ' + item.min)
                  callback(item.label + (dict['less_limit'] || '最小值为 ') + item.min)
                }
              } else if (typeof(item.max) === 'number' && value > item.max) {
                callback(item.label + '最大值为 ' + item.max)
                callback(item.label + (dict['max_limit'] || '最大值为 ') + item.max)
              } else {
                callback()
              }
@@ -429,14 +433,14 @@
        if (item.required === 'true') {
          item.rules.push({
            required: true,
            message: item.label + '不可为空!'
            message: item.label + (dict['not_empty'] || '不可为空!')
          })
        }
        item.rules.push({
          validator: (rule, value, callback) => {
            if (/'/.test(value)) {
              callback('不可使用英文状态的单引号!')
              callback(dict['single_quot'] || '不可使用英文状态的单引号!')
            // } else if (/--/.test(value)) {
            //   callback('不可使用 -- !')
            } else {
@@ -445,32 +449,38 @@
          }
        }, {
          max: item.fieldlength,
          message: formRule.input.formMessage.replace('@max', item.fieldlength)
          message: (dict['max_char'] || '最多@max个字符').replace('@max', item.fieldlength)
        })
      } else if (item.type === 'brafteditor') {
        if (item.required === 'true') {
          item.rules.push({
            required: true,
            message: item.label + '不可为空!'
            message: item.label + (dict['not_empty'] || '不可为空!')
          })
        }
        item.rules.push({
          max: item.fieldlength,
          message: formRule.input.formMessage.replace('@max', item.fieldlength)
          message: (dict['max_char'] || '最多@max个字符').replace('@max', item.fieldlength)
        })
      } else if (item.type === 'linkMain' || item.type === 'vercode') {
        if (item.required === 'true') {
          item.rules.push({
            required: true,
            message: item.label + '不可为空!'
            message: item.label + (dict['not_empty'] || '不可为空!')
          })
        }
      } else {
        if (item.required === 'true') {
          item.rules.push({
            required: true,
            message: '请选择' + item.label + '!'
            message: (dict['select_tip'] || '请选择') + item.label + '!'
          })
        }
        if (['cascader', 'checkbox', 'checkcard', 'fileupload', 'multiselect'].includes(item.type) && item.fieldlength) {
          item.rules.push({
            max: item.fieldlength,
            message: (dict['max_char'] || '最多@max个字符').replace('@max', item.fieldlength)
          })
        }
      }
@@ -497,7 +507,7 @@
        let _hidden = false
        if (supItem.hidden) {
        if (supItem.hidden && !supItem.defHidden) {
          _hidden = true
        } else {
          let box = [...item.values]
@@ -544,7 +554,7 @@
          item.subFields = []
          item.linkSubField.forEach(m => {
            let n = fieldMap.get(m)
            if (n && ['text', 'number', 'textarea'].includes(n.type)) {
            if (n && ['text', 'number', 'textarea', 'select'].includes(n.type)) {
              item.subFields.push({
                uuid: n.uuid,
                field: m
@@ -567,7 +577,7 @@
          item.subFields = []
          item.linkSubField.forEach(m => {
            let n = fieldMap.get(m)
            if (n && ['text', 'number', 'textarea'].includes(n.type)) {
            if (n && ['text', 'number', 'textarea', 'select'].includes(n.type)) {
              item.subFields.push({
                uuid: n.uuid,
                field: m
@@ -587,7 +597,7 @@
          item.subFields = []
          item.linkSubField.forEach(m => {
            let n = fieldMap.get(m)
            if (n && ['text', 'number', 'textarea'].includes(n.type)) {
            if (n && ['text', 'number', 'textarea', 'select'].includes(n.type)) {
              item.subFields.push({
                uuid: n.uuid,
                field: m
@@ -599,7 +609,7 @@
          item.subFields = []
          item.linkSubField.forEach(m => {
            let n = fieldMap.get(m)
            if (n && ['text', 'number', 'textarea'].includes(n.type)) {
            if (n && ['text', 'number', 'textarea', 'select'].includes(n.type)) {
              item.subFields.push({
                uuid: n.uuid,
                field: m
@@ -616,7 +626,11 @@
        item.supInitVal = ''
        if (fieldMap.has(item.linkField)) {
          item.supInitVal = fieldMap.get(item.linkField).initval || ''
          let supitem = fieldMap.get(item.linkField)
          item.supInitVal = supitem.initval || ''
          if (supitem.$first) {
            item.$resetSup = true
          }
        } else if (data.hasOwnProperty(item.linkField.toLowerCase())) {
          item.supInitVal = data[item.linkField.toLowerCase()]
        }
@@ -735,6 +749,7 @@
    if (action.subButton && action.subButton.resetForms) {
      MKEmitter.addListener('resetForms', this.resetForms)
    }
    MKEmitter.addListener('resetFocus', this.resetFocus)
  }
  componentWillUnmount () {
@@ -742,6 +757,27 @@
      return
    }
    MKEmitter.removeListener('resetForms', this.resetForms)
    MKEmitter.removeListener('resetFocus', this.resetFocus)
  }
  resetFocus = (id, field) => {
    const { action } = this.props
    if (id !== action.uuid) return
    let focusId = ''
    this.state.formlist.forEach(item => {
      if (item.field === field) {
        focusId = item.uuid
      }
    })
    if (!focusId) return
    setTimeout(() => {
      MKEmitter.emit('mkFC', 'focus', focusId)
    }, 20)
  }
  resetForms = (id, data) => {
@@ -1086,7 +1122,11 @@
        // if (item.type === 'link') {
        if (item.linkField) {
          item.options = item.oriOptions.filter(option => option.ParentID === item.supInitVal || option.value === '')
          let supInitVal = item.supInitVal
          if (item.$resetSup) {
            supInitVal = this.record[item.linkField]
          }
          item.options = item.oriOptions.filter(option => option.ParentID === supInitVal || option.value === '')
        // } else if (['select', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type)) {
        } else {
          item.options = item.oriOptions
@@ -1228,11 +1268,17 @@
      if (item.hidden) return
      if (item.type === 'split') {
        fields.push(
          <Col span={24} key={index}>
            <p className="mk-form-split-line" style={item.style}>{item.label}</p>
          </Col>
        )
        if (item.opacity === 'false') {
          fields.push(
            <div key={index}></div>
          )
        } else {
          fields.push(
            <Col span={24} key={index}>
              <p className="mk-form-split-line" style={item.style}>{item.label}</p>
            </Col>
          )
        }
      } else if (item.type === 'hint') {
        fields.push(
          <Col span={item.span || 24} key={index}>
@@ -1280,7 +1326,7 @@
        } else if (item.type === 'radio') {
          content = (<MKRadio config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>)
        } else if (item.type === 'date' || item.type === 'datemonth') {
          content = (<MKDatePicker config={item} onChange={(val) => this.recordChange({[item.field]: val})} />)
          content = (<MKDatePicker config={item} onChange={(val) => this.recordChange({[item.field]: val})} onSubmit={this.props.inputSubmit}/>)
        } else if (item.type === 'fileupload') {
          className = item.readonly ? 'readonly' : ''
          className += item.fileType === 'picture-card' ? ' file-upload' : ''