From ba9e189dd33c8d48f7f4ac36bcefeef9afb426f8 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 17 七月 2023 23:40:49 +0800
Subject: [PATCH] 2023-07-17

---
 src/tabviews/zshare/actionList/normalbutton/index.jsx |  332 +++++++++++++++++++++++++++++++-----------------------
 1 files changed, 190 insertions(+), 142 deletions(-)

diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index dad5061..9ac4aef 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -1,8 +1,10 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 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 md5 from 'md5'
 
 import Api from '@/api'
 import Utils, { getSysDefaultSql } from '@/utils/utils.js'
@@ -61,7 +63,7 @@
     
     if (btn.OpenType === 'form') {
       let data = selectedData && selectedData[0] ? selectedData[0] : null
-      if (btn.formType === 'counter') {
+      if (btn.formType === 'counter' || btn.formType === 'count_line') {
         let count = 0
         if (data && data[btn.field]) {
           count = +data[btn.field]
@@ -108,7 +110,7 @@
 
     if (btn.OpenType === 'form') {
       let data = nextProps.selectedData && nextProps.selectedData[0] ? nextProps.selectedData[0] : null
-      if (btn.formType === 'counter') {
+      if (btn.formType === 'counter' || btn.formType === 'count_line') {
         let count = 0
         if (data && data[btn.field]) {
           count = +data[btn.field]
@@ -329,6 +331,9 @@
         return
       }
     } else if (!['inner', 'outer', 'system', 'custom'].includes(btn.intertype)) {
+      if (btn.OpenType === 'form' && btn.formType === 'count_line') {
+        return
+      }
       // 鎺ュ彛绫诲瀷閿欒
       notification.warning({
         top: 92,
@@ -744,8 +749,10 @@
     let _params = []
 
     if ( btn.Ot === 'notRequired' || btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce' ) {
-      let param = {
-        func: btn.innerFunc || ''
+      let param = {}
+
+      if (btn.innerFunc) {
+        param.func = btn.innerFunc
       }
 
       if (this.props.BID) {
@@ -758,9 +765,7 @@
         let ids = data.map(d => { return d[setting.primaryKey] || ''})
         ids = ids.filter(Boolean)
         primaryId = ids.join(',')
-      }
 
-      if (setting.primaryKey) {
         param[setting.primaryKey] = primaryId // 璁剧疆涓婚敭鍙傛暟
       }
 
@@ -819,93 +824,6 @@
           param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
           param.secretkey = Utils.encrypt(param.LTextOut, param.timestamp)
           param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
-        }
-
-        if (retmsg) {
-          param.$callbacksql = this.getSysDeclareSql(btn, formdata, cell, columns, primaryId, this.props.BID)
-        }
-
-        return param
-      })
-    }
-
-    return _params
-  }
-
-  getLineParam = (data, formdata, retmsg) => {
-    const { setting, btn, columns } = this.props
-    let _params = []
-
-    if (btn.Ot === 'notRequired') {
-      if (retmsg) {
-        let param = {
-          $callbacksql: this.getSysDeclareSql(btn, formdata, data[0], columns, '', this.props.BID)
-        }
-        
-        _params.push(param)
-      } else {
-        _params.push({})
-      }
-    } else if ( btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce' ) {
-      let param = {}
-
-      if (this.props.BID) {
-        param.BID = this.props.BID
-      }
-      
-      let primaryId = ''
-
-      if ((btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') && setting.primaryKey) {
-        let ids = data.map(d => { return d[setting.primaryKey] || ''})
-        ids = ids.filter(Boolean)
-        primaryId = ids.join(',')
-      }
-
-      if (setting.primaryKey) {
-        param[setting.primaryKey] = primaryId // 璁剧疆涓婚敭鍙傛暟
-      }
-
-      if (btn.OpenType === 'pop' || btn.OpenType === 'formSubmit' || btn.OpenType === 'form') { // 琛ㄥ崟
-        formdata.forEach(_data => {
-          param[_data.key] = _data.value
-        })
-      }
-
-      if (retmsg) {
-        param.$callbacksql = this.getSysDeclareSql(btn, formdata, data[0], columns, primaryId, this.props.BID)
-      }
-
-      _params.push(param)
-    } else if (btn.Ot === 'required') {
-      _params = data.map((cell, index) => {
-        let param = {}
-
-        if (this.props.BID) {
-          param.BID = this.props.BID
-        }
-
-        let primaryId = setting.primaryKey ? cell[setting.primaryKey] || '' : ''
-
-        if (btn.OpenType === 'pop') { // 琛ㄥ崟
-          if (index !== 0) {
-            let _cell = {}
-            Object.keys(cell).forEach(key => {
-              _cell[key.toLowerCase()] = cell[key]
-            })
-            formdata = formdata.map(_data => {
-              if (_data.readin && _cell.hasOwnProperty(_data.key.toLowerCase())) {
-                _data.value = _cell[_data.key.toLowerCase()]
-              }
-              return _data
-            })
-          }
-
-          formdata.forEach(_data => {
-            param[_data.key] = _data.value
-          })
-        }
-        if (setting.primaryKey) {
-          param[setting.primaryKey] = primaryId
         }
 
         if (retmsg) {
@@ -1186,7 +1104,8 @@
             this.execError(res)
           }
           _resolve()
-        }, () => {
+        }, (error) => {
+          if (error && error.ErrCode === 'LoginError') return
           this.updateStatus()
           _resolve()
         })
@@ -1199,7 +1118,8 @@
                   this.triggerNote(res) // 娑堟伅
                 }
                 resolve(res)
-              }, () => {
+              }, (error) => {
+                if (error && error.ErrCode === 'LoginError') return
                 this.updateStatus()
                 _resolve()
               })
@@ -1226,7 +1146,7 @@
           _resolve()
         })
       } else { // 瓒呭嚭20涓姹傛椂寰幆鎵ц
-        if (btn.progress === 'progressbar' && btn.$toolbtn && params.length > 1) {
+        if (btn.progress === 'progressbar' && params.length > 1) {
           this.setState({
             loadingTotal: params.length
           })
@@ -1243,13 +1163,11 @@
           item.script_type = 'Y'
           return item
         })
-      } else if (btn.procMode === 'inner') {
-        _params = this.getInnerParam(data, formdata, btn.callbackType === 'script')
       } else {
-        _params = this.getLineParam(data, formdata, btn.callbackType === 'script')
+        _params = this.getInnerParam(data, formdata, btn.callbackType === 'script')
       }
 
-      if (_params.length > 1 && btn.progress === 'progressbar' && btn.$toolbtn) {
+      if (_params.length > 1 && btn.progress === 'progressbar') {
         this.setState({
           loadingTotal: _params.length
         })
@@ -1266,13 +1184,11 @@
           item.script_type = 'Y'
           return item
         })
-      } else if (btn.procMode === 'inner') {
-        params = this.getInnerParam(data, formdata, btn.callbackType === 'script')
       } else {
-        params = this.getLineParam(data, formdata, btn.callbackType === 'script')
+        params = this.getInnerParam(data, formdata, btn.callbackType === 'script')
       }
 
-      if (params.length > 1 && btn.progress === 'progressbar' && btn.$toolbtn) {
+      if (params.length > 1 && btn.progress === 'progressbar') {
         this.setState({
           loadingTotal: params.length
         })
@@ -1295,31 +1211,59 @@
     let record = {
       BID: param.BID || '',
       ID: param.ID || '',
-      callbacksql: param.$callbacksql || ''
+      callbacksql: param.$callbacksql || '',
+      mk_api_key: ''
     }
 
     delete param.$callbacksql
 
-    if (!param.func) {
+    if (param.$pice) {
+      record = param.$record
+
+      delete param.$record
+
+      this.customOuterRequest(params, param, record, _resolve)
+      return
+    } else if (!param.func) {
       this.customOuterRequest(params, param, record, _resolve)
       return
     }
 
     Api.genericInterface(param).then(res => {
+      record.mk_api_key = res.mk_api_key || ''
+
       if (res.status) {
-        if ((res.mk_ex_invoke === 'false' || res.mk_ex_invoke === false) && params.length === 0) {
+        if (res.mk_ex_invoke + '' === 'false' && params.length === 0) {
           this.execSuccess(res)
           _resolve()
-        } else if ((res.mk_ex_invoke === 'false' || res.mk_ex_invoke === false) && params.length > 0) {
+        } else if (res.mk_ex_invoke + '' === 'false' && params.length > 0) {
           this.customLoopRequest(params, _resolve)
         } else {
-          this.customOuterRequest(params, res, record, _resolve)
+          if (res.mk_ex_data) { // 鏁版嵁鍒嗘壒鎵ц
+            if (Array.isArray(res.mk_ex_data) && res.mk_ex_data.length > 0) {
+              let pices = res.mk_ex_data.map(item => {
+                item.$pice = true
+                item.$record = record
+                return item
+              })
+              params = [...pices, ...params]
+              this.customLoopRequest(params, _resolve)
+            } else if (params.length === 0) {
+              this.execSuccess(res)
+              _resolve()
+            } else {
+              this.customLoopRequest(params, _resolve)
+            }
+          } else {
+            this.customOuterRequest(params, res, record, _resolve)
+          }
         }
       } else {
         this.execError(res)
         _resolve()
       }
-    }, () => {
+    }, (error) => {
+      if (error && error.ErrCode === 'LoginError') return
       this.updateStatus()
       _resolve()
     })
@@ -1344,21 +1288,26 @@
       url = btn.interface
     }
 
-    let mkey = result.mk_api_key || ''
-
-    delete result.mk_ex_invoke
-    delete result.status
-    delete result.message
-    delete result.ErrCode
-    delete result.ErrMesg
-    delete result.mk_api_key
-
+    
     let param = {}
 
-    Object.keys(result).forEach(key => {
-      key = key.replace(/^mk_/ig, '')
-      param[key] = result[key]
-    })
+    if (result.$pice) {
+      delete result.$pice
+
+      param = {...result}
+    } else {
+      delete result.mk_ex_invoke
+      delete result.status
+      delete result.message
+      delete result.ErrCode
+      delete result.ErrMesg
+      delete result.mk_api_key
+
+      Object.keys(result).forEach(key => {
+        key = key.replace(/^mk_/ig, '')
+        param[key] = result[key]
+      })
+    }
 
     let _params = {
       url: url,
@@ -1367,15 +1316,29 @@
 
     if (btn.cross === 'true') {
       if (JSON.stringify(param) !== '{}') {
-        _params.data = param
+        if (btn.stringify === 'qs') {
+          _params.data = qs.stringify(param)
+        } else if (btn.stringify === 'JSON') {
+          _params.data = param
+        } else {
+          _params.data = JSON.stringify(param)
+        }
       }
     } else {
       let _url = url
-      if (_params.method === 'get' && JSON.stringify(param) !== '{}') {
-        let keys = Object.keys(param).map(key => `${key}=${param[key]}`)
-        _url = _url + '?' + keys.join('&')
-      } else if (_params.method === 'post') {
-        _params.data = param
+      if (JSON.stringify(param) !== '{}') {
+        if (_params.method === 'get') {
+          let keys = Object.keys(param).map(key => `${key}=${param[key]}`)
+          _url = _url + '?' + keys.join('&')
+        } else if (_params.method === 'post') {
+          if (btn.stringify === 'qs') {
+            _params.data = qs.stringify(param)
+          } else if (btn.stringify === 'JSON') {
+            _params.data = param
+          } else {
+            _params.data = JSON.stringify(param)
+          }
+        }
       }
   
       _url = _url.replace(/&/ig, '%26')
@@ -1383,6 +1346,12 @@
       _params.url = '/trans/redirect?rd=' + _url + '&method=' + _params.method
 
       _params.method = 'post'
+    }
+
+    if (btn.ContentType) {
+      _params.headers = {
+        'Content-Type': btn.ContentType
+      }
     }
 
     Api.directRequest(_params).then(res => {
@@ -1394,7 +1363,7 @@
         }
 
         let result = {
-          mk_api_key: mkey,
+          mk_api_key: record.mk_api_key,
           $ErrCode: 'E',
           $ErrMesg: error
         }
@@ -1404,12 +1373,22 @@
         if (Array.isArray(res)) {
           res = { data: res }
         }
-        res.mk_api_key = mkey
+
+        if (btn.outerBlacklist) {
+          let list = btn.outerBlacklist.split(',').map(m => m.toLowerCase())
+          Object.keys(res).forEach(key => {
+            if (list.includes(key.toLowerCase())) {
+             delete res[key]
+            }
+          })
+        }
+        
+        res.mk_api_key = record.mk_api_key
         this.customCallbackRequest(params, res, record, _resolve)
       }
     }, (e) => {
       let result = {
-        mk_api_key: mkey,
+        mk_api_key: record.mk_api_key,
         $ErrCode: 'E',
         $ErrMesg: e && e.statusText ? e.statusText : ''
       }
@@ -1497,7 +1476,8 @@
         this.execError(res)
         _resolve()
       }
-    }, () => {
+    }, (error) => {
+      if (error && error.ErrCode === 'LoginError') return
       this.updateStatus()
       _resolve()
     })
@@ -1546,14 +1526,14 @@
           if (typeof(val) === 'string') {
             val = val.replace(/'/ig, '"')
           }
-          keys.push(key)
+          keys.push('[' + key + ']')
           vals.push(`'${val}'`)
         }
       })
 
       lines.push({
         table: tb,
-        insert: `Insert into ${pre}${tb} (${keys.join(',')},mk_level,mk_id,mk_bid)`,
+        insert: `Insert into ${pre}${tb} (${keys.join(',')},[mk_level],[mk_id],[mk_bid])`,
         select: `Select ${vals.join(',')},'${level}','${id}','${bid}'`
       })
 
@@ -1712,7 +1692,8 @@
         this.execError(res)
         _resolve()
       }
-    }, () => {
+    }, (error) => {
+      if (error && error.ErrCode === 'LoginError') return
       this.updateStatus()
       _resolve()
     })
@@ -1775,7 +1756,8 @@
         this.execError(res)
         _resolve()
       }
-    }, () => {
+    }, (error) => {
+      if (error && error.ErrCode === 'LoginError') return
       this.updateStatus()
       _resolve()
     })
@@ -1837,7 +1819,8 @@
         this.execError(res)
         _resolve()
       }
-    }, () => {
+    }, (error) => {
+      if (error && error.ErrCode === 'LoginError') return
       this.updateStatus()
       _resolve()
     })
@@ -1907,7 +1890,8 @@
         return
       }
       this.outerCallbackRequest(params, res, record, outParam, _resolve)
-    }, () => {
+    }, (error) => {
+      if (error && error.ErrCode === 'LoginError') return
       this.outerCallbackRequest(params, {status: false, message: 500, ErrCode: 'E', ErrMesg: 500}, record, outParam, _resolve)
     })
   }
@@ -2212,6 +2196,10 @@
 
       MKEmitter.emit('modifyTabs', newtab, true)
     }
+
+    if (btn.execSuccess === 'popclose' && btn.$tabId) { // 鏍囩鍏抽棴鍒锋柊
+      MKEmitter.emit('refreshPopButton', btn.$tabId)
+    }
   }
 
   triggerNote = (res) => {
@@ -2338,7 +2326,7 @@
         if (!res.oa_access_token) return
   
         params.forEach(n => {
-          Api.wxNginxRequest(`${domain2}cgi-bin/message/template/send?access_token=${res.oa_access_token}`, 'post', n).then(re => {
+          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 || ''
 
@@ -2499,6 +2487,29 @@
             duration: 5
           })
         }
+      }, (error) => {
+        if (error && error.ErrCode === 'LoginError') {
+          let param = {
+            func: 's_visitor_login',
+            timestamp: moment().format('YYYY-MM-DD HH:mm:ss'), 
+            SessionUid: 'bh0bapabtd45epsgra79segbch6c1ibk',
+            TypeCharOne: 'pc',
+            appkey: '202004041613277377A6A2456D34A4948AE84'
+          }
+
+          param.LText = md5(window.btoa('bh0bapabtd45epsgra79segbch6c1ibk' + param.timestamp))
+          param.secretkey = md5(param.LText + 'mingke' + param.timestamp)
+
+          let params = {
+            url: 'https://sso.mk9h.cn/webapi/dologon',
+            method: 'post',
+            data: JSON.stringify(param)
+          }
+
+          Api.directRequest(params)
+
+          return
+        }
       })
     })
   }
@@ -2606,6 +2617,10 @@
 
     if (window.GLOB.breakpoint) {
       MKEmitter.emit('refreshDebugTable')
+    }
+
+    if (btn.execError === 'popclose' && btn.$tabId) { // 鏍囩鍏抽棴鍒锋柊
+      MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
 
@@ -2995,6 +3010,37 @@
     })
   }
 
+  changeLineCount = (count) => {
+    const { btn, selectedData } = this.props
+    const { disabled } = this.state
+
+    if (disabled) return
+
+    let data = selectedData || []
+
+    if (data.length === 0) {
+      // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾暟鎹�
+      notification.warning({
+        top: 92,
+        message: this.state.dict['main.action.confirm.selectline'],
+        duration: 5
+      })
+      return
+    } else if (data.length !== 1) {
+      // 闇�瑕侀�夋嫨鍗曡鏃讹紝鏍¢獙鏁版嵁
+      notification.warning({
+        top: 92,
+        message: this.state.dict['main.action.confirm.selectSingleLine'],
+        duration: 5
+      })
+      return
+    }
+
+    this.setState({count}, () => {
+      MKEmitter.emit('refreshLineData', btn.$menuId, btn, data[0].$$uuid, count)
+    })
+  }
+
   render() {
     const { btn } = this.props
     const { loadingNumber, loadingTotal, loading, disabled, hidden, check, count } = this.state
@@ -3005,6 +3051,8 @@
         return <Switch loading={loading} checked={check} disabled={disabled || loading} title={disabled ? (btn.reason || '') : ''} onChange={(val,e) => {e.stopPropagation();this.actionTrigger()}} style={btn.style} className={btn.size === 'large' ? 'ant-switch-large' : ''} size={btn.size} checkedChildren={btn.openText || ''} unCheckedChildren={btn.closeText || ''}/>
       } else if (btn.formType === 'counter') {
         return <MkCounter count={count} disabled={disabled} btn={btn} onChange={this.changeCount}/>
+      } else if (btn.formType === 'count_line') {
+        return <MkCounter count={count} disabled={disabled} btn={btn} onChange={this.changeLineCount}/>
       } else if (btn.formType === 'radio') {
         return <Checkbox className={btn.checkType || ''} disabled={disabled || loading} title={disabled ? (btn.reason || '') : ''} checked={check} onChange={(e) => {e.stopPropagation();this.actionTrigger()}} style={btn.style}></Checkbox>
       } else {
@@ -3036,8 +3084,8 @@
       className = 'mk-btn mk-' + (btn.class || 'unset')
     }
 
-    if (loadingNumber && !loadingTotal && btn.$toolbtn && (!btn.show || btn.show === 'button')) {
-      label = (loadingNumber && !loadingTotal ? `(${loadingNumber})` : '') + btn.label
+    if (loadingNumber && btn.progress !== 'progressbar' && btn.$toolbtn && (!btn.show || btn.show === 'button')) {
+      label = (loadingNumber ? `(${loadingNumber})` : '') + btn.label
     }
 
     return <>

--
Gitblit v1.8.0