From b7c41fce93fbe30ac8334fc03eef700b1640bc15 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 06 二月 2020 15:16:38 +0800
Subject: [PATCH] 2020-02-06

---
 src/tabviews/tableshare/actionList/index.jsx |  429 ++++++++++++++++++++++-------------------------------
 1 files changed, 177 insertions(+), 252 deletions(-)

diff --git a/src/tabviews/tableshare/actionList/index.jsx b/src/tabviews/tableshare/actionList/index.jsx
index d624e27..a0ddc24 100644
--- a/src/tabviews/tableshare/actionList/index.jsx
+++ b/src/tabviews/tableshare/actionList/index.jsx
@@ -225,7 +225,6 @@
             param.secretkey = Utils.encrypt(param.LText, param.timestamp)
           }
         }
-        
 
         Api.genericInterface(param).then((res) => {
           if (res.status) {
@@ -236,7 +235,7 @@
           _resolve()
         })
       } else if (btn.Ot === 'required' || (btn.Ot === 'requiredOnce' && btn.OpenType === 'pop')) {
-        let deffers = data.map(cell => {
+        let _params = data.map(cell => {
           let param = {
             func: 'sPC_TableData_InUpDe',
             BID: this.props.BID
@@ -260,14 +259,13 @@
             if (btn.innerFunc) {
               param.func = btn.innerFunc
 
-              if (setting.primaryKey) {
-                param[setting.primaryKey] = primaryId
-              }
-
               formdata.forEach(_data => {
                 param[_data.key] = _data.value
               })
 
+              if (setting.primaryKey) {
+                param[setting.primaryKey] = primaryId
+              }
             } else if (btn.sql) {
               param.ID = primaryId
               param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, cell, logcolumns)) // 鏁版嵁婧�
@@ -276,30 +274,38 @@
             }
           }
 
-          return new Promise(resolve => {
-            Api.genericInterface(param).then(res => {
-              resolve(res)
+          return param
+        })
+
+        if (_params.length <= 20) {
+          let deffers = _params.map(param => {
+            return new Promise(resolve => {
+              Api.genericInterface(param).then(res => {
+                resolve(res)
+              })
             })
           })
-        })
-        Promise.all(deffers).then(result => {
-          let iserror = false
-          let errorMsg = ''
-          result.forEach(res => {
-            if (res.status) {
-              errorMsg = res
+          Promise.all(deffers).then(result => {
+            let iserror = false
+            let errorMsg = ''
+            result.forEach(res => {
+              if (res.status) {
+                errorMsg = res
+              } else {
+                iserror = true
+                errorMsg = res
+              }
+            })
+            if (!iserror) {
+              this.execSuccess(btn, errorMsg)
             } else {
-              iserror = true
-              errorMsg = res
+              this.execError(errorMsg, btn)
             }
+            _resolve()
           })
-          if (!iserror) {
-            this.execSuccess(btn, errorMsg)
-          } else {
-            this.execError(errorMsg, btn)
-          }
-          _resolve()
-        })
+        } else { // 瓒呭嚭20涓姹傛椂寰幆鎵ц
+          this.innerLoopRequest(_params, btn, _resolve)
+        }
       } else {
         this.actionSettingError()
         _resolve()
@@ -307,9 +313,6 @@
       }
     } else if (btn.intertype === 'outer') {
       /** *********************璋冪敤澶栭儴鎺ュ彛************************* */
-      let param = {
-        BID: this.props.BID
-      }
 
       if (!btn.interface) { // 鎺ュ彛鍦板潃涓嶅瓨鍦ㄦ椂鎶ラ敊
         this.actionSettingError()
@@ -317,7 +320,19 @@
         return
       }
 
+      let _params = [] // 璇锋眰鍙傛暟鏁扮粍
+
       if (btn.Ot === 'notRequired' || btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') {
+        let param = {
+          BID: this.props.BID
+        }
+
+        if (btn.OpenType === 'pop' && formdata) { // 琛ㄥ崟
+          formdata.forEach(_data => {
+            param[_data.key] = _data.value
+          })
+        }
+
         // 鑾峰彇id
         if (btn.Ot === 'notRequired') {
           
@@ -328,244 +343,37 @@
           param[setting.primaryKey] = ids.join(',')
         }
 
-        if (btn.OpenType === 'pop' && formdata) { // 琛ㄥ崟
-          formdata.forEach(_data => {
-            param[_data.key] = _data.value
-          })
-        }
-
-        let _outParam = null
-
-        new Promise(resolve => {
-          // 鍐呴儴璇锋眰
-          if (btn.innerFunc) {
-            param.func = btn.innerFunc
-            // 瀛樺湪鍐呴儴鍑芥暟鏃讹紝鏁版嵁棰勫鐞�
-            Api.genericInterface(param).then(res => {
-              if (res.status) {
-                delete res.ErrCode
-                delete res.ErrMesg
-                delete res.message
-                delete res.status
-  
-                if (btn.sysInterface === 'true') {
-                  res.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi
-                } else {
-                  res.rduri = btn.interface
-                }
-                // res.method = btn.method
-                if (btn.outerFunc) {
-                  res.func = btn.outerFunc
-                }
-                // 浣跨敤澶勭悊鍚庣殑鏁版嵁璋冪敤澶栭儴鎺ュ彛
-                resolve(res)
-              } else {
-                this.execError(res, btn)
-                _resolve()
-              }
-            })
-          } else {
-            // 涓嶅瓨鍦ㄥ唴閮ㄥ嚱鏁版椂锛岀敓鎴愬閮ㄨ姹傚弬鏁�
-            if (btn.sysInterface === 'true') {
-              param.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi
-            } else {
-              param.rduri = btn.interface
-            }
-            // param.method = btn.method
-            if (btn.outerFunc) {
-              param.func = btn.outerFunc
-            }
-            resolve(param)
-          }
-        }).then(res => {
-          if (!res) return
-          // 澶栭儴璇锋眰
-          _outParam = JSON.parse(JSON.stringify(res))
-
-          res.appkey = window.GLOB.appkey || '' // 澶栭儴璇锋眰鏃讹紝缁熶竴娣诲姞appkey
-
-          return Api.genericInterface(res)
-        }).then(response => {
-          if (!response) return
-          // 鍥炶皟璇锋眰
-          if (btn.callbackFunc) {
-            // 瀛樺湪鍥炶皟鍑芥暟鏃讹紝璋冪敤
-            delete response.ErrMesg
-            delete response.message
-            delete response.status
-
-            delete _outParam.rduri
-
-            response.func = btn.callbackFunc
-
-            let _callbackparam = {..._outParam, ...response}
-            return Api.genericInterface(_callbackparam)
-          } else {
-            if (response.status) {
-              this.execSuccess(btn, response)
-              _resolve()
-            } else {
-              this.execError(response, btn)
-              _resolve()
-            }
-          }
-        }).then(res => {
-          if (!res) return
-  
-          if (res.status) {
-            this.execSuccess(btn, res)
-          } else {
-            this.execError(res, btn)
-          }
-          _resolve()
-        })
-
+        _params.push(param)
       } else if (btn.Ot === 'required') {
         // 閫夋嫨澶氳锛屽惊鐜皟鐢�
 
-        new Promise(resolve => {
-          // 鍐呴儴璇锋眰
-          if (btn.innerFunc) {
-            let deffers = data.map(cell => {
-              let _param = {
-                BID: this.props.BID,
-                func: btn.innerFunc
-              }
-              if (setting.primaryKey) {
-                _param[setting.primaryKey] = cell[setting.primaryKey]
-              }
-              return new Promise(resolve => {
-                Api.genericInterface(_param).then(res => {
-                  resolve(res)
-                })
-              })
-            })
-            Promise.all(deffers).then(result => {
-              let iserror = false
-              let errorMsg = ''
-              result.forEach(res => {
-                if (!res.status) {
-                  iserror = true
-                  errorMsg = res.message
-                }
-              })
-              if (!iserror) {
-                resolve(result)
-              } else {
-                notification.error({
-                  top: 92,
-                  message: errorMsg,
-                  duration: 15
-                })
-                this.refreshdata(btn, 'error')
-                _resolve()
-              }
-            })
-          } else {
-            let params = data.map(cell => {
-              let _cell = {
-                BID: this.props.BID,
-              }
-              if (setting.primaryKey) {
-                _cell[setting.primaryKey] = cell[setting.primaryKey]
-              }
-
-              return _cell
-            })
-            resolve(params)
-          }
-        }).then(result => {
-          // 澶栭儴璇锋眰
-          if (!result) return
-
-          let deffers = result.map(res => {
-            delete res.ErrCode
-            delete res.ErrMesg
-            delete res.message
-            delete res.status
-
-            if (btn.sysInterface === 'true') {
-              res.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi
-            } else {
-              res.rduri = btn.interface
-            }
-            // res.method = btn.method
-            if (btn.outerFunc) {
-              res.func = btn.outerFunc
-            }
-            return new Promise(resolve => {
-              Api.genericInterface(res).then(response => {
-                resolve(response)
-              })
-            })
+        let _formparam = {}
+        if (btn.OpenType === 'pop' && formdata) { // 琛ㄥ崟
+          formdata.forEach(_data => {
+            _formparam[_data.key] = _data.value
           })
-          return Promise.all(deffers)
+        }
 
-        }).then(result => {
-          // 鍥炶皟璇锋眰
-          let iserror = false
-          let errorMsg = ''
-          result.forEach(res => {
-            if (!res.status) {
-              iserror = true
-              errorMsg = res
-            } else {
-              errorMsg = res
-            }
-          })
-          if (iserror) {
-            this.execError(errorMsg, btn)
-            _resolve()
-            return
+        _params = data.map(cell => {
+          let _cell = {
+            BID: this.props.BID,
           }
-          
-          if (btn.callbackFunc) {
-            // 瀛樺湪鍥炶皟鍑芥暟鏃讹紝璋冪敤
-            let deffers = result.map(res => {
-              delete res.ErrCode
-              delete res.ErrMesg
-              delete res.message
-              delete res.status
-  
-              res.func = btn.callbackFunc
-              return new Promise(resolve => {
-                Api.genericInterface(res).then(response => {
-                  resolve(response)
-                })
-              })
-            })
-            return Promise.all(deffers)
-          } else {
-            _resolve()
-            this.execSuccess(btn, errorMsg)
+          if (setting.primaryKey) {
+            _cell[setting.primaryKey] = cell[setting.primaryKey]
           }
-        }).then(result => {
-          if (!result) return
 
-          let iserror = false
-          let errorMsg = ''
-          result.forEach(res => {
-            if (!res.status) {
-              iserror = true
-              errorMsg = res
-            } else {
-              errorMsg = res
-            }
-          })
-          if (iserror) {
-            this.execError(errorMsg, btn)
-            return
-          } else {
-            this.execSuccess(btn, errorMsg)
-          }
-          _resolve()
+          _cell = {..._formparam, ..._cell}
+
+          return _cell
         })
-
       } else {
         this.actionSettingError()
         _resolve()
         return
       }
+
+      // 寰幆璋冪敤澶栭儴鎺ュ彛锛堝寘鎷唴閮ㄥ強鍥炶皟鍑芥暟锛�
+      this.outerLoopRequest(_params, btn, _resolve)
       
     } else {
       this.actionSettingError()
@@ -575,6 +383,123 @@
   }
 
   /**
+   * @description 鍐呴儴璇锋眰寰幆鎵ц
+   */
+  innerLoopRequest = (params, btn, _resolve) => {
+    if (!params && params.length === 0) return
+
+    let param = params.shift()
+
+    Api.genericInterface(param).then(res => {
+      if (res.status) {
+        if (params.length === 0) {
+          this.execSuccess(btn, res)
+          _resolve()
+        } else {
+          this.innerLoopRequest(params, btn, _resolve)
+        }
+      } else {
+        this.execError(res, btn)
+        _resolve()
+      }
+    })
+  }
+
+  /**
+   * @description 澶栭儴璇锋眰寰幆鎵ц
+   */
+  outerLoopRequest = (params, btn, _resolve) => {
+    if (!params && params.length === 0) return
+
+    let param = params.shift()
+    let _outParam = null
+
+    new Promise(resolve => {
+      // 鍐呴儴璇锋眰
+      if (btn.innerFunc) {
+        param.func = btn.innerFunc
+        // 瀛樺湪鍐呴儴鍑芥暟鏃讹紝鏁版嵁棰勫鐞�
+        Api.genericInterface(param).then(res => {
+          if (res.status) {
+            delete res.ErrCode
+            delete res.ErrMesg
+            delete res.message
+            delete res.status
+
+            // 浣跨敤澶勭悊鍚庣殑鏁版嵁璋冪敤澶栭儴鎺ュ彛
+            resolve(res)
+          } else {
+            this.execError(res, btn)
+            resolve(false)
+            _resolve()
+          }
+        })
+      } else {
+        resolve(param)
+      }
+    }).then(res => {
+      if (!res) return
+      // 澶栭儴璇锋眰
+      _outParam = JSON.parse(JSON.stringify(res))
+
+      if (btn.sysInterface === 'true') {
+        res.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi
+      } else {
+        res.rduri = btn.interface
+      }
+      // res.method = btn.method
+      if (btn.outerFunc) {
+        res.func = btn.outerFunc
+      }
+
+      res.appkey = window.GLOB.appkey || '' // 澶栭儴璇锋眰鏃讹紝缁熶竴娣诲姞appkey
+
+      return Api.genericInterface(res)
+    }).then(response => {
+      if (!response) return
+      // 鍥炶皟璇锋眰
+      if (btn.callbackFunc) {
+        // 瀛樺湪鍥炶皟鍑芥暟鏃讹紝璋冪敤
+        delete response.message
+        delete response.status
+
+        response.func = btn.callbackFunc
+
+        let _callbackparam = {..._outParam, ...response}
+        return Api.genericInterface(_callbackparam)
+      } else {
+        if (response.status) {
+          // 涓�娆¤姹傛垚鍔燂紝杩涜涓嬩竴椤硅姹�
+
+          if (params.length === 0) {
+            this.execSuccess(btn, response)
+            _resolve()
+          } else {
+            this.outerLoopRequest(params, btn, _resolve)
+          }
+        } else {
+          this.execError(response, btn)
+          _resolve()
+        }
+      }
+    }).then(res => {
+      if (!res) return
+
+      if (res.status) {
+        if (params.length === 0) {
+          this.execSuccess(btn, res)
+          _resolve()
+        } else {
+          this.outerLoopRequest(params, btn, _resolve)
+        }
+      } else {
+        this.execError(res, btn)
+        _resolve()
+      }
+    })
+  }
+
+  /**
    * @description 鎿嶄綔鎴愬姛鍚庡鐞�
    * 1銆乪xcel瀵煎嚭锛屾垚鍔熷悗鍙栨秷瀵煎嚭鎸夐挳鍔犺浇涓姸鎬�
    * 2銆佺姸鎬佺爜涓� S 鏃讹紝鏄剧ず鎴愬姛淇℃伅鍚庣郴缁熼粯璁や俊鎭�

--
Gitblit v1.8.0