From c8804ceb1fe2dea76f9949c5ea04423876ee2c81 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 28 六月 2024 14:02:47 +0800
Subject: [PATCH] 2024-06-28

---
 src/tabviews/zshare/actionList/funcbutton/index.jsx |  235 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 215 insertions(+), 20 deletions(-)

diff --git a/src/tabviews/zshare/actionList/funcbutton/index.jsx b/src/tabviews/zshare/actionList/funcbutton/index.jsx
index cf887d2..995c55d 100644
--- a/src/tabviews/zshare/actionList/funcbutton/index.jsx
+++ b/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'
 
@@ -23,6 +25,7 @@
     loading: false,
     disabled: false,
     hidden: false,
+    dict: window.GLOB.dict
   }
 
   UNSAFE_componentWillMount () {
@@ -102,7 +105,7 @@
    */
   actionTrigger = (triggerId, record, type, lid) => {
     const { btn, BID, selectedData, LID } = this.props
-    const { loading } = this.state
+    const { loading, dict } = this.state
 
     if (loading) return
     if (triggerId && btn.uuid !== triggerId) return
@@ -112,14 +115,14 @@
     let error = ''
 
     if (btn.funcType === 'shareLink' && window.GLOB.systemType === 'production' && !btn.shareProUrl) {
-      error = '灏氭湭璁剧疆姝e紡绯荤粺閾炬帴鍦板潃锛�'
+      error = dict['no_prod_link'] || '灏氭湭璁剧疆姝e紡绯荤粺閾炬帴鍦板潃锛�'
     } else if (btn.funcType === 'refund') {
       if (data.length === 0) {
-        error = '璇烽�夋嫨琛岋紒'
+        error = dict['select_row'] || '璇烽�夋嫨琛岋紒'
       } else if (data.length !== 1) {
-        error = '璇烽�夋嫨鍗曡鏁版嵁锛�'
+        error = dict['select_single_row'] || '璇烽�夋嫨鍗曡鏁版嵁锛�'
       } else if (!data[0].$$uuid) {
-        error = '鏈幏鍙栧埌璁㈠崟缂栧彿锛�'
+        error = dict['no_ordercode'] || '鏈幏鍙栧埌璁㈠崟缂栧彿锛�'
       }
     }
 
@@ -160,23 +163,211 @@
       const that = this
 
       confirm({
-        title: btn.tipTitle || '纭畾瑕佹墽琛屽悧?',
+        title: btn.tipTitle || dict['exec_sure'] || '纭畾瑕佹墽琛屽悧?',
+        okText: dict['ok'] || '纭畾',
+        cancelText: dict['cancel'] || '鍙栨秷',
         onOk() {
-          that.execRefund(orderId)
+          that.execRefund(orderId, data[0])
         },
         onCancel() {}
       })
     }
   }
 
-  execRefund = (orderId) => {
-    Api.setRefund(orderId).then(res => {
-      if (!res.status) {
-        this.execError({ErrCode: 'E', message: '鎵ц澶辫触锛�', ...res})
-      } else {
-        this.execSuccess({ErrCode: 'S', ...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: 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) => {
@@ -243,22 +434,24 @@
         title: btn.shareTip
       })
     } else {
-      message.success('宸插鍒跺埌鍓垏鏉裤��')
+      message.success(window.GLOB.dict['copied'] || '宸插鍒跺埌鍓垏鏉裤��')
     }
   }
 
   execSuccess = (res = {}) => {
     const { btn } = this.props
+    const { dict } = this.state
 
     if (res.ErrCode === 'S' || !res.ErrCode) { // 鎵ц鎴愬姛
       notification.success({
         top: 92,
-        message: res.message || '鎵ц鎴愬姛锛�',
+        message: res.message || dict['exc_success'] || '鎵ц鎴愬姛锛�',
         duration: btn.verify && btn.verify.stime ? btn.verify.stime : 2
       })
     } else if (res.ErrCode === 'Y') { // 鎵ц鎴愬姛
       Modal.success({
-        title: res.message || '鎵ц鎴愬姛锛�'
+        title: res.message || dict['exc_success'] || '鎵ц鎴愬姛锛�',
+        okText: dict['got_it'] || '鐭ラ亾浜�'
       })
     } else if (res.ErrCode === '-1') { // 瀹屾垚鍚庝笉鎻愮ず
 
@@ -275,6 +468,7 @@
 
   execError = (res) => {
     const { btn } = this.props
+    const { dict } = this.state
 
     if (!['LoginError', 'C', '-2', 'E', 'N', 'F', 'NM'].includes(res.ErrCode)) {
       res.ErrCode = 'E'
@@ -282,23 +476,24 @@
 
     if (res.ErrCode === 'E') {
       Modal.error({
-        title: res.message || '鎵ц澶辫触锛�',
+        title: res.message || dict['exc_fail'] || '鎵ц澶辫触锛�',
+        okText: dict['got_it'] || '鐭ラ亾浜�'
       })
     } else if (res.ErrCode === 'N') {
       notification.error({
         top: 92,
-        message: res.message || '鎵ц澶辫触锛�',
+        message: res.message || dict['exc_fail'] || '鎵ц澶辫触锛�',
         duration: btn.verify && btn.verify.ntime ? btn.verify.ntime : 10
       })
     } else if (res.ErrCode === 'F') {
       notification.error({
         className: 'notification-custom-error',
         top: 92,
-        message: res.message || '鎵ц澶辫触锛�',
+        message: res.message || dict['exc_fail'] || '鎵ц澶辫触锛�',
         duration: btn.verify && btn.verify.ftime ? btn.verify.ftime : 10
       })
     } else if (res.ErrCode === 'NM') {
-      message.error(res.message || '鎵ц澶辫触锛�')
+      message.error(res.message || dict['exc_fail'] || '鎵ц澶辫触锛�')
     }
     
     this.setState({

--
Gitblit v1.8.0