king
2024-11-13 26b0ef43fada54e4b06d835630afa02895014ad6
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
@@ -282,6 +285,14 @@
          item.showValue = data[item.showField.toLowerCase()] || ''
        } else {
          item.showValue = ''
        }
      } 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 = ''
          }
        }
      }
@@ -771,7 +782,7 @@
  resetFocus = (id, field) => {
    const { action } = this.props
    if (id !== action.uuid) return
    if (id !== action.uuid.replace(/_pop$/, '')) return
    let focusId = ''
@@ -840,7 +851,9 @@
  }
  getFormData = (deForms) => {
    if (deForms.length === 1) {
    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)
    } else if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') {
      this.improveSimpleActionForm(deForms)
@@ -849,6 +862,117 @@
    }
  }
  /**
   * @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_' + md5(action.uuid.replace(/_pop$/, '') + item.uuid))
      if (!ex) {
        notification.warning({
          top: 92,
          message: '表单(' + item.label + ')无可执行脚本。',
          duration: 5
        })
        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,
        menuname: item.label + '(表单)',
        exps: exps,
        md5_id: ''
      }
      if (item.database === 'sso' && window.GLOB.mainSystemApi) {
        mainItems.push(cell)
      } else {
        localItems.push(cell)
      }
    })
    if (localItems.length) {
      deffers.push({
        $backend: true,
        $type: 's_Get_SelectedList',
        data: localItems
      })
    }
    if (mainItems.length) {
      deffers.push({
        $backend: true,
        $type: 's_Get_SelectedList',
        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) {
            if (res.ErrCode !== '-2') {
              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 获取下拉表单选项信息
   */
@@ -922,11 +1046,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)
@@ -964,11 +1090,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)
@@ -1034,11 +1162,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)