king
7 天以前 a1e9b18a4dbfd21e1bf4d5cb60974ac2f0115efd
src/tabviews/zshare/mutilform/index.jsx
@@ -4,6 +4,7 @@
import { Form, Row, Col, notification, Tooltip, Rate } from 'antd'
import { QuestionCircleOutlined, StarFilled } from '@ant-design/icons'
import moment from 'moment'
import md5 from 'md5'
import Api from '@/api'
import Utils from '@/utils/utils.js'
@@ -140,6 +141,8 @@
      } else if (item.type === 'datetime') {
        item.type = 'date'
        item.precision = 'second'
      } else if (item.type === 'fileupload') {
        item.fieldlength = item.fieldlength || 512
      }
      if (!item.field || !['text', 'number', 'switch', 'check', 'rate', 'select', 'popSelect', 'link', 'cascader', 'linkMain', 'funcvar', 'date', 'datemonth', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color', 'vercode'].includes(item.type)) return false
@@ -170,6 +173,7 @@
      } else if (item.type === 'linkMain') {
        readin = false
        item.readin = false
        item.$verify = item.verifyVal === 'true'
      } else if (item.type === 'number') {
        item.decimal = item.decimal || 0
        item.fieldlength = item.decimal
@@ -178,12 +182,21 @@
      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
          cell.label = cell.Text
          return !cell.Hide
        })
        item.$select = true
        if (item.type === 'checkcard') {
          item.options = item.options.filter(cell => {
            cell.$value = cell.$value + ''
            return !cell.Hide
          })
        } else {
          item.options = item.options.filter(cell => {
            cell.value = cell.Value + ''
            cell.label = cell.Text
            return !cell.Hide
          })
        }
        if (item.setAll === 'true' && ['select', 'link', 'radio'].includes(item.type)) { // 添加空值
          item.options.unshift({
            key: Utils.getuuid(),
@@ -283,6 +296,19 @@
        } else {
          item.showValue = ''
        }
        if (window.backend && action.uuid) {
          item.formSqlId = md5(action.uuid.replace(/_pop$/, '') + item.uuid)
        }
      } else if (item.type === 'brafteditor') {
        if (window.backend && newval && /<\/span>/.test(newval) && item.encryption === 'true') {
          try {
            newval = window.btoa(window.encodeURIComponent(newval))
          } catch (e) {
            newval = ''
          }
        }
      } else if (item.$select && item.resourceType === '0') {
        newval = newval + ''
      }
      if (newval !== '$empty') {
@@ -295,7 +321,7 @@
        if (isNaN(item.initval) || item.initval === '') {
          item.initval = 0
        }
      } else if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type) && item.resourceType === '1') {
      } else if (item.$select && item.resourceType === '1') {
        deForms.push(item)
      } else if (item.type === 'rate') {
        item.rateCount = item.rateCount || 5
@@ -320,6 +346,9 @@
      item.rules = []
      if (item.type === 'text') {
        item.initval = item.initval + ''
        if (/@currentYear@/ig.test(item.initval)) { // 系统变量替换
          item.initval = item.initval.replace(/@currentYear@/ig, moment().format('YYYY'))
        }
        if (item.required === 'true') {
          item.rules.push({
@@ -386,7 +415,7 @@
            })
          } 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}$/,
              pattern: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\s?\d{4}\s?\d{4}$/,
              message: item.regularText || dict['phone_error'] || '请正确输入手机号'
            })
          } else if (item.regular === 'email') {
@@ -667,6 +696,13 @@
      
      if (item.enter === 'tab' || item.enter === 'sub') {
        item.tabUuid = ''
        if (item.enter === 'sub' && item.errTabField) {
          if (item.errTabField === 'origin') {
            item.errTabUuid = item.uuid
          } else if (fieldMap.has(item.errTabField)) {
            item.errTabUuid = fieldMap.get(item.errTabField).uuid
          }
        }
        if (item.tabField && fieldMap.has(item.tabField)) {
          item.tabUuid = fieldMap.get(item.tabField).uuid
        } else if (item.enter === 'tab') {
@@ -771,7 +807,7 @@
  resetFocus = (id, field) => {
    const { action } = this.props
    if (id !== action.uuid) return
    if (id !== action.uuid.replace(/_pop$/, '')) return
    let focusId = ''
@@ -840,7 +876,7 @@
  }
  getFormData = (deForms) => {
    if (window.backend && window.GLOB.CacheData.has('sql_' + deForms[0].uuid)) {
    if (window.backend && window.GLOB.CacheData.has('sql_' + md5(this.props.action.uuid.replace(/_pop$/, '') + deForms[0].uuid))) {
      this.improveBackActionForm(deForms)
    } else if (deForms.length === 1) {
      this.improveSimpleActionForm(deForms)
@@ -878,9 +914,16 @@
    let skip = false
    deForms.forEach(item => {
      let ex = window.GLOB.CacheData.get('sql_' + item.uuid)
      let ex = window.GLOB.CacheData.get('sql_' + md5(action.uuid.replace(/_pop$/, '') + item.uuid))
      
      if (!ex) return
      if (!ex) {
        notification.warning({
          top: 92,
          message: '表单(' + item.label + ')无可执行脚本。',
          duration: 5
        })
        return
      }
      
      let exps = []
      ex.reps.forEach(n => {
@@ -895,8 +938,8 @@
      let cell = {
        id: ex.id,
        exps: exps,
        menuname: item.label + '(表单)',
        exps: exps,
        md5_id: ''
      }
@@ -908,40 +951,71 @@
    })
    if (localItems.length) {
      deffers.push({
        $backend: true,
        data: localItems
      })
      if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') {
        localItems.forEach(item => {
          deffers.push({
            $backend: true,
            $type: 's_Get_SelectedList',
            data: [item]
          })
        })
      } else {
        deffers.push({
          $backend: true,
          $type: 's_Get_SelectedList',
          data: localItems
        })
      }
    }
    if (mainItems.length) {
      deffers.push({
        $backend: true,
        data: mainItems,
        rduri: window.GLOB.mainSystemApi
      })
      if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') {
        mainItems.forEach(item => {
          deffers.push({
            $backend: true,
            $type: 's_Get_SelectedList',
            data: [item],
            rduri: window.GLOB.mainSystemApi
          })
        })
      } else {
        deffers.push({
          $backend: true,
          $type: 's_Get_SelectedList',
          data: mainItems,
          rduri: window.GLOB.mainSystemApi
        })
      }
    }
    if (!deffers.length) return
    deffers = deffers.map(item => {
    deffers = deffers.map((item, i) => {
      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)
        })
        setTimeout(() => {
          Api.getSystemCacheConfig(item, cache).then(res => {
            if (!res.status) {
              if (res.ErrCode !== '-2') {
                notification.warning({
                  top: 92,
                  message: res.message,
                  duration: 5
                })
              }
              skip = true
            }
            resolve(res)
          })
        }, 30 * i)
      })
    })
    Promise.all(deffers).then(response => {
      let result = {...response[0], ...(response[1] || {})}
      let result = {}
      response.forEach(item => {
        result = {...result, ...item}
      })
      delete result.ErrCode
      delete result.ErrMesg
@@ -1024,11 +1098,13 @@
        new Promise(resolve => {
          Api.getSystemCacheConfig(param, cache).then(res => {
            if (!res.status) {
              notification.warning({
                top: 92,
                message: res.message,
                duration: 5
              })
              if (res.ErrCode !== '-2') {
                notification.warning({
                  top: 92,
                  message: res.message,
                  duration: 5
                })
              }
              skip = true
            }
            resolve(res)
@@ -1066,11 +1142,13 @@
        new Promise(resolve => {
          Api.getSystemCacheConfig(mainparam, cache).then(res => {
            if (!res.status) {
              notification.warning({
                top: 92,
                message: res.message,
                duration: 5
              })
              if (res.ErrCode !== '-2') {
                notification.warning({
                  top: 92,
                  message: res.message,
                  duration: 5
                })
              }
              skip = true
            }
            resolve(res)
@@ -1136,11 +1214,13 @@
          setTimeout(() => {
            Api.getSystemCacheConfig(param, cache).then(res => {
              if (!res.status) {
                notification.warning({
                  top: 92,
                  message: res.message,
                  duration: 5
                })
                if (res.ErrCode !== '-2') {
                  notification.warning({
                    top: 92,
                    message: res.message,
                    duration: 5
                  })
                }
                skip = true
              }
              resolve(res)
@@ -1477,10 +1557,11 @@
    return fields
  }
  handleConfirm = (formId) => {
  handleConfirm = (formId, errId) => {
    const { action } = this.props
    const { formlist, send_type, timestamp, n_id } = this.state
    window.CACHE.errFocusId = ''
    // 表单提交时检查输入值是否正确
    return new Promise((resolve, reject) => {
      this.props.form.validateFieldsAndScroll((err, values) => {
@@ -1503,6 +1584,11 @@
            key: item.field,
            isconst: item.constant === 'true'
          }
          if (item.$verify) {
            _item.$verify = true
            _item.label = item.label
          }
    
          _item.value = record[item.field] !== undefined ? record[item.field] : ''
    
@@ -1511,10 +1597,10 @@
          } else if (item.declare === 'decimal') {
            _item.type = 'number'
            _item.fieldlen = item.decimal || 0
          } else if (['text', 'textarea', 'linkMain'].includes(item.type)) {
          } else if (['text', 'textarea', 'linkMain', 'brafteditor'].includes(item.type)) {
            _item.value = _item.value + ''
            _item.value = _item.value.replace(/\t+|\v+/g, '')       // 去除制表符
            if (item.interception !== 'false') {                    // 去除首尾空格
              if (item.interception === 'func') {
                try {
@@ -1544,14 +1630,19 @@
                _item.value = _item.value.replace(/(^\s*|\s*$)/g, '')
              }
            }
            if (item.type === 'text' && /@appkey@|@SessionUid@|@bid@/ig.test(_item.value)) { // 特殊字段替换
              _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey).replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')).replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || ''))
            }
            if (item.type === 'text' && item.lenControl && item.lenControl !== 'limit') {
              if (item.lenControl === 'left') {
                _item.value = _item.value.substr(0, item.fieldlength)
              } else {
                _item.value = _item.value.slice(-item.fieldlength)
            if (item.type === 'text') {
              if (/@appkey@|@SessionUid@|@bid@/ig.test(_item.value)) { // 特殊字段替换
                _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey).replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')).replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || ''))
              }
              if (item.lenControl && item.lenControl !== 'limit') {
                if (item.lenControl === 'left') {
                  _item.value = _item.value.substr(0, item.fieldlength)
                } else {
                  _item.value = _item.value.slice(-item.fieldlength)
                }
              }
              if (item.regular === 'phone') {
                _item.value = _item.value.replace(/\s+/g, '')
              }
            }
          } else if (item.type === 'datemonth') {
@@ -1597,6 +1688,7 @@
        })
        this.submitId = formId || ''
        window.CACHE.errFocusId = errId || ''
        if (locals) {
          sessionStorage.setItem('local_' + action.uuid, JSON.stringify(locals))