king
2025-01-27 2b639156302123d4490f03ec02385c4750d1fa11
src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -846,7 +846,7 @@
      let val = form.value
      if (form.type === 'number' || form.type === 'rate') {
        if (isNaN(val)) {
        if (isNaN(val) || val === '') {
          val = 0
        }
      } else if (['date', 'datemonth'].includes(form.type)) {
@@ -893,6 +893,13 @@
        })
      }
    })
    if (btn.verify && btn.verify.printEnable === 'true' && !btn.output && !ex.reps.includes('ID') && values.id) {
      exps.push({
        key: 'ID',
        value: values.id
      })
    }
    if (process && btn.verify.workFlow === 'true') {
      let flow = window.GLOB.UserCacheMap.get(btn.$flowId)
@@ -1113,7 +1120,7 @@
      } else {
        let works_flow_countersign = ''
        let works_flow_sign_values = ''
        let works_flow_sign_field = ''
        let works_flow_sign_field = 'statuscharone'
        let works_flow_sign_label = ''
        let works_begin_branch = ''
        if (line.approvalMethod === 'countersign' && node.checkIds.length > 1) {
@@ -1295,7 +1302,6 @@
  getSysDeclareSql = (btn, formdata, data, columns, BID = '') => {
    const { submitType } = this.state
    let datavars = {}                 // 声明的变量,表单及显示列
    // 需要声明的变量集
    let _vars = ['tbid', 'errorcode', 'retmsg', 'billcode', 'bvoucher', 'fibvoucherdate', 'fiyear', 'username', 'fullname', 'modulardetailcode', 'roleid', 'mk_departmentcode', 'mk_organization', 'mk_user_type', 'mk_nation', 'mk_province', 'mk_city', 'mk_district', 'mk_address', 'mk_deleted', 'bid', 'mk_submit_type']
  
@@ -1310,14 +1316,13 @@
    // 获取字段键值对
    formdata && formdata.forEach(form => {
      let _key = form.key.toLowerCase()
      datavars[_key] = form.value
  
      if (!_initvars.includes(_key)) {
        _initvars.push(_key)
        let val = form.value
  
        if (form.type === 'number' || form.type === 'rate') {
          if (isNaN(val)) {
          if (isNaN(val) || val === '') {
            val = 0
          }
          _initFormfields.push(`@${_key}=${val}`)
@@ -1365,14 +1370,12 @@
  
    // 添加数据中字段,表单值优先(按钮不选行或多行拼接时跳过)
    if (data && btn.Ot !== 'notRequired' && columns && columns.length > 0) {
      datavars = {..._data, ...datavars}
      const setField = (col) => {
        if (!col.field) return
        let _key = col.field.toLowerCase()
  
        if (!_initvars.includes(_key)) {
          let _val = datavars.hasOwnProperty(_key) ? datavars[_key] : ''
          let _val = _data.hasOwnProperty(_key) ? _data[_key] : ''
  
          if (col.datatype && /^date/ig.test(col.datatype) && !_val) {
            _val = '1949-10-01'
@@ -1581,7 +1584,7 @@
              }, 600)
            }
            this.triggerNote(res, _param.ID) // 消息
            this.triggerNote(res, _param) // 消息
            this.execSuccess(res)
          } else {
            this.execError(res)
@@ -1606,7 +1609,7 @@
            setTimeout(() => {
              Api.genericInterface(param).then(res => {
                if (res.status) {
                  this.triggerNote(res, param.ID) // 消息
                  this.triggerNote(res, param) // 消息
                }
                resolve(res)
              }, (error) => {
@@ -1818,6 +1821,16 @@
      })
    }
    if (/@.*@/.test(url)) {
      Object.keys(param).forEach(key => {
        let reg = new RegExp('@' + key + '@', 'ig')
        if (reg.test(url)) {
          url = url.replace(reg, param[key])
          delete param[key]
        }
      })
    }
    let _params = {
      url: url,
      method: btn.method || 'post'
@@ -1930,6 +1943,10 @@
        if (params.length === 0) {
          this.execSuccess(result)
          _resolve()
        } else if (btn.execInterval) {
          setTimeout(() => {
            this.customLoopRequest(params, _resolve)
          }, btn.execInterval)
        } else {
          this.customLoopRequest(params, _resolve)
        }
@@ -1967,6 +1984,10 @@
        if (params.length === 0) {
          this.execSuccess(result)
          _resolve()
        } else if (btn.execInterval) {
          setTimeout(() => {
            this.customLoopRequest(params, _resolve)
          }, btn.execInterval)
        } else {
          this.customLoopRequest(params, _resolve)
        }
@@ -1984,11 +2005,15 @@
    Api.genericInterface(param, btn.$callbackScript, 'callback').then(res => {
      if (res.status) {
        this.triggerNote(res, param.ID) // 消息
        this.triggerNote(res, param) // 消息
        if (params.length === 0) {
          this.execSuccess(res)
          _resolve()
        } else if (btn.execInterval) {
          setTimeout(() => {
            this.customLoopRequest(params, _resolve)
          }, btn.execInterval)
        } else {
          this.customLoopRequest(params, _resolve)
        }
@@ -2331,11 +2356,15 @@
    Api.genericInterface(param).then(res => {
      if (res.status) {
        this.triggerNote(res, param.ID) // 消息
        this.triggerNote(res, param) // 消息
        if (params.length === 0) {
          this.execSuccess(res)
          _resolve()
        } else if (btn.execInterval) {
          setTimeout(() => {
            this.innerLoopRequest(params, btn, _resolve)
          }, btn.execInterval)
        } else {
          this.innerLoopRequest(params, btn, _resolve)
        }
@@ -2365,7 +2394,7 @@
    Api.genericInterface(param).then(res => {
      if (res.status) {
        this.triggerNote(res, param.ID) // 消息
        this.triggerNote(res, param) // 消息
        if (params.length === 0) {
          this.execSuccess(res)
@@ -2389,7 +2418,7 @@
            return new Promise(resolve => {
              Api.genericInterface(unCheckParam).then(result => {
                if (result.status) {
                  that.triggerNote(result, param.ID) // 消息
                  that.triggerNote(result, param) // 消息
          
                  if (params.length === 0) {
                    that.execSuccess(result)
@@ -2585,6 +2614,10 @@
        if (params.length === 0) {
          this.execSuccess(result)
          _resolve()
        } else if (btn.execInterval) {
          setTimeout(() => {
            this.outerLoopRequest(params, _resolve)
          }, btn.execInterval)
        } else {
          this.outerLoopRequest(params, _resolve)
        }
@@ -2629,6 +2662,10 @@
        if (params.length === 0) {
          this.execSuccess(result)
          _resolve()
        } else if (btn.execInterval) {
          setTimeout(() => {
            this.outerLoopRequest(params, _resolve)
          }, btn.execInterval)
        } else {
          this.outerLoopRequest(params, _resolve)
        }
@@ -2646,12 +2683,16 @@
    Api.genericInterface(param, btn.$callbackScript, 'callback').then(res => {
      if (res.status) {
        this.triggerNote(res, param.ID) // 消息
        this.triggerNote(res, param) // 消息
        // 一次请求成功,进行下一项请求
        if (params.length === 0) {
          this.execSuccess(res)
          _resolve()
        } else if (btn.execInterval) {
          setTimeout(() => {
            this.outerLoopRequest(params, _resolve)
          }, btn.execInterval)
        } else {
          this.outerLoopRequest(params, _resolve)
        }
@@ -2944,6 +2985,7 @@
    }
    let tabId = ''
    let menu = null
    if (btn.refreshTab && btn.refreshTab.length > 0) {
      tabId = btn.refreshTab[btn.refreshTab.length - 1]
    }
@@ -2952,8 +2994,26 @@
      this.clearBackSqlCache()
    }
    if (btn.openmenu && Array.isArray(btn.openmenu) && btn.openmenu.length > 0 && sign !== '@no_target_menu@') {
      let menuId = btn.openmenu.slice(-1)[0]
      if (window.GLOB.mkThdMenus.has(menuId)) {
        menu = {...window.GLOB.mkThdMenus.get(menuId), param: { $BID: id }}
      } else if (btn.MenuID) {
        menu = {
          MenuID: btn.MenuID,
          MenuName: btn.MenuName,
          type: btn.tabType,
          param: { $BID: id }
        }
      }
    }
    if (tabId && btn.$MenuID === tabId) { // 刷新当前菜单时,停止其他操作
      MKEmitter.emit('reloadMenuView', tabId)
      MKEmitter.emit('reloadMenuView', tabId, btn.urlPar === 'true')
      if (menu) {
        MKEmitter.emit('modifyTabs', menu, true)
      }
      return
    }
@@ -2995,7 +3055,7 @@
    }
    if (tabId) {
      MKEmitter.emit('reloadMenuView', tabId)
      MKEmitter.emit('reloadMenuView', tabId, btn.urlPar === 'true')
    }
    
    if (btn.switchTab && btn.switchTab.length > 0) {
@@ -3009,24 +3069,8 @@
      node && node.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'nearest'})
    }
    if (btn.openmenu && Array.isArray(btn.openmenu) && btn.openmenu.length > 0 && sign !== '@no_target_menu@') {
      let menuId = btn.openmenu.slice(-1)[0]
      let menu = null
      if (window.GLOB.mkThdMenus.has(menuId)) {
        menu = {...window.GLOB.mkThdMenus.get(menuId), param: { $BID: id }}
      } else if (btn.MenuID) {
        menu = {
          MenuID: btn.MenuID,
          MenuName: btn.MenuName,
          type: btn.tabType,
          param: { $BID: id }
        }
      }
      if (menu) {
        MKEmitter.emit('modifyTabs', menu, true)
      }
    if (menu) {
      MKEmitter.emit('modifyTabs', menu, true)
    }
    if (btn.execSuccess === 'popclose' && btn.$tabId) { // 标签关闭刷新
@@ -3074,7 +3118,7 @@
    })
  }
  triggerNote = (res, ID) => {
  triggerNote = (res, param) => {
    const { btn } = this.props
    if (!btn.verify) return
@@ -3086,7 +3130,16 @@
    }
    if (btn.verify.printEnable === 'true') {
      this.billPrint(id || ID)
      let _id = id || param.ID
      if (!_id && param.data && param.data[0] && param.data[0].exps) {
        param.data[0].exps.forEach(cell => {
          if (cell.key === 'ID') {
            _id = cell.value
          }
        })
      }
      this.billPrint(_id)
    }
    if (!id) return
@@ -3706,7 +3759,7 @@
        tabId = btn.refreshTab[btn.refreshTab.length - 1]
      }
      if (tabId && btn.$MenuID === tabId) { // 刷新当前菜单时,停止其他操作
        MKEmitter.emit('reloadMenuView', tabId)
        MKEmitter.emit('reloadMenuView', tabId, btn.urlPar === 'true')
        return
      }
@@ -3738,7 +3791,7 @@
      }
      if (tabId) {
        MKEmitter.emit('reloadMenuView', tabId)
        MKEmitter.emit('reloadMenuView', tabId, btn.urlPar === 'true')
      }
    }
@@ -3961,6 +4014,10 @@
      let key = item.field.toLowerCase()
      let _readin = item.readin !== 'false'
      if (item.type === 'linkMain' && item.verifyVal === 'true') {
        _item.$verify = true
        _item.label = item.label
      }
      if (_item.type === 'date') { // 时间兼容
        _item.precision = item.precision || 'day'
      } else if (_item.type === 'datetime') {
@@ -4092,13 +4149,14 @@
   */
  getModels = () => {
    const { BID, btn, BData } = this.props
    const { btnconfig, visible, dict, confirmLoading, submitType } = this.state
    const { btnconfig, visible, dict, confirmLoading, submitType, loadingNumber, loadingTotal } = this.state
    if (!btnconfig || !btnconfig.setting) return null
    let title = btn.label
    let width = btnconfig.setting.width > 100 ? btnconfig.setting.width : btnconfig.setting.width + 'vw'
    let clickouter = btnconfig.setting.clickouter === 'close'
    let num = loadingNumber && !loadingTotal ? `(${loadingNumber}) ` : ''
    if (btnconfig.setting.display === 'drawer') {
      let height = '100vh'
@@ -4167,9 +4225,9 @@
          onCancel={this.handleCancel}
          footer={[
            <Button key="cancel" onClick={this.handleCancel}>{dict['cancel'] || '取消'}</Button>,
            btn.extBtn === 'true' ? <Button key="extend" className={'extend-btn ' + (btn.extStyle || '')} disabled={confirmLoading && submitType !== btn.extValue} loading={confirmLoading && submitType === btn.extValue} onClick={() => this.handleOk(btn.extValue)}>{btn.extLabel}</Button> : null,
            btn.extBtn === 'true' ? <Button key="confirm" className={'confirm-btn ' + (btn.confStyle || '')} disabled={confirmLoading && submitType !== ''} loading={confirmLoading && submitType === ''} onClick={() => this.handleOk()}>{btn.confLabel || dict['ok'] || '确定'}</Button> : null,
            btn.extBtn !== 'true' ? <Button key="confirm" type="primary" loading={confirmLoading} onClick={() => this.handleOk()}>{dict['ok'] || '确定'}</Button> : null
            btn.extBtn === 'true' ? <Button key="extend" className={'extend-btn ' + (btn.extStyle || '')} disabled={confirmLoading && submitType !== btn.extValue} loading={confirmLoading && submitType === btn.extValue} onClick={() => this.handleOk(btn.extValue)}>{submitType === btn.extValue ? num : ''}{btn.extLabel}</Button> : null,
            btn.extBtn === 'true' ? <Button key="confirm" className={'confirm-btn ' + (btn.confStyle || '')} disabled={confirmLoading && submitType !== ''} loading={confirmLoading && submitType === ''} onClick={() => this.handleOk()}>{submitType === '' ? num : ''}{btn.confLabel || dict['ok'] || '确定'}</Button> : null,
            btn.extBtn !== 'true' ? <Button key="confirm" type="primary" loading={confirmLoading} onClick={() => this.handleOk()}>{num}{dict['ok'] || '确定'}</Button> : null
          ]}
          destroyOnClose
        >