king
2024-09-10 4d6b9f8a2d7b316633e43b489eae9ada949c07b5
src/tabviews/zshare/mutilform/index.jsx
@@ -69,11 +69,18 @@
    let fieldMap = new Map()
    let check = action.setting.formType === 'check'
    if (this.props.data) {
    if (this.props.data && !this.props.data.$$empty) {
      Object.keys(this.props.data).forEach(key => {
        data[key.toLowerCase()] = this.props.data[key]
      })
    } else if (action.uuid && sessionStorage.getItem('local_' + action.uuid)) {
      let _data = JSON.parse(sessionStorage.getItem('local_' + action.uuid))
      Object.keys(_data).forEach(key => {
        data[key.toLowerCase()] = _data[key]
      })
    }
    if (this.props.BData) {
      Object.keys(this.props.BData).forEach(key => {
        BData[key.toLowerCase()] = this.props.BData[key]
@@ -146,6 +153,7 @@
      // 数据自动填充
      let readin = item.readin !== 'false'
      item.local = item.readin === 'local'
      item.readin = item.readin !== 'false' && item.readin !== 'top'
      item.readonly = check || item.readonly === 'true'
      item.writein = item.writein !== 'false'
@@ -154,6 +162,17 @@
      item.fieldlength = item.fieldlength || 50
      let key = item.field.toLowerCase()
      // positecgroup 表单隐藏
      if (item.tooltip && /@[a-z0-9_]+@/.test(item.tooltip)) {
        let field = item.tooltip.replace(/@|\s/ig, '').toLowerCase()
        if (data[field] === 'N') {
          item.hidden = true
        }
        item.tooltip = ''
      }
      if (item.type === 'funcvar') {
        readin = false
@@ -402,7 +421,7 @@
              } 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 > 0 && item.min < 1e-6) {
                  if (item.min === 1e-6) {
                    callback(item.label + '最小值为 0.000001')
                  } else if (item.min === 1e-7) {
@@ -416,7 +435,7 @@
                  } else if (item.min === 1e-11) {
                    callback(item.label + '最小值为 0.00000000001')
                  } else {
                    callback(item.label + '最小值为 ' + item.min)
                    callback(item.label + (dict['less_limit'] || '最小值为 ') + item.min)
                  }
                } else {
                  callback(item.label + (dict['less_limit'] || '最小值为 ') + item.min)
@@ -832,7 +851,9 @@
  }
  getFormData = (deForms) => {
    if (deForms.length === 1) {
    if (window.backend && window.GLOB.CacheData.has('sql_' + deForms[0].uuid)) {
      this.improveBackActionForm(deForms)
    } else if (deForms.length === 1) {
      this.improveSimpleActionForm(deForms)
    } else if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') {
      this.improveSimpleActionForm(deForms)
@@ -841,6 +862,106 @@
    }
  }
  /**
   * @description 获取下拉表单选项信息
   */
  improveBackActionForm = (deForms) => {
    const { BID, action } = this.props
    let sysvals = {
      mk_departmentcode: sessionStorage.getItem('departmentcode') || '',
      mk_organization: sessionStorage.getItem('organization') || '',
      mk_user_type: sessionStorage.getItem('mk_user_type') || '',
      id: this.state.ID || '',
      bid: BID || '',
      datam: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '',
      datam_begin: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '',
      datam_end: sessionStorage.getItem('dataM') === 'true' ? 'Y' : ''
    }
    if (window.GLOB.externalDatabase !== null) {
      sysvals.db = window.GLOB.externalDatabase
    }
    let deffers = []
    let mainItems = []  // 云端或单点数据
    let localItems = [] // 本地数据
    let cache = action.setting.cache !== 'false' && !action.$cache
    let skip = false
    deForms.forEach(item => {
      let ex = window.GLOB.CacheData.get('sql_' + item.uuid)
      if (!ex) return
      let exps = []
      ex.reps.forEach(n => {
        let key = n.toLowerCase()
        if (sysvals.hasOwnProperty(key)) {
          exps.push({
            key: n,
            value: sysvals[key]
          })
        }
      })
      let cell = {
        id: ex.id,
        exps: exps,
        menuname: item.label + '(表单)',
        md5_id: ''
      }
      if (item.database === 'sso' && window.GLOB.mainSystemApi) {
        mainItems.push(cell)
      } else {
        localItems.push(cell)
      }
    })
    if (localItems.length) {
      deffers.push({
        $backend: true,
        data: localItems
      })
    }
    if (mainItems.length) {
      deffers.push({
        $backend: true,
        data: mainItems,
        rduri: window.GLOB.mainSystemApi
      })
    }
    if (!deffers.length) return
    deffers = deffers.map(item => {
      return new Promise(resolve => {
        Api.getSystemCacheConfig(item, cache).then(res => {
          if (!res.status) {
            notification.warning({
              top: 92,
              message: res.message,
              duration: 5
            })
            skip = true
          }
          resolve(res)
        })
      })
    })
    Promise.all(deffers).then(response => {
      let result = {...response[0], ...(response[1] || {})}
      delete result.ErrCode
      delete result.ErrMesg
      delete result.message
      delete result.status
      this.resetFormList(result, skip)
    })
  }
  /**
   * @description 获取下拉表单选项信息
   */
@@ -865,7 +986,7 @@
        sql = sql.replace(/@BID@/ig, `'${BID}'`)
        if (window.GLOB.debugger === true) {
          console.info(sql)
          window.mkInfo(sql)
        }
        sql = sql.replace(/%/ig, ' mpercent ')
@@ -879,7 +1000,7 @@
        sql = sql.replace(/@BID@/ig, `'${BID}'`)
        if (window.GLOB.debugger === true) {
          console.info(sql)
          window.mkInfo(sql)
        }
        sql = sql.replace(/%/ig, ' mpercent ')
@@ -1003,7 +1124,7 @@
      param.LText = param.LText.replace(/@BID@/ig, `'${this.props.BID || ''}'`)
      if (window.GLOB.debugger) {
        console.info(param.LText)
        window.mkInfo(param.LText)
      }
      if (window.GLOB.execType === 'x') {
@@ -1368,6 +1489,7 @@
  }
  handleConfirm = (formId) => {
    const { action } = this.props
    const { formlist, send_type, timestamp, n_id } = this.state
    // 表单提交时检查输入值是否正确
@@ -1379,6 +1501,7 @@
        }
        let forms = []
        let record = {...this.record, ...values}
        let locals = null
        formlist.forEach(item => {
          if (!item.field || ['hint', 'split', 'formula'].includes(item.type)) return
@@ -1475,12 +1598,21 @@
              value: n_id || ''
            })
          }
          if (item.local) {
            locals = locals || {}
            locals[item.field] = _item.value
          }
    
          forms.push(_item)
        })
        this.submitId = formId || ''
        if (locals) {
          sessionStorage.setItem('local_' + action.uuid, JSON.stringify(locals))
        }
        resolve(forms)
      })
    })