king
2024-04-10 8a1ee7d651500f848a3c2f05c7fe3be2b7114a43
src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -3,7 +3,7 @@
import moment from 'moment'
import qs from 'qs'
import { is, fromJS } from 'immutable'
import { Button, Modal, notification, message, Drawer, Switch, Checkbox, Progress } from 'antd'
import { Button, Modal, notification, message, Popover, Drawer, Switch, Checkbox, Progress } from 'antd'
import md5 from 'md5'
import Api from '@/api'
@@ -28,6 +28,7 @@
    columns: PropTypes.any,           // 字段列
    setting: PropTypes.any,           // 页面通用设置
    disabled: PropTypes.any,          // 行按钮禁用
    name: PropTypes.any
  }
  state = {
@@ -497,7 +498,7 @@
          }
        }
        param.exec_type = 'y' // 后台解码
        param.exec_type = window.GLOB.execType || 'y' // 后台解码
        param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
        param.secretkey = Utils.encrypt('', param.timestamp)
@@ -508,7 +509,7 @@
          param.LText = param.LText.replace(/\$check@|@check\$/ig, '')
        }
        param.LText = Utils.formatOptions(param.LText)
        param.LText = Utils.formatOptions(param.LText, param.exec_type)
      } else if (btn.OpenType === 'pop' || btn.OpenType === 'formSubmit' || btn.OpenType === 'form') { // 表单
        if (btn.sqlType === 'insert') { // 系统函数添加时,生成uuid
          primaryId = ''
@@ -533,7 +534,7 @@
            }
          }
          param.exec_type = 'y' // 后台解码
          param.exec_type = window.GLOB.execType || 'y' // 后台解码
          param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
          param.secretkey = Utils.encrypt('', param.timestamp)
@@ -544,7 +545,7 @@
            param.LText = param.LText.replace(/\$check@|@check\$/ig, '')
          }
          param.LText = Utils.formatOptions(param.LText)
          param.LText = Utils.formatOptions(param.LText, param.exec_type)
        } else {
          param.ID = primaryId
@@ -559,7 +560,7 @@
            }
          }
          param.exec_type = 'y' // 后台解码
          param.exec_type = window.GLOB.execType || 'y' // 后台解码
          param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
          param.secretkey = Utils.encrypt('', param.timestamp)
@@ -570,7 +571,7 @@
            param.LText = param.LText.replace(/\$check@|@check\$/ig, '')
          }
          param.LText = Utils.formatOptions(param.LText)
          param.LText = Utils.formatOptions(param.LText, param.exec_type)
        }
      }
@@ -590,7 +591,7 @@
      if (param.$unCheckParam) {
        param.$unCheckParam.LText = param.$unCheckParam.LText.replace(/\$check@/ig, '/*').replace(/@check\$/ig, '*/')
        param.$unCheckParam.LText = Utils.formatOptions(param.$unCheckParam.LText)
        param.$unCheckParam.LText = Utils.formatOptions(param.$unCheckParam.LText, param.exec_type)
        param.$unCheckParam.menuname = btn.logLabel
        if (window.GLOB.probation) {
@@ -625,7 +626,7 @@
            }
          }
          param.exec_type = 'y' // 后台解码
          param.exec_type = window.GLOB.execType || 'y' // 后台解码
          param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
          param.secretkey = Utils.encrypt('', param.timestamp)
@@ -636,7 +637,7 @@
            param.LText = param.LText.replace(/\$check@|@check\$/ig, '')
          }
          param.LText = Utils.formatOptions(param.LText)
          param.LText = Utils.formatOptions(param.LText, param.exec_type)
        } else if (btn.OpenType === 'pop') { // 表单
          if (index !== 0) {
            let _cell = {}
@@ -665,7 +666,7 @@
              }
            }
            param.exec_type = 'y' // 后台解码
            param.exec_type = window.GLOB.execType || 'y' // 后台解码
            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
            param.secretkey = Utils.encrypt('', param.timestamp)
@@ -676,7 +677,7 @@
              param.LText = param.LText.replace(/\$check@|@check\$/ig, '')
            }
            param.LText = Utils.formatOptions(param.LText)
            param.LText = Utils.formatOptions(param.LText, param.exec_type)
          } else {
            param.ID = primaryId
@@ -691,7 +692,7 @@
              }
            }
            param.exec_type = 'y' // 后台解码
            param.exec_type = window.GLOB.execType || 'y' // 后台解码
            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
            param.secretkey = Utils.encrypt('', param.timestamp)
@@ -702,7 +703,7 @@
              param.LText = param.LText.replace(/\$check@|@check\$/ig, '')
            }
            param.LText = Utils.formatOptions(param.LText)
            param.LText = Utils.formatOptions(param.LText, param.exec_type)
          }
        }
@@ -721,7 +722,7 @@
        if (param.$unCheckParam) {
          param.$unCheckParam.LText = param.$unCheckParam.LText.replace(/\$check@/ig, '/*').replace(/@check\$/ig, '*/')
          param.$unCheckParam.LText = Utils.formatOptions(param.$unCheckParam.LText)
          param.$unCheckParam.LText = Utils.formatOptions(param.$unCheckParam.LText, param.exec_type)
          param.$unCheckParam.menuname = btn.logLabel
  
          if (window.GLOB.probation) {
@@ -754,6 +755,9 @@
      if (btn.recordUser === 'true') {
        param.username = sessionStorage.getItem('User_Name') || ''
        param.fullname = sessionStorage.getItem('Full_Name') || ''
      }
      if (btn.dataM === 'true') {
        param.dataM = sessionStorage.getItem('dataM') === 'true' ? 'Y' : ''
      }
      
      let primaryId = ''
@@ -796,6 +800,9 @@
        if (btn.recordUser === 'true') {
          param.username = sessionStorage.getItem('User_Name') || ''
          param.fullname = sessionStorage.getItem('Full_Name') || ''
        }
        if (btn.dataM === 'true') {
          param.dataM = sessionStorage.getItem('dataM') === 'true' ? 'Y' : ''
        }
        let primaryId = setting.primaryKey ? cell[setting.primaryKey] || '' : ''
@@ -1124,6 +1131,12 @@
      if (btn.intertype === 'system') {
        params = this.getSystemParam(data, formdata)
        if (btn.returnValue === 'true') {
          params = params.map(item => {
            item.script_type = 'Y'
            return item
          })
        }
      } else {
        params = this.getInnerParam(data, formdata)
      }
@@ -1295,7 +1308,7 @@
      return
    }
    Api.genericInterface(param).then(res => {
    Api.genericInterface(param, btn.$innerScript, 'inner').then(res => {
      record.mk_api_key = res.mk_api_key || ''
      if (res.status) {
@@ -1535,7 +1548,7 @@
      param.menuname = param.menuname + '(回调)'
    }
    Api.genericInterface(param).then(res => {
    Api.genericInterface(param, btn.$callbackScript, 'callback').then(res => {
      if (res.status) {
        this.triggerNote(res, param.ID) // 消息
@@ -1715,9 +1728,9 @@
      sql = sql.replace(/@typename@/ig, `'admin'`)
      if (sessionStorage.getItem('dataM') === 'true') { // 数据权限
        sql = sql.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
        sql = sql.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, `'Y'`)
      } else {
        sql = sql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
        sql = sql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, `''`)
      }
      if (window.GLOB.debugger === true) {
@@ -1726,10 +1739,10 @@
      }
      param.LText = sql
      param.exec_type = 'y' // 后台解码
      param.exec_type = window.GLOB.execType || 'y' // 后台解码
      param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
      param.secretkey = Utils.encrypt('', param.timestamp)
      param.LText = Utils.formatOptions(param.LText)
      param.LText = Utils.formatOptions(param.LText, param.exec_type)
      param.menuname = btn.logLabel
      if (window.GLOB.probation) {
@@ -1892,7 +1905,7 @@
      return
    }
    Api.genericInterface(param).then(res => {
    Api.genericInterface(param, btn.$innerScript, 'inner').then(res => {
      if (res.status) {
        if ((res.mk_ex_invoke === 'false' || res.mk_ex_invoke === false) && params.length === 0) {
          this.execSuccess(res)
@@ -1990,7 +2003,7 @@
      }
    }
    Api.genericInterface(result).then(res => {
    Api.genericInterface(result, btn.$outerScript, 'outer').then(res => {
      if (!res) return // LoginError时中断请求
      if (ver_token && res.ErrCode === 'token_error') {
        res.ErrCode = 'E'
@@ -2082,7 +2095,7 @@
      param.menuname = param.menuname + '(回调)'
    }
    Api.genericInterface(param).then(res => {
    Api.genericInterface(param, btn.$callbackScript, 'callback').then(res => {
      if (res.status) {
        this.triggerNote(res, param.ID) // 消息
@@ -2226,7 +2239,19 @@
    const { autoMatic } = this.state
    if (btn.resetForms) {
      MKEmitter.emit('resetForms', btn.uuid)
      let data = {}
      Object.keys(res).forEach(key => {
        data[key.toLowerCase()] = res[key]
      })
      delete data.errcode
      delete data.errmesg
      delete data.message
      delete data.status
      MKEmitter.emit('resetForms', btn.uuid, data)
      MKEmitter.emit('refreshByButtonResult', btn.$menuId, 'resetData', btn, null, null, data)
    }
    if (this.preCallback) {
@@ -2326,9 +2351,9 @@
      tabId = btn.refreshTab[btn.refreshTab.length - 1]
    }
    if (btn.formCache === 'clear') { // 清除表单缓存
      window.GLOB.CacheMap = new Map()
    }
    // if (btn.formCache === 'clear') { // 清除表单缓存
    //   window.GLOB.CacheMap = new Map()
    // }
    if (tabId && btn.$MenuID === tabId) { // 刷新当前菜单时,停止其他操作
      MKEmitter.emit('reloadMenuView', tabId, 'table')
@@ -2456,9 +2481,38 @@
    if (!id) return
    setTimeout(() => {
      window.open('#/billprint/' + window.btoa(window.encodeURIComponent(JSON.stringify({ id: id, tempId: btn.verify.printTempId, pageId: btn.$MenuID || '', dataM: sessionStorage.getItem('dataM') }))))
    }, 500)
    if (btn.verify.preHandle === 'true' && btn.verify.pre_func && /#position-print/.test(btn.verify.pre_func)) {
      MKEmitter.emit('queryModuleParam', btn.$menuId, (res) => {
        let searches = {}
        res.search && res.search.forEach(item => {
          searches[item.key] = item.value
        })
        let _param = { id: id || '', tempId: btn.verify.printTempId, pageId: btn.$MenuID || '', dataM: sessionStorage.getItem('dataM')}
        try {
          // eslint-disable-next-line
          let func = new Function('btn', 'searches', 'param', 'systemType', btn.verify.pre_func)
          _param = func(btn, searches, _param, window.GLOB.systemType)
        } catch (e) {
          console.warn(e)
        }
        if (!_param || _param.error) {
          notification.warning({
            top: 92,
            message: _param ? _param.error : '未获取到打印参数,自定义脚本错误!',
            duration: 5
          })
          return
        }
        window.open('#/billprint/' + window.btoa(window.encodeURIComponent(JSON.stringify(_param))))
      })
    } else {
      setTimeout(() => {
        window.open('#/billprint/' + window.btoa(window.encodeURIComponent(JSON.stringify({ id: id, tempId: btn.verify.printTempId, pageId: btn.$MenuID || '', dataM: sessionStorage.getItem('dataM') }))))
      }, 200)
    }
  }
  sendWxMessage = (verify, id) => {
@@ -2476,7 +2530,7 @@
      upid: id
    }
    param.LText = Utils.formatOptions(Utils.getuuid())
    param.LText = Utils.getuuid()
    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
    param.secretkey = Utils.encrypt(param.LText, param.timestamp)
@@ -2570,7 +2624,7 @@
                msg_result: msg
              }
              _p.LText = Utils.formatOptions(Utils.getuuid())
              _p.LText = Utils.getuuid()
              _p.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
              _p.secretkey = Utils.encrypt(_p.LText, _p.timestamp)
@@ -2618,7 +2672,7 @@
      upid: id
    }
    param.LText = Utils.formatOptions(Utils.getuuid())
    param.LText = Utils.getuuid()
    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
    param.secretkey = Utils.encrypt(param.LText, param.timestamp)
@@ -2749,7 +2803,7 @@
      upid: id
    }
    param.LText = Utils.formatOptions(Utils.getuuid())
    param.LText = Utils.getuuid()
    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
    param.secretkey = Utils.encrypt(param.LText, param.timestamp)
@@ -3151,7 +3205,7 @@
  }
  modelconfirm = () => {
    const { btn, BID } = this.props
    const { BID } = this.props
    const { btnconfig, selines } = this.state
    let _this = this
@@ -3236,6 +3290,20 @@
              console.warn(e)
              _item.value = ''
            }
          } else if (item.interception === 'charTure') {
            let str = _item.value.replace(/(^\s*|\s*$)/g, '')
            let result = ''
            for (let i = 0 ; i < str.length; i++) {
              let code = str.charCodeAt(i)
              if (code >= 65281 && code <= 65373) {
                result += String.fromCharCode(str.charCodeAt(i) - 65248)
              } else if (code === 12288) {
                result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32)
              } else {
                result += str.charAt(i)
              }
            }
            _item.value = result
          } else {
            _item.value = _item.value.replace(/(^\s*|\s*$)/g, '')
          }
@@ -3282,7 +3350,7 @@
      this.execSubmit(selines, () => {}, result)
    } else {
      confirm({
        title: btn.tipTitle || '确定要执行吗?',
        title: btnconfig.setting.tipTitle || '确定要执行吗?',
        onOk() {
          return new Promise(resolve => {
            _this.execSubmit(selines, resolve, result)
@@ -3462,7 +3530,7 @@
  }
  render() {
    const { btn } = this.props
    const { btn, name } = this.props
    const { loadingNumber, loadingTotal, loading, disabled, hidden, check, count } = this.state
    if (hidden) return null
@@ -3481,45 +3549,36 @@
    }
    let label = ''
    let icon = ''
    let type = 'link'
    let className = ''
    if (btn.show === 'button') {
      label = btn.label
      icon = btn.icon || ''
    } else if (btn.show === 'link') {
      label = <span>{btn.label}{btn.icon ? <MkIcon style={{marginLeft: '8px'}} type={btn.icon}/> : ''}</span>
      icon = ''
    if (btn.show === 'link') {
      label = <span>{name || btn.label}{btn.icon ? <MkIcon style={{marginLeft: '8px'}} type={btn.icon} /> : ''}</span>
    } else if (btn.show === 'icon') {
      icon = btn.icon || ''
    } else if (!btn.$toolbtn) {
      icon = btn.icon || ''
      label = btn.label
      className = 'mk-btn mk-' + (btn.class || 'unset')
      label = !loading ? <MkIcon type={btn.icon} /> : null
    } else if (btn.$toolbtn) {
      label = <span>{!loading && btn.icon ? <MkIcon style={{marginRight: '8px'}} type={btn.icon} /> : ''}{loadingNumber && !loadingTotal ? `(${loadingNumber})` : ''}{btn.label}</span>
    } else {
      type = ''
      icon = btn.icon || ''
      label = btn.label
      className = 'mk-btn mk-' + (btn.class || 'unset')
      label = <span>{!loading && btn.icon ? <MkIcon style={{marginRight: '8px'}} type={btn.icon} /> : ''}{name || btn.label}</span>
    }
    if (loadingNumber && btn.progress !== 'progressbar' && btn.$toolbtn && (!btn.show || btn.show === 'button')) {
      label = (loadingNumber ? `(${loadingNumber})` : '') + btn.label
    let BTN = <Button
      type="link"
      id={'button' + btn.uuid}
      title={disabled ? (btn.reason || '') : (btn.show === 'icon' ? btn.label : '')}
      loading={loading}
      disabled={disabled}
      style={btn.style}
      className={btn.$toolbtn ? (btn.hover || '') : ''}
      onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
    >{label}</Button>
    if (btn.hoverTitle) {
      BTN = <Popover mouseLeaveDelay={0.3} mouseEnterDelay={0.3} content={btn.hoverTitle} trigger="hover">
        {BTN}
      </Popover>
    }
    return <>
      <Button
        type={type}
        icon={icon}
        id={'button' + btn.uuid}
        title={disabled ? (btn.reason || '') : (btn.show === 'icon' ? btn.label : '')}
        loading={loading}
        disabled={disabled}
        style={btn.style}
        className={className}
        onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
      >{label}</Button>
      {BTN}
      <span onClick={(e) => {e.stopPropagation()}}>{this.getModels()}</span>
      {loadingTotal ? <Progress className="mk-button-progress" percent={(loadingTotal - loadingNumber) / loadingTotal * 100} size="small" showInfo={false} /> : null}
    </>