From 58826d6f4eab9f8c9acf9fa8696f60039c645cfe Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 20 八月 2024 18:18:00 +0800
Subject: [PATCH] 2024-08-20

---
 src/tabviews/zshare/actionList/normalbutton/index.jsx |  515 +++++++++++++++++++++++++++++++--------------------------
 1 files changed, 279 insertions(+), 236 deletions(-)

diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index 1f42b73..9b32ef3 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -44,10 +44,10 @@
     hidden: false,
     autoMatic: false,
     check: false,
-    count: 0
+    count: 0,
+    dict: window.GLOB.dict
   }
 
-  moduleParams = null
   preCallback = null
 
   UNSAFE_componentWillMount () {
@@ -204,9 +204,9 @@
   /**
    * @description 瑙﹀彂鎸夐挳鎿嶄綔
    */
-  actionTrigger = (triggerId, record, type, callback) => {
-    const { btn, selectedData } = this.props
-    const { loading, disabled } = this.state
+  actionTrigger = (triggerId, record, type, lid, callback) => {
+    const { btn, selectedData, LID } = this.props
+    const { loading, disabled, dict } = this.state
 
     if (type === 'preButton') {
       if (btn.uuid !== triggerId) return
@@ -219,7 +219,7 @@
 
     if (loading || disabled) return
     if (triggerId && btn.uuid !== triggerId) return
-    if (type === 'linkbtn' && !btn.$toolbtn && !is(fromJS(selectedData || []), fromJS(record))) return
+    if (type === 'linkbtn' && !btn.$toolbtn && LID !== lid) return
     if (btn.OpenType === 'form' && btn.formType === 'count_line') return
 
     this.setState({autoMatic: type === 'autoMatic'})
@@ -242,7 +242,9 @@
     } else if (btn.OpenType === 'prompt') {
       this.setState({loading: true})
       confirm({
-        title: btn.tipTitle || '纭畾瑕佹墽琛屽悧?',
+        title: btn.tipTitle || dict['exec_sure'] || '纭畾瑕佹墽琛屽悧?',
+        okText: dict['ok'] || '纭畾',
+        cancelText: dict['cancel'] || '鍙栨秷',
         onOk() {
           return new Promise(resolve => {
             _this.execSubmit(data, resolve)
@@ -319,7 +321,7 @@
 
   preTrigger = (callback) => {
     const { btn, selectedData } = this.props
-    const { loading, disabled } = this.state
+    const { loading, disabled, dict } = this.state
 
     if (loading || disabled) {
       callback()
@@ -352,7 +354,9 @@
     } else if (btn.OpenType === 'prompt') {
       this.setState({loading: true})
       confirm({
-        title: btn.tipTitle || '纭畾瑕佹墽琛屽悧?',
+        title: btn.tipTitle || dict['exec_sure'] || '纭畾瑕佹墽琛屽悧?',
+        okText: dict['ok'] || '纭畾',
+        cancelText: dict['cancel'] || '鍙栨秷',
         onOk() {
           return new Promise(resolve => {
             _this.execSubmit(data, resolve)
@@ -402,11 +406,12 @@
 
   checkBtnData = (data) => {
     const { BID, btn, setting } = this.props
+    const { dict } = this.state
 
     if (setting.supModule && !BID) {
       notification.warning({
         top: 92,
-        message: '闇�瑕佷笂绾т富閿�硷紒',
+        message: dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒',
         duration: 5
       })
       return false
@@ -414,7 +419,7 @@
       // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾暟鎹�
       notification.warning({
         top: 92,
-        message: '璇烽�夋嫨琛岋紒',
+        message: dict['select_row'] || '璇烽�夋嫨琛岋紒',
         duration: 5
       })
       return false
@@ -422,42 +427,17 @@
       // 闇�瑕侀�夋嫨鍗曡鏃讹紝鏍¢獙鏁版嵁
       notification.warning({
         top: 92,
-        message: '璇烽�夋嫨鍗曡鏁版嵁锛�',
+        message: dict['select_single_row'] || '璇烽�夋嫨鍗曡鏁版嵁锛�',
         duration: 5
       })
       return false
-    } else if (btn.intertype === 'system') {
-      if (data.length === 0 && btn.verify && btn.verify.voucher && btn.verify.voucher.enabled) {
-        notification.warning({
-          top: 92,
-          message: '浣跨敤鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒',
-          duration: 5
-        })
-        return false
-      }
-    } else if (btn.intertype === 'custom' || btn.intertype === 'outer') {
-      if (btn.callbackType === 'script' && (!btn.verify || !btn.verify.cbScripts || !btn.verify.cbScripts.filter(item => item.status !== 'false').length === 0)) {
-        notification.warning({
-          top: 92,
-          message: '浣跨敤鑷畾涔夎剼鏈洖璋冩椂锛屽洖璋冭剼鏈笉鍙负绌猴紒',
-          duration: 5
-        })
-        return false
-      } else if (btn.procMode === 'system' && data.length === 0 && btn.verify && btn.verify.voucher && btn.verify.voucher.enabled) {
-        notification.warning({
-          top: 92,
-          message: '浣跨敤鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒',
-          duration: 5
-        })
-        return false
-      } else if (btn.intertype === 'custom' && window.GLOB.systemType === 'production' && !btn.proInterface) {
-        notification.warning({
-          top: 92,
-          message: '灏氭湭璁剧疆姝e紡绯荤粺鎺ュ彛鍦板潃锛�',
-          duration: 5
-        })
-        return false
-      }
+    } else if (btn.intertype === 'custom' && window.GLOB.systemType === 'production' && !btn.proInterface) {
+      notification.warning({
+        top: 92,
+        message: dict['no_prod_link'] || '灏氭湭璁剧疆姝e紡绯荤粺鎺ュ彛鍦板潃锛�',
+        duration: 5
+      })
+      return false
     }
 
     return true
@@ -488,11 +468,11 @@
         param.ID = primaryId
 
         if (retmsg) {
-          const { sql, callbacksql } = getSysDefaultSql(btn, setting, '', param, data[0], columns, retmsg, this.moduleParams) // 鏁版嵁婧�
+          const { sql, callbacksql } = getSysDefaultSql(btn, setting, '', param, data[0], columns, retmsg) // 鏁版嵁婧�
           param.LText = sql
           param.$callbacksql = callbacksql
         } else {
-          param.LText = getSysDefaultSql(btn, setting, '', param, data[0], columns, false, this.moduleParams) // 鏁版嵁婧�
+          param.LText = getSysDefaultSql(btn, setting, '', param, data[0], columns, false) // 鏁版嵁婧�
           if (btn.output) {
             param.key_back_type = 'Y'
           }
@@ -524,11 +504,11 @@
           param.ID = primaryId || Utils.getguid()
 
           if (retmsg) {
-            const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, retmsg, this.moduleParams) // 鏁版嵁婧�
+            const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, retmsg) // 鏁版嵁婧�
             param.LText = sql
             param.$callbacksql = callbacksql
           } else {
-            param.LText = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, false, this.moduleParams) // 鏁版嵁婧�
+            param.LText = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, false) // 鏁版嵁婧�
             if (btn.output) {
               param.key_back_type = 'Y'
             }
@@ -550,11 +530,11 @@
           param.ID = primaryId
 
           if (retmsg) {
-            const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, retmsg, this.moduleParams) // 鏁版嵁婧�
+            const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, retmsg) // 鏁版嵁婧�
             param.LText = sql
             param.$callbacksql = callbacksql
           } else {
-            param.LText = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, false, this.moduleParams) // 鏁版嵁婧�
+            param.LText = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, false) // 鏁版嵁婧�
             if (btn.output) {
               param.key_back_type = 'Y'
             }
@@ -616,11 +596,11 @@
           param.ID = primaryId
 
           if (retmsg) {
-            const { sql, callbacksql } = getSysDefaultSql(btn, setting, '', param, cell, columns, retmsg, this.moduleParams) // 鏁版嵁婧�
+            const { sql, callbacksql } = getSysDefaultSql(btn, setting, '', param, cell, columns, retmsg) // 鏁版嵁婧�
             param.LText = sql
             param.$callbacksql = callbacksql
           } else {
-            param.LText = getSysDefaultSql(btn, setting, '', param, cell, columns, false, this.moduleParams) // 鏁版嵁婧�
+            param.LText = getSysDefaultSql(btn, setting, '', param, cell, columns, false) // 鏁版嵁婧�
             if (btn.output) {
               param.key_back_type = 'Y'
             }
@@ -656,11 +636,11 @@
             param.ID = Utils.getguid()
 
             if (retmsg) {
-              const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, cell, columns, retmsg, this.moduleParams) // 鏁版嵁婧�
+              const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, cell, columns, retmsg) // 鏁版嵁婧�
               param.LText = sql
               param.$callbacksql = callbacksql
             } else {
-              param.LText = getSysDefaultSql(btn, setting, formdata, param, cell, columns, false, this.moduleParams) // 鏁版嵁婧�
+              param.LText = getSysDefaultSql(btn, setting, formdata, param, cell, columns, false) // 鏁版嵁婧�
               if (btn.output) {
                 param.key_back_type = 'Y'
               }
@@ -682,11 +662,11 @@
             param.ID = primaryId
 
             if (retmsg) {
-              const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, cell, columns, retmsg, this.moduleParams) // 鏁版嵁婧�
+              const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, cell, columns, retmsg) // 鏁版嵁婧�
               param.LText = sql
               param.$callbacksql = callbacksql
             } else {
-              param.LText = getSysDefaultSql(btn, setting, formdata, param, cell, columns, false, this.moduleParams) // 鏁版嵁婧�
+              param.LText = getSysDefaultSql(btn, setting, formdata, param, cell, columns, false) // 鏁版嵁婧�
               if (btn.output) {
                 param.key_back_type = 'Y'
               }
@@ -756,6 +736,9 @@
         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 = ''
 
@@ -797,6 +780,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] || '' : ''
@@ -1019,53 +1005,10 @@
    * @description 鎸夐挳鎻愪氦鎵ц
    */
   execSubmit = (data, _resolve, formdata, force) => {
-    const { setting, btn } = this.props
-    this.moduleParams = null
+    const { btn } = this.props
 
     if (btn.preButton && !force) {
       this.trigger(btn.preButton, data, _resolve, formdata, 0)
-    } else if (btn.verify && btn.verify.invalid === 'true' && setting.dataresource) {
-      MKEmitter.emit('queryModuleParam', btn.$menuId, (param) => {
-        let datasource = setting.dataresource
-        let customScript = setting.customScript || ''
-        let allSearch = Utils.getAllSearchOptions(param.search)
-
-        let regoptions = allSearch.map(item => {
-          return {
-            reg: new RegExp('@' + item.key + '@', 'ig'),
-            value: `'${item.value}'`
-          }
-        })
-
-        regoptions.push({
-          reg: new RegExp('@userName@', 'ig'),
-          value: `'${sessionStorage.getItem('User_Name') || ''}'`
-        }, {
-          reg: new RegExp('@fullName@', 'ig'),
-          value: `'${sessionStorage.getItem('Full_Name') || ''}'`
-        }, {
-          reg: new RegExp('@orderBy@', 'ig'),
-          value: setting.order
-        }, {
-          reg: new RegExp('@pageSize@', 'ig'),
-          value: 10
-        }, {
-          reg: new RegExp('@pageIndex@', 'ig'),
-          value: 1
-        })
-
-        regoptions.forEach(item => {
-          datasource = datasource.replace(item.reg, item.value)
-          customScript = customScript.replace(item.reg, item.value)
-        })
-
-        this.moduleParams = {
-          datasource,
-          customScript
-        }
-
-        this.execRealSubmit(data, _resolve, formdata)
-      })
     } else {
       this.execRealSubmit(data, _resolve, formdata)
     }
@@ -1075,7 +1018,7 @@
     if (times > 50) {
       notification.warning({
         top: 92,
-        message: '鍓嶇疆鎸夐挳鍔犺浇澶辫触锛�',
+        message: window.GLOB.dict['pre_btn_failed'] || '鍓嶇疆鎸夐挳鍔犺浇澶辫触锛�',
         duration: 5
       })
       this.setState({loading: false})
@@ -1087,7 +1030,7 @@
     let node = document.getElementById('button' + btnId)
 
     if (node) {
-      MKEmitter.emit('triggerBtnId', btnId, null, 'preButton', (res) => {
+      MKEmitter.emit('triggerBtnId', btnId, null, 'preButton', null, (res) => {
         if (!res) {
           this.setState({loading: false})
           resolve()
@@ -1113,7 +1056,7 @@
     if (setting.supModule && !BID) {
       notification.warning({
         top: 92,
-        message: '闇�瑕佷笂绾т富閿�硷紒',
+        message: window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒',
         duration: 5
       })
       _resolve()
@@ -1128,6 +1071,12 @@
         if (btn.returnValue === 'true') {
           params = params.map(item => {
             item.script_type = 'Y'
+            return item
+          })
+        }
+        if (btn.database === 'sso' && window.GLOB.mainSystemApi) {
+          params = params.map(item => {
+            item.rduri = window.GLOB.mainSystemApi
             return item
           })
         }
@@ -1351,7 +1300,7 @@
   // Api.directRequest('http://localhost:3001/test.xml', 'get', null, 'true').then(res => {
   //   let $x2js = new x2js()
   //   let jsonObj = $x2js.xml2js(res);
-  //   console.info(jsonObj)
+  //   window.mkInfo(jsonObj)
   // })
 
   /**
@@ -1393,7 +1342,21 @@
       method: btn.method || 'post'
     }
 
-    if (btn.cross === 'true') {
+    if (btn.ContentType) {
+      _params.headers = {
+        'Content-Type': btn.ContentType
+      }
+    }
+
+    if (btn.$outerScript) {
+      if (JSON.stringify(param) !== '{}') {
+        if (btn.stringify === 'qs') {
+          _params.data = qs.stringify(param)
+        } else {
+          _params.data = param
+        }
+      }
+    } else if (btn.cross === 'true') {
       if (JSON.stringify(param) !== '{}') {
         if (btn.stringify === 'qs') {
           _params.data = qs.stringify(param)
@@ -1427,13 +1390,7 @@
       _params.method = 'post'
     }
 
-    if (btn.ContentType) {
-      _params.headers = {
-        'Content-Type': btn.ContentType
-      }
-    }
-
-    Api.directRequest(_params).then(res => {
+    Api.directRequest(_params, btn.$outerScript, 'outer').then(res => {
       if (typeof(res) !== 'object') {
         let error = '鏈煡鐨勮繑鍥炵粨鏋滐紒'
 
@@ -1632,11 +1589,12 @@
       })
 
       keys = keys.join(',')
+      vals = vals.join(',')
 
       lines.push({
         table: md5(tb + keys),
-        insert: `Insert into ${tbName} (${keys},[mk_level],[mk_id],[mk_bid])`,
-        select: `Select ${vals.join(',')},'${level}','${id}','${bid}'`
+        insert: `Insert into ${tbName} (${keys ? keys + ',' : ''}[mk_level],[mk_id],[mk_bid])`,
+        select: `Select ${keys ? vals + ',' : ''}'${level}','${id}','${bid}'`
       })
 
       subObjs.forEach(item => {
@@ -1719,6 +1677,7 @@
       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 (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
@@ -1728,8 +1687,8 @@
       }
 
       if (window.GLOB.debugger === true) {
-        console.info('%c' + btn.logLabel + '(鍥炶皟)', 'color: blue')
-        console.info(sql.replace(/\n\s{8}/ig, '\n'))
+        window.mkInfo('%c' + btn.logLabel + '(鍥炶皟)', 'color: blue')
+        window.mkInfo(sql.replace(/\n\s{8}/ig, '\n'))
       }
 
       param.LText = sql
@@ -1763,7 +1722,7 @@
           `)}
         `))
         sql = sql.join('')
-        console.info(sql.replace(/\n\s{10}/ig, '\n'))
+        window.mkInfo(sql.replace(/\n\s{10}/ig, '\n'))
       }
     }
 
@@ -1832,8 +1791,10 @@
         }
         const _this = this
         confirm({
-          title: '璇风‘璁�',
+          title: window.GLOB.dict['exec_sure'] || '璇风‘璁�',
           content: msg,
+          okText: window.GLOB.dict['ok'] || '纭畾',
+          cancelText: window.GLOB.dict['cancel'] || '鍙栨秷',
           onOk() {
             return new Promise(resolve => {
               Api.genericInterface(unCheckParam).then(result => {
@@ -2230,7 +2191,7 @@
    */
   execSuccess = (res = {}) => {
     const { btn } = this.props
-    const { autoMatic } = this.state
+    const { autoMatic, dict } = this.state
 
     if (btn.resetForms) {
       let data = {}
@@ -2265,6 +2226,17 @@
     }
 
     let sign = ''
+    let focusField = ''
+
+    if (/@focus:[a-z0-9_]+@/i.test(res.message)) {
+      let val = res.message.match(/@focus:[a-z0-9_]+@/i)
+      res.message = res.message.replace(/@focus:[a-z0-9_]+@/i, '')
+      focusField = val ? val[0].replace(/@focus:|@/ig, '') : ''
+
+      if (!res.message) {
+        res.ErrCode = '-1'
+      }
+    }
     if (/^@speak@/i.test(res.message)) {
       res.message = res.message.replace(/^@speak@/i, '')
       let val = res.message.match(/<<.*>>/)
@@ -2280,7 +2252,8 @@
       if (!res.message) {
         res.ErrCode = '-1'
       }
-    } else if (/@close_tab@|@close_popup@|@goback@|@no_target_menu@/i.test(res.message)) {
+    }
+    if (/@close_tab@|@close_popup@|@goback@|@no_target_menu@/i.test(res.message)) {
       sign = res.message.match(/@close_tab@|@close_popup@|@goback@|@no_target_menu@/i)[0].toLowerCase()
       res.message = res.message.replace(/@close_tab@|@close_popup@|@goback@|@no_target_menu@/i, '')
     }
@@ -2300,20 +2273,21 @@
       if (btn.formType !== 'counter' || res.message) {
         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') { // 鎵ц鎴愬姛
-      let msg = res.message || '鎵ц鎴愬姛锛�'
+      let msg = res.message || dict['exc_success'] || '鎵ц鎴愬姛锛�'
       if (/\n|\r/.test(msg)) {
         msg = msg.replace(/\n|\r/ig, '<br/>')
         msg = <span dangerouslySetInnerHTML={{__html: msg}}></span>
       }
       Modal.success({
         title: msg,
+        okText: dict['got_it'] || '鐭ラ亾浜�',
         onOk: () => {
-          this.successContinue(sign, id)
+          this.successContinue(sign, id, res, focusField)
         }
       })
       return
@@ -2321,12 +2295,16 @@
 
     }
 
-    this.successContinue(sign, id)
+    this.successContinue(sign, id, res, focusField)
   }
 
-  successContinue = (sign, id) => {
+  successContinue = (sign, id, res, focusField) => {
     const { btn } = this.props
     const { btnconfig } = this.state
+
+    if (focusField) {
+      MKEmitter.emit('resetFocus', btn.uuid, focusField)
+    }
 
     this.setState({
       loadingNumber: '',
@@ -2345,12 +2323,8 @@
       tabId = btn.refreshTab[btn.refreshTab.length - 1]
     }
 
-    if (btn.formCache === 'clear') { // 娓呴櫎琛ㄥ崟缂撳瓨
-      window.GLOB.CacheMap = new Map()
-    }
-
     if (tabId && btn.$MenuID === tabId) { // 鍒锋柊褰撳墠鑿滃崟鏃讹紝鍋滄鍏朵粬鎿嶄綔
-      MKEmitter.emit('reloadMenuView', tabId, 'table')
+      MKEmitter.emit('reloadMenuView', tabId)
       return
     }
 
@@ -2392,7 +2366,7 @@
     }
 
     if (tabId) {
-      MKEmitter.emit('reloadMenuView', tabId, 'table')
+      MKEmitter.emit('reloadMenuView', tabId)
     }
     
     if (btn.switchTab && btn.switchTab.length > 0) {
@@ -2428,6 +2402,34 @@
 
     if (btn.execSuccess === 'popclose' && btn.$tabId) { // 鏍囩鍏抽棴鍒锋柊
       MKEmitter.emit('refreshPopButton', btn.$tabId)
+    }
+
+    if (btn.verify && btn.verify.linkEnable === 'true') {
+      let url = ''
+      if (window.GLOB.systemType === 'production') {
+        url = btn.verify.linkProUrl
+        if (!url) {
+          notification.warning({
+            top: 92,
+            message: window.GLOB.dict['no_prod_link'] || '灏氭湭璁剧疆姝e紡绯荤粺閾炬帴鍦板潃锛�',
+            duration: 5
+          })
+          return
+        }
+      } else {
+        url = btn.verify.linkUrl
+      }
+
+      if (/@/.test(url)) {
+        Object.keys(res).forEach(key => {
+          url = url.replace(new RegExp('@' + key + '@', 'ig'), res[key])
+        })
+      }
+      if (!/^http/.test(url)) {
+        url = window.location.origin + url
+      }
+
+      window.open(url)
     }
   }
 
@@ -2510,10 +2512,30 @@
   }
 
   sendWxMessage = (verify, id) => {
-    if (!window.GLOB.nginx) {
+    let domain = window.GLOB.baseurl
+    let appId = window.GLOB.WXAppID || ''
+
+    if (verify.wxAppId && verify.wxAppId !== appId) {
+      appId = verify.wxAppId
+      if (!window.GLOB.WXApps || window.GLOB.WXApps.findIndex(item => item.appId === verify.wxAppId) === -1) {
+        notification.warning({
+          top: 92,
+          message: '鎸夐挳鍏宠仈鍏紬鍙蜂笉鍦ㄥ彲鐢ㄥ垪琛ㄤ腑锛岃閲嶆柊淇濆瓨鎸夐挳閰嶇疆锛�',
+          duration: 5
+        })
+        return
+      }
+    }
+    
+    if (['8IFltwzyKcu15iA8fqSyb6m-pMa88a3ZTu0No3vDHgo', 'LOB-bbt9jVncGh7IOAUdESh1Sgzcbt62UwOqSqcK9ok'].includes(verify.wxTemplateId) && window.GLOB.sysType !== 'cloud') {
+      domain = 'https://cloud.mk9h.cn/'
+      appId = 'wx4d8a34c8d4494872'
+    }
+
+    if (!appId) {
       notification.warning({
         top: 92,
-        message: 'nginx鏈嶅姟灏氭湭寮�鍚紝涓嶅彲鍙戦�佹ā鏉挎秷鎭��',
+        message: '灏氭湭娣诲姞鍏紬鍙稩D锛屼笉鍙彂閫佹ā鏉挎秷鎭��',
         duration: 5
       })
       return
@@ -2527,13 +2549,6 @@
     param.LText = Utils.getuuid()
     param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
     param.secretkey = Utils.encrypt(param.LText, param.timestamp)
-
-    let domain1 = ''
-    let domain2 = ''
-    if (['8IFltwzyKcu15iA8fqSyb6m-pMa88a3ZTu0No3vDHgo', 'LOB-bbt9jVncGh7IOAUdESh1Sgzcbt62UwOqSqcK9ok'].includes(verify.wxTemplateId) && window.GLOB.sysType !== 'cloud') {
-      domain1 = 'https://cloud.mk9h.cn/'
-      domain2 = 'https://cloud.mk9h.cn:8443/'
-    }
 
     Api.genericInterface(param).then(res => {
       // res.send_data = [{openid: 'o2E7gvoSFvQRG7I8_gZxf4y3ONkQ', send_id: Utils.getuuid(), p1: '010000000001', p2: '鏄庣', p3: 'dddd', p4: '椤洪', p5: '鎴愬姛'}]
@@ -2561,9 +2576,9 @@
 
       if (verify.wxNoteLink === 'url' && verify.wxNoteLinkUrl) {
         _param.url = verify.wxNoteLinkUrl
-      } else if (verify.wxNoteLink === 'miniProgram' && window.GLOB.WXminiAppID) {
+      } else if (verify.wxNoteLink === 'miniProgram' && (window.GLOB.WXminiAppID || verify.wxNoteMiniId)) {
         _param.miniprogram = {
-          appid: window.GLOB.WXminiAppID,
+          appid: verify.wxNoteMiniId || window.GLOB.WXminiAppID,
           pagepath: '/pages/index/index'
         }
 
@@ -2597,62 +2612,63 @@
         return m
       })
 
-      Api.wxAccessToken(domain1).then(res => {
-        if (!res.oa_access_token) return
-  
-        params.forEach(n => {
-          Api.wxNginxRequest(`${domain2}cgi-bin/message/template/send?access_token=${res.oa_access_token}`, 'post', JSON.stringify(n)).then(re => {
-            if (verify.wxNoteCallback === 'true') {
-              let msg = re.errmsg || ''
+      // cgi-bin/message/template/send
+      params.forEach(n => {
+        Api.directRequest({
+          url: domain + 'wechat/send?appid=' + appId,
+          method: 'post',
+          data: JSON.stringify(n)
+        }).then(re => {
+          if (verify.wxNoteCallback === 'true') {
+            let msg = re.errmsg || ''
 
-              if (msg.length > 50) {
-                msg = msg.substr(0, 50)
-              }
-
-              let _p = {
-                func: 's_get_sms_weixin_local_suc_err',
-                upid: id,
-                send_id: n.client_msg_id || '',
-                status_result: re.errcode === 0 ? 'S' : 'E',
-                errcode: re.errcode,
-                msg_result: msg
-              }
-
-              _p.LText = Utils.getuuid()
-              _p.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
-              _p.secretkey = Utils.encrypt(_p.LText, _p.timestamp)
-
-              Api.genericInterface(_p).then(result => {
-                if (!result.status) {
-                  notification.warning({
-                    top: 92,
-                    message: result.message,
-                    duration: 5
-                  })
-                }
-              })
-            } else if (re.errcode !== 0 && re.errmsg) {
-              let msgs = [
-                {errcode: -1, errmsg: '绯荤粺绻佸繖锛岃绋嶅�欏啀璇�'},
-                {errcode: 40001, errmsg: 'access_token 鏃犳晥'},
-                {errcode: 40003, errmsg: '涓嶅悎娉曠殑 OpenID'},
-                {errcode: 40014, errmsg: '涓嶅悎娉曠殑 access_token'},
-                {errcode: 40033, errmsg: '涓嶅悎娉曠殑璇锋眰瀛楃'},
-                {errcode: 43004, errmsg: '闇�瑕佹帴鏀惰�呭叧娉�'},
-                {errcode: 43019, errmsg: '闇�瑕佸皢鎺ユ敹鑰呬粠榛戝悕鍗曚腑绉婚櫎'},
-                {errcode: 50005, errmsg: '鐢ㄦ埛鏈叧娉ㄥ叕浼楀彿'}
-              ]
-
-              let msg = msgs.filter(m => m.errcode === re.errcode)[0]
-              msg = msg || re
-
-              notification.warning({
-                top: 92,
-                message: msg.errmsg,
-                duration: 5
-              })
+            if (msg.length > 50) {
+              msg = msg.substr(0, 50)
             }
-          })
+
+            let _p = {
+              func: 's_get_sms_weixin_local_suc_err',
+              upid: id,
+              send_id: n.client_msg_id || '',
+              status_result: re.errcode === 0 ? 'S' : 'E',
+              errcode: re.errcode,
+              msg_result: msg
+            }
+
+            _p.LText = Utils.getuuid()
+            _p.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
+            _p.secretkey = Utils.encrypt(_p.LText, _p.timestamp)
+
+            Api.genericInterface(_p).then(result => {
+              if (!result.status) {
+                notification.warning({
+                  top: 92,
+                  message: result.message,
+                  duration: 5
+                })
+              }
+            })
+          } else if (re.errcode !== 0 && re.errmsg) {
+            let msgs = [
+              {errcode: -1, errmsg: '绯荤粺绻佸繖锛岃绋嶅�欏啀璇�'},
+              {errcode: 40001, errmsg: 'access_token 鏃犳晥'},
+              {errcode: 40003, errmsg: '涓嶅悎娉曠殑 OpenID'},
+              {errcode: 40014, errmsg: '涓嶅悎娉曠殑 access_token'},
+              {errcode: 40033, errmsg: '涓嶅悎娉曠殑璇锋眰瀛楃'},
+              {errcode: 43004, errmsg: '闇�瑕佹帴鏀惰�呭叧娉�'},
+              {errcode: 43019, errmsg: '闇�瑕佸皢鎺ユ敹鑰呬粠榛戝悕鍗曚腑绉婚櫎'},
+              {errcode: 50005, errmsg: '鐢ㄦ埛鏈叧娉ㄥ叕浼楀彿'}
+            ]
+
+            let msg = msgs.filter(m => m.errcode === re.errcode)[0]
+            msg = msg || re
+
+            notification.warning({
+              top: 92,
+              message: msg.errmsg,
+              duration: 5
+            })
+          }
         })
       })
     })
@@ -2928,7 +2944,7 @@
    */
   execError = (res = {}) => {
     const { btn } = this.props
-    const { autoMatic } = this.state
+    const { autoMatic, dict } = this.state
 
     if (this.preCallback) {
       this.setState({
@@ -2940,7 +2956,7 @@
     } else if (autoMatic) {
       notification.error({
         top: 92,
-        message: res.message || '鎵ц澶辫触锛�',
+        message: res.message || dict['exc_fail'] || '鎵ц澶辫触锛�',
         duration: 10
       })
 
@@ -2980,13 +2996,14 @@
     }
 
     if (res.ErrCode === 'E') {
-      let msg = res.message || '鎵ц澶辫触锛�'
+      let msg = res.message || dict['exc_fail'] || '鎵ц澶辫触锛�'
       if (/\n|\r/.test(msg)) {
         msg = msg.replace(/\n|\r/ig, '<br/>')
         msg = <span dangerouslySetInnerHTML={{__html: msg}}></span>
       }
       Modal.error({
         title: msg,
+        okText: dict['got_it'] || '鐭ラ亾浜�',
         onOk: () => {
           this.errorContinue(sign)
         }
@@ -2995,18 +3012,18 @@
     } 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'] || '鎵ц澶辫触锛�')
     } else if (res.ErrCode === '-2') {
       this.setState({
         loadingNumber: '',
@@ -3043,8 +3060,47 @@
     } else if (btn.execError === 'closepoptab' || sign === '@close_popup@') {
       MKEmitter.emit('popclose')
     } else if (btn.execError !== 'never') {
+      let tabId = ''
+      if (btn.refreshTab && btn.refreshTab.length > 0) {
+        tabId = btn.refreshTab[btn.refreshTab.length - 1]
+      }
+      if (tabId && btn.$MenuID === tabId) { // 鍒锋柊褰撳墠鑿滃崟鏃讹紝鍋滄鍏朵粬鎿嶄綔
+        MKEmitter.emit('reloadMenuView', tabId)
+        return
+      }
+
       MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execError, btn, '', this.state.selines)
+
+      if (btn.syncComponentId) {
+        if (btn.syncComponentId === 'multiComponent') {
+          btn.syncComponentIds.forEach((id, i) => {
+            setTimeout(() => {
+              if (/\$focus/.test(id)) {
+                MKEmitter.emit('reloadData', id.split('$')[0], id.split('$')[1])
+              } else {
+                MKEmitter.emit('reloadData', id)
+              }
+            }, 20 * i)
+          })
+        } else if (/\$focus/.test(btn.syncComponentId)) {
+          MKEmitter.emit('reloadData', btn.syncComponentId.split('$')[0], btn.syncComponentId.split('$')[1])
+        } else {
+          if (btn.syncDelay) {
+            this.delayTimer && clearTimeout(this.delayTimer)
+            this.delayTimer = setTimeout(() => {
+              MKEmitter.emit('reloadData', btn.syncComponentId)
+            }, btn.syncDelay)
+          } else {
+            MKEmitter.emit('reloadData', btn.syncComponentId)
+          }
+        }
+      }
+
+      if (tabId) {
+        MKEmitter.emit('reloadMenuView', tabId)
+      }
     }
+
     if (btn.OpenType === 'form') {
       let data = this.props.selectedData && this.props.selectedData[0] ? this.props.selectedData[0] : null
 
@@ -3199,8 +3255,8 @@
   }
 
   modelconfirm = () => {
-    const { btn, BID } = this.props
-    const { btnconfig, selines } = this.state
+    const { BID } = this.props
+    const { btnconfig, selines, dict } = this.state
     let _this = this
 
     let result = []
@@ -3344,7 +3400,9 @@
       this.execSubmit(selines, () => {}, result)
     } else {
       confirm({
-        title: btn.tipTitle || '纭畾瑕佹墽琛屽悧?',
+        title: btnconfig.setting.tipTitle || dict['exec_sure'] || '纭畾瑕佹墽琛屽悧?',
+        okText: dict['ok'] || '纭畾',
+        cancelText: dict['cancel'] || '鍙栨秷',
         onOk() {
           return new Promise(resolve => {
             _this.execSubmit(selines, resolve, result)
@@ -3363,7 +3421,7 @@
    */
   getModels = () => {
     const { BID, btn, BData } = this.props
-    const { btnconfig, visible } = this.state
+    const { btnconfig, visible, dict } = this.state
 
     if (!btnconfig || !btnconfig.setting) return null
 
@@ -3399,10 +3457,10 @@
           />
           <div className="ant-drawer-footer" style={{ position: 'absolute', zIndex: 1, right: 0, bottom: 0, width: '100%', borderTop: '1px solid #e9e9e9', padding: '10px 16px', background: '#fff', textAlign: 'right'}}>
             <Button onClick={this.handleCancel} style={{ marginRight: 8 }}>
-              {btnconfig.setting.formType !== 'check' ? '鍙栨秷' : '鍏抽棴'}
+              {btnconfig.setting.formType !== 'check' ? dict['cancel'] || '鍙栨秷' : dict['close'] || '鍏抽棴'}
             </Button>
             {btnconfig.setting.formType !== 'check' ? <Button onClick={this.handleOk} loading={this.state.confirmLoading} type="primary">
-              纭畾
+              {dict['ok'] || '纭畾'}
             </Button> : null}
           </div>
         </Drawer>
@@ -3430,6 +3488,8 @@
           wrapClassName={'action-modal' + (btnconfig.setting.moveable === 'true' ? ' moveable-modal modal-' + btn.uuid : '')}
           visible={visible}
           width={width}
+          okText={dict['ok'] || '纭畾'}
+          cancelText={dict['cancel'] || '鍙栨秷'}
           onOk={this.handleOk}
           maskStyle={btnconfig.setting.moveable === 'true' ?  {backgroundColor: 'rgba(0, 0, 0, 0.15)'} : null}
           confirmLoading={this.state.confirmLoading}
@@ -3494,7 +3554,7 @@
 
   changeLineCount = (count) => {
     const { btn, selectedData } = this.props
-    const { disabled } = this.state
+    const { disabled, dict } = this.state
 
     if (disabled) return
 
@@ -3504,7 +3564,7 @@
       // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾暟鎹�
       notification.warning({
         top: 92,
-        message: '璇烽�夋嫨琛岋紒',
+        message: dict['select_row'] || '璇烽�夋嫨琛岋紒',
         duration: 5
       })
       return
@@ -3512,7 +3572,7 @@
       // 闇�瑕侀�夋嫨鍗曡鏃讹紝鏍¢獙鏁版嵁
       notification.warning({
         top: 92,
-        message: '璇烽�夋嫨鍗曡鏁版嵁锛�',
+        message: dict['select_single_row'] || '璇烽�夋嫨鍗曡鏁版嵁锛�',
         duration: 5
       })
       return
@@ -3543,42 +3603,25 @@
     }
 
     let label = ''
-    let icon = ''
-    let type = 'link'
-    let className = ''
 
-    if (btn.show === 'button') {
-      label = name || btn.label
-      icon = btn.icon || ''
-    } else if (btn.show === 'link') {
-      label = <span>{name || 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')
-    }
-
-    if (loadingNumber && btn.progress !== 'progressbar' && btn.$toolbtn && (!btn.show || btn.show === 'button')) {
-      label = (loadingNumber ? `(${loadingNumber})` : '') + btn.label
+      label = <span>{!loading && btn.icon ? <MkIcon style={{marginRight: '8px'}} type={btn.icon} /> : ''}{name || btn.label}</span>
     }
 
     let BTN = <Button
-      type={type}
-      icon={icon}
+      type="link"
       id={'button' + btn.uuid}
       title={disabled ? (btn.reason || '') : (btn.show === 'icon' ? btn.label : '')}
       loading={loading}
       disabled={disabled}
       style={btn.style}
-      className={className}
+      className={btn.hover || ''}
       onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
     >{label}</Button>
 

--
Gitblit v1.8.0