From ae46c8e640ed64abd7605b289554377e0cdc0cb7 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 04 十月 2023 22:10:30 +0800
Subject: [PATCH] 2023-10-04

---
 src/tabviews/zshare/actionList/normalbutton/index.jsx |  260 +++++++++++++++++++++++++++-------------------------
 1 files changed, 135 insertions(+), 125 deletions(-)

diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index f07a1dd..816e450 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -451,12 +451,6 @@
           }
         }
 
-        if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
-          param.LText = param.LText.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
-        } else {
-          param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
-        }
-
         param.exec_type = 'y' // 鍚庡彴瑙g爜
         param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
         param.secretkey = Utils.encrypt('', param.timestamp)
@@ -492,12 +486,6 @@
               param.key_back_type = 'Y'
             }
           }
-          
-          if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
-            param.LText = param.LText.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
-          } else {
-            param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
-          }
 
           param.exec_type = 'y' // 鍚庡彴瑙g爜
           param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
@@ -523,12 +511,6 @@
             if (btn.output) {
               param.key_back_type = 'Y'
             }
-          }
-          
-          if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
-            param.LText = param.LText.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
-          } else {
-            param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
           }
 
           param.exec_type = 'y' // 鍚庡彴瑙g爜
@@ -596,12 +578,6 @@
               param.key_back_type = 'Y'
             }
           }
-          
-          if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
-            param.LText = param.LText.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
-          } else {
-            param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
-          }
 
           param.exec_type = 'y' // 鍚庡彴瑙g爜
           param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
@@ -642,12 +618,6 @@
                 param.key_back_type = 'Y'
               }
             }
-            
-            if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
-              param.LText = param.LText.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
-            } else {
-              param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
-            }
 
             param.exec_type = 'y' // 鍚庡彴瑙g爜
             param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
@@ -673,12 +643,6 @@
               if (btn.output) {
                 param.key_back_type = 'Y'
               }
-            }
-            
-            if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
-              param.LText = param.LText.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
-            } else {
-              param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
             }
 
             param.exec_type = 'y' // 鍚庡彴瑙g爜
@@ -740,6 +704,11 @@
       if (this.props.BID) {
         param.BID = this.props.BID
       }
+
+      if (btn.recordUser === 'true') {
+        param.username = sessionStorage.getItem('User_Name') || ''
+        param.fullname = sessionStorage.getItem('Full_Name') || ''
+      }
       
       let primaryId = ''
 
@@ -764,7 +733,7 @@
       }
 
       if (retmsg) {
-        param.$callbacksql = this.getSysDeclareSql(btn, formdata, data[0], columns, primaryId, this.props.BID)
+        param.$callbacksql = this.getSysDeclareSql(btn, formdata, data[0], columns, this.props.BID)
       }
 
       _params.push(param)
@@ -776,6 +745,11 @@
 
         if (this.props.BID) {
           param.BID = this.props.BID
+        }
+
+        if (btn.recordUser === 'true') {
+          param.username = sessionStorage.getItem('User_Name') || ''
+          param.fullname = sessionStorage.getItem('Full_Name') || ''
         }
 
         let primaryId = setting.primaryKey ? cell[setting.primaryKey] || '' : ''
@@ -809,7 +783,7 @@
         }
 
         if (retmsg) {
-          param.$callbacksql = this.getSysDeclareSql(btn, formdata, cell, columns, primaryId, this.props.BID)
+          param.$callbacksql = this.getSysDeclareSql(btn, formdata, cell, columns, this.props.BID)
         }
 
         return param
@@ -822,7 +796,7 @@
   /**
    * @description 鑾峰彇鍥炶皟鑴氭湰鐨勫瓧娈靛畾涔�
    */
-  getSysDeclareSql = (btn, formdata, data, columns, primaryId, BID = '') => {
+  getSysDeclareSql = (btn, formdata, data, columns, BID = '') => {
     let datavars = {}                 // 澹版槑鐨勫彉閲忥紝琛ㄥ崟鍙婃樉绀哄垪
     // 闇�瑕佸0鏄庣殑鍙橀噺闆�
     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']
@@ -866,7 +840,7 @@
       if (!_vars.includes(_key)) {
         _vars.push(_key)
   
-        if (form.fieldlen && form.fieldlen > 2048) {
+        if (form.fieldlen && form.fieldlen > 4000) {
           form.fieldlen = 'max'
         }
   
@@ -920,7 +894,7 @@
           if (col.datatype) {
             _declarefields.push(`@${_key} ${col.datatype}`)
           } else {
-            if (col.fieldlength && col.fieldlength > 2048) {
+            if (col.fieldlength && col.fieldlength > 4000) {
               col.fieldlength = 'max'
             }
   
@@ -989,20 +963,6 @@
         /* 鏄剧ず鍒楀彉閲忚祴鍊� */
         select ${_initColfields.join(',')}
         `
-    }
-
-    _sql = _sql.replace(/@ID@/ig, `'${primaryId || ''}'`)
-    _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(/@typename@/ig, `'admin'`)
-
-    if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
-      _sql = _sql.replace(/@datam@/ig, '\'Y\'')
-    } else {
-      _sql = _sql.replace(/@datam@/ig, '\'\'')
     }
 
     return _sql
@@ -1185,6 +1145,8 @@
    * @description 鑷畾涔夎姹傚惊鐜墽琛�
    */
   customLoopRequest = (params, _resolve) => {
+    const { setting, btn } = this.props
+
     let param = params.shift()
 
     this.setState({
@@ -1196,6 +1158,10 @@
       ID: param.ID || '',
       callbacksql: param.$callbacksql || '',
       mk_api_key: ''
+    }
+
+    if (!record.ID && btn.Ot !== 'notRequired' && param[setting.primaryKey]) {
+      record.ID = param[setting.primaryKey]
     }
 
     delete param.$callbacksql
@@ -1428,7 +1394,6 @@
         result.status = false
         result.message = result.$ErrMesg
         result.ErrCode = 'E'
-        result.ErrMesg = result.$ErrMesg
       } else {
         result.status = result.status !== false
         result.ErrCode = result.ErrCode || '-1'
@@ -1477,7 +1442,22 @@
   getCallBackSql = (result, record) => {
     const { btn } = this.props
     let lines = []
-    let pre = btn.callbackType === 'script' ? '@' : ''
+    let pre = ''
+    let tables = []
+
+    if (btn.callbackType === 'script') { // 浣跨敤鑷畾涔夎剼鏈�
+      pre = '@'
+
+      btn.verify.cbScripts.forEach(script => {
+        if (script.status === 'false') return
+
+        if (/\s#[a-z0-9_]+(\s|\()/ig.test(script.sql)) {
+          tables.push(...script.sql.match(/\s#[a-z0-9_]+(\s|\()/ig))
+        }
+      })
+
+      tables = tables.map(tb => tb.replace(/\s|\(/g, ''))
+    }
 
     let errSql = ''
     if (result.$ErrCode === 'E') {
@@ -1494,6 +1474,11 @@
       let vals = []
       let subObjs = []
       let id = Utils.getuuid()
+      let tbName = pre + tb
+
+      if (tables.includes('#' + tb)) {
+        tbName = '#' + tb
+      }
 
       delete obj.$$key
 
@@ -1522,9 +1507,11 @@
         }
       })
 
+      keys = keys.join(',')
+
       lines.push({
-        table: tb,
-        insert: `Insert into ${pre}${tb} (${keys.join(',')},[mk_level],[mk_id],[mk_bid])`,
+        table: md5(tb + keys),
+        insert: `Insert into ${tbName} (${keys},[mk_level],[mk_id],[mk_bid])`,
         select: `Select ${vals.join(',')},'${level}','${id}','${bid}'`
       })
 
@@ -1556,7 +1543,7 @@
       param.func = 'sPC_TableData_InUpDe'
       
       if (record.BID) {
-        param.BID = this.props.BID
+        param.BID = record.BID
       }
       if (record.ID) {
         param.ID = record.ID
@@ -1586,6 +1573,8 @@
       if (btn.output) {
         _backCustomScript += `
           aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg,${btn.output} as mk_b_id`
+
+        param.key_back_type = 'Y'
       } else {
         _backCustomScript += `
           aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
@@ -1601,26 +1590,25 @@
       sql = sql + _backCustomScript
 
       sql = sql.replace(/@ID@/ig, `'${record.ID || ''}'`)
-      sql = sql.replace(/@BID@/ig, `'${this.props.BID || ''}'`)
+      sql = sql.replace(/@BID@/ig, `'${record.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(/@typename@/ig, `'admin'`)
 
+      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.replace(/\n\s{8}/ig, '\n'))
       }
 
       param.LText = sql
-      
-      if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
-        param.LText = param.LText.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
-      } else {
-        param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
-      }
-      param.LText = param.LText.replace(/\$check@|@check\$/ig, '')
-
       param.exec_type = 'y' // 鍚庡彴瑙g爜
       param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
       param.secretkey = Utils.encrypt('', param.timestamp)
@@ -1762,7 +1750,7 @@
    * @description 澶栭儴璇锋眰寰幆鎵ц
    */
   outerLoopRequest = (params, _resolve) => {
-    if (!params && params.length === 0) return
+    const { setting, btn } = this.props
 
     let param = params.shift()
 
@@ -1774,6 +1762,10 @@
       BID: param.BID || '',
       ID: param.ID || '',
       callbacksql: param.$callbacksql || ''
+    }
+
+    if (!record.ID && btn.Ot !== 'notRequired' && param[setting.primaryKey]) {
+      record.ID = param[setting.primaryKey]
     }
 
     delete param.$callbacksql
@@ -1829,58 +1821,62 @@
     if (btn.outerFunc) {
       result.func = btn.outerFunc
     }
-    if (window.GLOB.mkHS) {
-      if (btn.outerFunc === 's_app_version_upt') { // special 鏇存柊鐗堟湰鍙锋椂璁块棶sso
-        if (window.GLOB.mainSystemApi) {
-          result.rduri = window.GLOB.mainSystemApi
-        }
-      } else if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) {
-        result.rduri = window.GLOB.cloudServiceApi
-        result.userid = sessionStorage.getItem('CloudUserID') || ''
-        result.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
-      } else if (btn.sysInterface !== 'true') {
-        if (window.GLOB.systemType === 'production' && btn.proInterface) {
-          result.rduri = btn.proInterface
-        } else {
-          result.rduri = btn.interface
+
+    if (btn.sysInterface === 'true') {
+      if (window.GLOB.mainSystemApi) {
+        result.rduri = window.GLOB.mainSystemApi
+      }
+    } else if (btn.sysInterface === 'external') {
+      if (window.GLOB.systemType === 'production') {
+        result.$token = btn.exProInterface || ''
+      } else {
+        result.$token = btn.exInterface || ''
+      }
+      ver_token = true
+    } else {
+      if (window.GLOB.systemType === 'production' && btn.proInterface) {
+        result.rduri = btn.proInterface
+      } else {
+        result.rduri = btn.interface
+      }
+
+      if (/function:/i.test(result.rduri)) {
+        let rduri = result.rduri
+        try {
+          rduri = rduri.replace(/function:/i, '')
+          // eslint-disable-next-line
+          let func = new Function(rduri)
+          result.rduri = func()
+        } catch (e) {
+          console.warn(e)
         }
       }
 
-      // special 鍑芥暟 s_sDataDictb_TBBack 浜戠楠岃瘉
-      if (result.func === 's_sDataDictb_TBBack' && result.LTextOut) {
+      let host = window.GLOB.baseurl.replace(/http(s):\/\//, '')
+      if (result.rduri.indexOf(host) === -1 && /\/dostars/.test(result.rduri)) {
+        result.$login = true
+      }
+    }
+
+    if (window.GLOB.mkHS) {
+      if (result.func === 's_app_version_upt') { // special 鏇存柊鐗堟湰鍙锋椂璁块棶sso
+        delete result.rduri
+        if (window.GLOB.localSystemApi) {
+          result.rduri = window.GLOB.localSystemApi
+        }
+        result.userid = sessionStorage.getItem('LocalUserID') || ''
+        result.LoginUID = sessionStorage.getItem('LocalLoginUID') || ''
+      } else if (result.func === 's_sDataDictb_TBBack' && result.LTextOut) { // special 鍑芥暟 s_sDataDictb_TBBack 浜戠楠岃瘉
         result.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
         result.secretkey = Utils.encrypt(result.LTextOut, result.timestamp)
         result.open_key = Utils.encryptOpenKey(result.secretkey, result.timestamp)
-      }
-    } else {
-      if (btn.sysInterface === 'true') {
-        if (window.GLOB.mainSystemApi) {
-          result.rduri = window.GLOB.mainSystemApi
-        }
-      } else if (btn.sysInterface === 'external') {
-        if (window.GLOB.systemType === 'production') {
-          result.$token = btn.exProInterface || ''
-        } else {
-          result.$token = btn.exInterface || ''
-        }
-        ver_token = true
-      } else {
-        if (window.GLOB.systemType === 'production' && btn.proInterface) {
-          result.rduri = btn.proInterface
-        } else {
-          result.rduri = btn.interface
-        }
-
-        let host = window.GLOB.baseurl.replace(/http(s):\/\//, '')
-        if (result.rduri.indexOf(host) === -1 && /\/dostars/.test(result.rduri)) {
-          result.$login = true
-        }
       }
     }
 
     Api.genericInterface(result).then(res => {
       if (!res) return // LoginError鏃朵腑鏂姹�
-      if (ver_token && res.ErrMesg === 'token_error') {
+      if (ver_token && res.ErrCode === 'token_error') {
+        res.ErrCode = 'E'
         this.execError(res)
         return
       }
@@ -2001,10 +1997,12 @@
       callParam.open_key = Utils.encryptOpenKey(callParam.secretkey, callParam.timestamp)
     }
 
-    if (callParam.UpType === 'SSO' && window.GLOB.mainSystemApi) {
-      ssoParam = fromJS(callParam).toJS()
+    callParam.userid = sessionStorage.getItem('LocalUserID') || ''
+    callParam.LoginUID = sessionStorage.getItem('LocalLoginUID') || ''
 
-      ssoParam.rduri = window.GLOB.mainSystemApi
+    if (callParam.UpType === 'SSO' && window.GLOB.localSystemApi) {
+      ssoParam = fromJS(callParam).toJS()
+      ssoParam.rduri = window.GLOB.localSystemApi
 
       delete ssoParam.UpType
     } else {
@@ -2197,22 +2195,22 @@
 
     if (btn.openmenu && Array.isArray(btn.openmenu) && btn.openmenu.length > 0 && sign !== '@no_target_menu@') {
       let menuId = btn.openmenu.slice(-1)[0]
-      let newtab = window.GLOB.mkThdMenus.filter(m => m.MenuID === menuId)[0]
+      let menu = null
 
-      if (!newtab && btn.MenuID) {
-        newtab = {
+      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,
-          MenuNo: btn.MenuNo,
-          type: btn.tabType
+          type: btn.tabType,
+          param: { $BID: id }
         }
-      } else if (!newtab) {
-        return
       }
 
-      newtab = {...newtab, param: { $BID: id }}
-
-      MKEmitter.emit('modifyTabs', newtab, true)
+      if (menu) {
+        MKEmitter.emit('modifyTabs', menu, true)
+      }
     }
 
     if (btn.execSuccess === 'popclose' && btn.$tabId) { // 鏍囩鍏抽棴鍒锋柊
@@ -2884,7 +2882,19 @@
         _item.value = _item.value.replace(/\t+|\v+/g, '')       // 鍘婚櫎鍒惰〃绗�
 
         if (item.interception !== 'false') {                    // 鍘婚櫎棣栧熬绌烘牸
-          _item.value = _item.value.replace(/(^\s*|\s*$)/g, '')
+          if (item.interception === 'func') {
+            try {
+              // eslint-disable-next-line
+              let func = new Function('value', 'data', item.func)
+              _item.value = func(_item.value, _data)
+              _item.value = _item.value !== undefined ? _item.value : ''
+            } catch (e) {
+              console.warn(e)
+              _item.value = ''
+            }
+          } else {
+            _item.value = _item.value.replace(/(^\s*|\s*$)/g, '')
+          }
         }
         if (_item.type === 'text' && /@appkey@|@SessionUid@|@bid@/ig.test(_item.value)) { // 鐗规畩瀛楁鏇挎崲
           _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey).replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')).replace(/^(\s*)@bid@(\s*)$/ig, (BID || ''))

--
Gitblit v1.8.0