king
2020-05-29 5ba94ec7b5ad34098ff9c5d21b4139b1b91c2865
src/tabviews/formtab/formgroup/index.jsx
@@ -29,11 +29,13 @@
    fieldlen: null,
    groups: null,
    formlist: [],
    encrypts: [],    // 加密字段
    intercepts: [],  // 截取字段
    record: {}
  }
  UNSAFE_componentWillReceiveProps (nextProps) {
    const { datatype } = this.state
    const { datatype, encrypts } = this.state
    if (nextProps.data && !is(fromJS(this.props.data), fromJS(nextProps.data))) {
      let _fieldsvalue = {}
@@ -89,11 +91,31 @@
            }
            _fieldsvalue[key] = _val
          } else if (datatype[key] === 'text' || datatype[key] === 'textarea') {
            let _value = nextProps.data[key]
            if (encrypts.includes(key)) { // 加密字段
              try {
                _value = window.btoa(window.encodeURIComponent(_value))
              } catch (e) {
                console.warn(e)
              }
            }
            _fieldsvalue[key] = _value
          } else {
            _fieldsvalue[key] = nextProps.data[key]
          }
        } else {
          _record[key] = nextProps.data[key]
          let _value = nextProps.data[key]
          if (encrypts.includes(key)) { // 加密字段
            try {
              _value = window.btoa(window.encodeURIComponent(_value))
            } catch (e) {
              console.warn(e)
            }
          }
          _record[key] = _value
        }
      })
@@ -115,6 +137,8 @@
    let readin = {}
    let fieldlen = {}
    let _formlist = []
    let encrypts = []
    let intercepts = []
    let _groups = groups.map(group => {
      group.sublist = group.sublist.map(item => {
@@ -122,6 +146,13 @@
        if (item.type === 'funcvar') {
          _readin = false
          item.initval = '' // 初始化为空
        }
        if (item.type === 'textarea' && item.encryption === 'true') {
          encrypts.push(item.field)
        }
        if (item.interception === 'true') {
          intercepts.push(item.field)
        }
        item.initVal = item.initval ? JSON.parse(JSON.stringify(item.initval)) : ''
@@ -139,7 +170,17 @@
        fieldlen[item.field] = _fieldlen
        if (_readin && !/^date/.test(item.type) && data && data.hasOwnProperty(item.field)) {
          item.initval = data[item.field]
          let newval = data[item.field]
          if (encrypts.includes(item.field) && newval) {
            try {
              newval = window.decodeURIComponent(window.atob(newval))
            } catch (e) {
              console.warn(e)
            }
          }
          item.initval = newval
        }
        if (item.supvalue) {
@@ -559,7 +600,7 @@
  }
  handleConfirm = () => {
    const { record } = this.state
    const { record, encrypts, intercepts } = this.state
    // 表单提交时检查输入值是否正确
    return new Promise((resolve, reject) => {
      this.props.form.validateFieldsAndScroll((err, values) => {
@@ -646,9 +687,12 @@
              }
              _value = vals.join(',')
            } else if (this.state.datatype[key] === 'text') {
              _value = values[key].replace(/(^\s*|\s*$) | \t* | \v*/ig, '')
            } else if (this.state.datatype[key] === 'text' || this.state.datatype[key] === 'textarea') {
              _value = values[key].replace(/\t*|\v*/g, '') // 去除制表符
              if (intercepts.includes(key)) {              // 去除首尾空格
                _value = _value.replace(/(^\s*|\s*$)/g, '')
              }
            } else {
              _value = values[key]
@@ -663,6 +707,22 @@
              value: _value
            })
          })
          if (encrypts && encrypts.length > 0) {
            search = search.map(item => {
              let _value = item.value
              if (encrypts.includes(item.key)) {
                try {
                  _value = window.btoa(window.encodeURIComponent(_value))
                } catch (e) {
                  console.warn(e)
                }
              }
              item.value = _value
              return item
            })
          }
          resolve(search)
        } else {
          reject(err)