king
2024-06-28 c8804ceb1fe2dea76f9949c5ea04423876ee2c81
src/tabviews/zshare/actionList/funcbutton/index.jsx
@@ -2,9 +2,11 @@
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Button, notification, message, Modal } from 'antd'
import moment from 'moment'
import md5 from 'md5'
import Api from '@/api'
import Utils from '@/utils/utils.js'
import MKEmitter from '@/utils/events.js'
import MkIcon from '@/components/mk-icon'
@@ -165,21 +167,207 @@
        okText: dict['ok'] || '确定',
        cancelText: dict['cancel'] || '取消',
        onOk() {
          that.execRefund(orderId)
          that.execRefund(orderId, data[0])
        },
        onCancel() {}
      })
    }
  }
  execRefund = (orderId) => {
    Api.setRefund(orderId).then(res => {
  execRefund = (orderId, data) => {
    const { btn, BID } = this.props
    let param = null
    if (btn.payMode === 'inner') {
      param = {
        func: btn.innerFunc || '',
        BID: BID || '',
        username: sessionStorage.getItem('User_Name') || '',
        fullname: sessionStorage.getItem('Full_Name') || '',
        dataM: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '',
        ID: orderId
      }
    } else if (btn.payMode === 'system') {
      let sql = this.getSysDeclareSql(orderId, data)
      param = {
        func: 'sPC_TableData_InUpDe',
        BID: BID || '',
        exec_type: window.GLOB.execType || 'y',
        timestamp: moment().format('YYYY-MM-DD HH:mm:ss')
      }
      param.secretkey = Utils.encrypt('', param.timestamp)
      param.LText = Utils.formatOptions(sql, param.exec_type)
      if (btn.output) {
        param.key_back_type = 'Y'
      }
      if (window.GLOB.mkHS) { // 函数 sPC_TableData_InUpDe 云端验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
      param.menuname = btn.logLabel
      if (window.GLOB.probation) {
        param.s_debug_type = 'Y'
      }
    }
    let appId = window.GLOB.WXAppID || window.GLOB.WXminiAppID || ''
    if (btn.wxApp && window.GLOB.WXApps && window.GLOB.WXApps.findIndex(item => item.appId === btn.wxApp) > -1) {
      appId = btn.wxApp
    }
    if (!appId) {
      notification.warning({
        top: 10,
        message: '未获取到应用ID!',
        duration: 5
      })
      return
    }
    this.setState({loading: true})
    if (param) {
      Api.genericInterface(param).then(res => {
        if (res.status) {
          let id = orderId
          if (btn.output) {
            id = res.mk_b_id || res[btn.output] || orderId
          }
          Api.setRefund({out_biz_no: id, app_id: appId}).then(res => {
      if (!res.status) {
        this.execError({ErrCode: 'E', message: window.GLOB.dict['exc_fail'] || '执行失败!', ...res})
              this.execError({ErrCode: 'E', message: res.message || window.GLOB.dict['exc_fail'] || '执行失败!', ...res})
      } else {
        this.execSuccess({ErrCode: 'S', ...res})
      }
    })
        } else {
          this.execError(res)
        }
      })
    } else {
      Api.setRefund({out_biz_no: orderId, app_id: appId}).then(res => {
        if (!res.status) {
          this.execError({ErrCode: 'E', message: res.message || window.GLOB.dict['exc_fail'] || '执行失败!', ...res})
        } else {
          this.execSuccess({ErrCode: 'S', ...res})
        }
      })
    }
  }
  getSysDeclareSql = (ID, data) => {
    const { columns, btn, BID } = this.props
    // 系统变量
    let _vars = ['tbid', 'errorcode', 'retmsg', 'username', 'fullname', 'roleid', 'mk_departmentcode', 'mk_organization', 'mk_user_type', 'mk_nation', 'mk_province', 'mk_city', 'mk_district', 'mk_address', 'bid']
    let _declare = []
    let _initVal = []
    let _data = {}
    Object.keys(data).forEach(key => {
      _data[key.toLowerCase()] = data[key]
    })
    columns.forEach(col => {
      let _key = col.field.toLowerCase()
      if (_vars.includes(_key)) return
      _declare.push(`@${_key} ${col.datatype}`)
      let _val = _data.hasOwnProperty(_key) ? _data[_key] : ''
      if (/^date/ig.test(col.datatype) && !_val) {
        _val = '1949-10-01'
      }
      if (/'/.test(_val)) {
        _val = _val.replace(/'/ig, '"')
      }
      _initVal.push(`@${_key}='${_val}'`)
    })
    // 变量声明
    _declare = _declare.join(',')
    if (_declare) {
      _declare = ',' + _declare
    }
    let _sql = `/* 系统生成 */
      Declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000), @UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100),@bid nvarchar(50),@tbid nvarchar(50)${_declare}
    `
    let userName = sessionStorage.getItem('User_Name') || ''
    let fullName = sessionStorage.getItem('Full_Name') || ''
    let RoleID = sessionStorage.getItem('role_id') || ''
    let departmentcode = sessionStorage.getItem('departmentcode') || ''
    let organization = sessionStorage.getItem('organization') || ''
    let mk_user_type = sessionStorage.getItem('mk_user_type') || ''
    let nation = sessionStorage.getItem('nation') || ''
    let province = sessionStorage.getItem('province') || ''
    let city = sessionStorage.getItem('city') || ''
    let district = sessionStorage.getItem('district') || ''
    let address = sessionStorage.getItem('address') || ''
    // 初始化凭证及用户信息字段
    _sql += `
      /* 用户信息初始化赋值 */
      select @ErrorCode='',@retmsg='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}', @bid='${BID}'
    `
    _sql += `
      /* 显示列变量赋值 */
      select ${_initVal.join(',')}
    `
    btn.verify.scripts.forEach(item => {
      if (item.status === 'false') return
      _sql += `
      ${item.sql}
      `
    })
    if (btn.output) {
      _sql += `
        aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg,${btn.output} as mk_b_id`
    } else {
      _sql += `
        aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
    }
    _sql = _sql.replace(/@ID@/ig, `'${ID || ''}'`)
    _sql = _sql.replace(/@BID@/ig, `'${BID || ''}'`)
    _sql = _sql.replace(/@LoginUID@/ig, `'${sessionStorage.getItem('LoginUID') || ''}'`)
    _sql = _sql.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`)
    _sql = _sql.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`)
    _sql = _sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
    _sql = _sql.replace(/@lang@/ig, `'${sessionStorage.getItem('lang')}'`)
    _sql = _sql.replace(/@typename@/ig, `'admin'`)
    if (window.GLOB.externalDatabase !== null) {
      _sql = _sql.replace(/@db@/ig, window.GLOB.externalDatabase)
    }
    if (sessionStorage.getItem('dataM') === 'true') { // 数据权限
      _sql = _sql.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, `'Y'`)
    } else {
      _sql = _sql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, `''`)
    }
    if (window.GLOB.debugger === true) {
      console.info('%c' + btn.logLabel, 'color: blue')
      console.info(_sql)
    }
    return _sql
  }
  getShortUrl = (url) => {