king
2023-04-03 2b46797c3a5868f7f26329da5834c13aae07ad69
src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -1962,8 +1962,9 @@
    const { btn } = this.props
    const { btnconfig, autoMatic } = this.state
    if (res.message && /^@speak@/.test(res.message)) {
      res.message = res.message.replace('@speak@', '')
    let sign = ''
    if (/^@speak@/i.test(res.message)) {
      res.message = res.message.replace(/^@speak@/i, '')
      let val = res.message.match(/<<.*>>/)
      res.message = res.message.replace(/\s*<<.*>>\s*/g, '')
      val = val ? val[0].replace(/<<|>>/g, '') : ''
@@ -1977,6 +1978,9 @@
      if (!res.message) {
        res.ErrCode = '-1'
      }
    } else if (/@close_tab@|@close_popup@|@goback@/i.test(res.message)) {
      sign = res.message.match(/@close_tab@|@close_popup@|@goback@/i)[0].toLowerCase()
      res.message = res.message.replace(/@close_tab@|@close_popup@|@goback@/i, '')
    }
    if ((res.ErrCode === 'S' || !res.ErrCode) || autoMatic) { // 执行成功
@@ -2032,9 +2036,9 @@
      return
    }
    if (btn.execSuccess === 'closetab') {
    if (btn.execSuccess === 'closetab' || sign === '@close_tab@') {
      MKEmitter.emit('closeTabView', btn.$MenuID)
    } else if (btn.execSuccess === 'closepoptab') {
    } else if (btn.execSuccess === 'closepoptab' || sign === '@close_popup@') {
      MKEmitter.emit('popclose')
    } else if (btn.execSuccess !== 'never') {
      MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execSuccess, btn, id, this.state.selines)
@@ -2350,12 +2354,13 @@
   * 2、excel导出,失败后取消导出按钮加载中状态
   * 3、通知主列表刷新
   */
  execError = (res) => {
  execError = (res = {}) => {
    const { btn } = this.props
    const { btnconfig, autoMatic } = this.state
    if (res.message && /^@speak@/.test(res.message)) {
      res.message = res.message.replace('@speak@', '')
    let sign = ''
    if (/^@speak@/i.test(res.message)) {
      res.message = res.message.replace(/^@speak@/i, '')
      let val = res.message.match(/<<.*>>/)
      res.message = res.message.replace(/\s*<<.*>>\s*/g, '')
      val = val ? val[0].replace(/<<|>>/g, '') : ''
@@ -2369,6 +2374,9 @@
      if (!res.message) {
        res.ErrCode = '-1'
      }
    } else if (/@close_tab@|@close_popup@|@goback@/i.test(res.message)) {
      sign = res.message.match(/@close_tab@|@close_popup@|@goback@/i)[0].toLowerCase()
      res.message = res.message.replace(/@close_tab@|@close_popup@|@goback@/i, '')
    }
    if (res.ErrCode === 'E' && !autoMatic) {
@@ -2416,7 +2424,9 @@
      MKEmitter.emit('mkFC', 'focus', btnconfig.setting.errFocus)
    }
    if (btn.execError === 'closepoptab') {
    if (sign === '@close_tab@') {
      MKEmitter.emit('closeTabView', btn.$MenuID)
    } else if (btn.execError === 'closepoptab' || sign === '@close_popup@') {
      MKEmitter.emit('popclose')
    } else if (btn.execError !== 'never') {
      MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execError, btn, '', this.state.selines)
@@ -2576,49 +2586,50 @@
    btnconfig.fields.forEach(item => {
      if (!item.field) return
      let _item = {
        key: item.field,
        readin: item.readin !== 'false' && item.readin !== 'top',
        fieldlen: item.fieldlength || 50,
        writein: item.writein !== 'false',
        type: item.type
      }
      let _initval = item.initval
      let _readin = item.readin !== 'false'
      let _format = item.precision || 'day' // 时间格式化
      if (item.type === 'funcvar') {
        _initval = ''
        _readin = false
        _item.readin = false
      } else if (item.type === 'linkMain') {
        _readin = false
        _item.readin = false
      } else if (item.type === 'date') {
        if (_format !== 'day') {
          _format = 'YYYY-MM-DD HH:mm:ss'
        } else {
          _format = 'YYYY-MM-DD'
        }
      } else if (item.type === 'datetime') {
        _item.type = 'date'
        _format = 'YYYY-MM-DD HH:mm:ss'
        type: item.type,
        value: item.initval
      }
      let key = item.field.toLowerCase()
      let _readin = item.readin !== 'false'
      if (_item.type === 'linkMain' && BData.hasOwnProperty(key)) {
        _initval = BData[key]
      } else if (_readin && _data.hasOwnProperty(key)) {
        _initval = _data[key]
      } else if (_item.type === 'date' && _initval) {
        _initval = moment().subtract(_initval, 'days').format(_format)
      } else if (_item.type === 'datemonth' && _initval) {
        _initval = moment().subtract(_initval, 'month').format('YYYY-MM')
      if (_item.type === 'date') { // 时间兼容
        _item.precision = item.precision || 'day'
      } else if (_item.type === 'datetime') {
        _item.type = 'date'
        _item.precision = 'second'
      } else if (['funcvar', 'linkMain'].includes(_item.type)) {
        _readin = false
        _item.readin = false
      } else if (['select', 'link', 'radio'].includes(_item.type)) { // 选中第一项
        if (/^\s*\$first\s*$/.test(_item.value)) {
          _item.value = ''
          if (item.resourceType === '0' && item.options[0] && item.options[0].Value) {
            _item.value = item.options[0].Value
          }
        }
      }
      _item.value = _initval === undefined ? '' : _initval
      if (_item.type === 'funcvar') {
        _item.value = ''
      } else if (_item.type === 'linkMain' && BData.hasOwnProperty(key)) {
        _item.value = BData[key]
      } else if (_readin && _data.hasOwnProperty(key)) {
        _item.value = _data[key]
      } else if (_item.type === 'date' && _item.value) {
        _item.value = moment().subtract(_item.value, 'days').format(_item.precision === 'day' ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm:ss')
      } else if (_item.type === 'datemonth' && _item.value) {
        _item.value = moment().subtract(_item.value, 'month').format('YYYY-MM')
      }
      _item.value = _item.value === undefined ? '' : _item.value
      if (_item.type === 'number' || item.declare === 'decimal') {
        _item.type = 'number'
@@ -2640,10 +2651,10 @@
            _item.value = _item.value.slice(-item.fieldlength)
          }
        }
      } else if (_item.type.indexOf('date') > -1) {
        if (item.declareType === 'nvarchar(50)') {
          _item.type = 'text'
        }
      } else if (_item.type === 'datemonth') {
        _item.type = 'text'
      } else  if (_item.type === 'date') {
        _item.type = item.declareType === 'nvarchar(50)' ? 'text' : 'date'
      } else if (_item.type === 'rate') {
        let count = item.rateCount || 5
        _item.value = parseInt(_item.value)