king
2020-02-06 b7c41fce93fbe30ac8334fc03eef700b1640bc15
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、excel导出,成功后取消导出按钮加载中状态
   * 2、状态码为 S 时,显示成功信息后系统默认信息