king
2021-09-02 3d4bc79a80eb9cff0f8ef7c53f9685c9ff9fbd2d
src/tabviews/verupmanage/actionList/index.jsx
@@ -2,13 +2,16 @@
import PropTypes from 'prop-types'
import moment from 'moment'
import { Button, Modal, notification, message } from 'antd'
import MutilForm from '@/tabviews/zshare/mutilform'
import Utils from '@/utils/utils.js'
import asyncSpinComponent from '@/utils/asyncSpinComponent'
import Utils, { getSysDefaultSql } from '@/utils/utils.js'
import options from '@/store/options.js'
import { updateForm } from '@/utils/utils-update.js'
import Api from '@/api'
import './index.scss'
const { confirm } = Modal
const MutilForm = asyncSpinComponent(() => import('@/tabviews/zshare/mutilform'))
class MainAction extends Component {
  static propTpyes = {
@@ -18,12 +21,12 @@
    type: PropTypes.string,           // 判断当前为主表(main)、子表(sub)、子表标签(subtab)
    MenuID: PropTypes.string,         // 菜单ID
    actions: PropTypes.array,         // 按钮组
    logcolumns: PropTypes.array,      // 显示列
    columns: PropTypes.array,         // 显示列
    dict: PropTypes.object,           // 字典项
    setting: PropTypes.any,           // 页面通用设置
    ContainerId: PropTypes.any,       // tab页面ID,用于弹窗控制
    refreshdata: PropTypes.func,      // 执行完成后数据刷新
    gettableselected: PropTypes.func  // 获取表格中数据
    selectedData: PropTypes.array     // 表格选中数据
  }
  state = {
@@ -45,7 +48,7 @@
   * @description 触发按钮操作
   */
  actionTrigger = (item, record) => {
    const { setting, type, Tab, BID } = this.props
    const { setting, type, Tab, BID, selectedData } = this.props
    if (type === 'sub' && Tab && Tab.supMenu && !BID) {
      notification.warning({
@@ -57,7 +60,7 @@
    }
    let _this = this
    let data = this.props.gettableselected() || []
    let data = selectedData || []
    
    if (record) { // 表格中触发按钮
      data = [record]
@@ -109,6 +112,7 @@
        this.setState({loadingUuid: ''})
      })
    } else if (item.OpenType === 'pop') {
      item = updateForm(item)
      if (item.setting.display === 'prompt') { // 如果表单以是否框展示,不请求下拉菜单信息
        this.setState({
          execAction: item,
@@ -136,7 +140,7 @@
   * @description 按钮提交执行
   */
  execSubmit = (btn, data, _resolve, formdata) => {
    const { setting, logcolumns } = this.props
    const { setting, columns } = this.props
    if (btn.intertype === 'inner') {
      // 执行方式为多行拼接,且打开方式为表单时,会转为循环发送请求
@@ -171,9 +175,12 @@
            }
          } else if (btn.sql) {
            param.ID = primaryId
            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param, data[0], logcolumns)) // 数据源
            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
            param.secretkey = Utils.encrypt(param.LText, param.timestamp)
            param.LText = getSysDefaultSql(btn, setting, '', param, data[0], columns) // 数据源
            param.exec_type = 'y' // 后台解码
            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
            param.secretkey = Utils.encrypt('', param.timestamp)
            param.LText = Utils.formatOptions(param.LText)
          }
        } else if (btn.OpenType === 'pop') { // 表单
          if (btn.innerFunc) {
@@ -196,15 +203,25 @@
              }
            }
            param.ID = primaryId || Utils.getguid()
            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data[0], logcolumns)) // 数据源
            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
            param.secretkey = Utils.encrypt(param.LText, param.timestamp)
            param.LText = getSysDefaultSql(btn, setting, formdata, param, data[0], columns) // 数据源
            param.exec_type = 'y' // 后台解码
            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
            param.secretkey = Utils.encrypt('', param.timestamp)
            param.LText = Utils.formatOptions(param.LText)
          } else if (btn.sql) {
            param.ID = primaryId
            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data[0], logcolumns)) // 数据源
            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
            param.secretkey = Utils.encrypt(param.LText, param.timestamp)
            param.LText = getSysDefaultSql(btn, setting, formdata, param, data[0], columns) // 数据源
            param.exec_type = 'y' // 后台解码
            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
            param.secretkey = Utils.encrypt('', param.timestamp)
            param.LText = Utils.formatOptions(param.LText)
          }
        }
        if (param.timestamp) { // 云端验证
          param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
        }
        Api.genericInterface(param).then((res) => {
@@ -240,9 +257,12 @@
              }
            } else if (btn.sql) {
              param.ID = primaryId
              param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param, cell, logcolumns)) // 数据源
              param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
              param.secretkey = Utils.encrypt(param.LText, param.timestamp)
              param.LText = getSysDefaultSql(btn, setting, '', param, cell, columns) // 数据源
              param.exec_type = 'y' // 后台解码
              param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
              param.secretkey = Utils.encrypt('', param.timestamp)
              param.LText = Utils.formatOptions(param.LText)
            }
          } else if (btn.OpenType === 'pop') { // 表单
            if (btn.innerFunc) {
@@ -261,9 +281,12 @@
              }
            } else if (btn.sql && btn.sqlType === 'insert') { // 系统函数添加时,生成uuid
              param.ID = _formPrimaryId || Utils.getguid()
              param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, cell, logcolumns)) // 数据源
              param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
              param.secretkey = Utils.encrypt(param.LText, param.timestamp)
              param.LText = getSysDefaultSql(btn, setting, formdata, param, cell, columns) // 数据源
              param.exec_type = 'y' // 后台解码
              param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
              param.secretkey = Utils.encrypt('', param.timestamp)
              param.LText = Utils.formatOptions(param.LText)
            } else if (btn.sql) {
              if (index !== 0) {
                formdata = formdata.map(_data => {
@@ -275,10 +298,17 @@
              }
              param.ID = primaryId
              param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, cell, logcolumns)) // 数据源
              param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
              param.secretkey = Utils.encrypt(param.LText, param.timestamp)
              param.LText = getSysDefaultSql(btn, setting, formdata, param, cell, columns) // 数据源
              param.exec_type = 'y' // 后台解码
              param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
              param.secretkey = Utils.encrypt('', param.timestamp)
              param.LText = Utils.formatOptions(param.LText)
            }
          }
          if (param.timestamp) { // 云端验证
            param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
          }
          return param
@@ -410,6 +440,7 @@
    let param = params.shift()
    let _outParam = null
    let _localParam = null
    let errRes = null
    if (widthNumber) {
      this.setState({
@@ -450,7 +481,11 @@
      // 外部请求
      _outParam = JSON.parse(JSON.stringify(res))
      if (btn.sysInterface === 'true' && options.cloudServiceApi) {
      if (btn.outerFunc === 's_app_version_upt') { // 更新版本号
        if (window.GLOB.mainSystemApi) {
          res.rduri = window.GLOB.mainSystemApi
        }
      } else if (btn.sysInterface === 'true' && options.cloudServiceApi) {
        res.rduri = options.cloudServiceApi
      } else if (btn.sysInterface !== 'true') {
        res.rduri = btn.interface
@@ -475,11 +510,22 @@
          _localParam = {..._outParam, ...response}
          response.rduri = window.GLOB.mainSystemApi
          if (_localParam.LTextOut) {
            _localParam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
            _localParam.secretkey = Utils.encrypt(_localParam.LTextOut, _localParam.timestamp)
            _localParam.open_key = Utils.encryptOpenKey(_localParam.secretkey, _localParam.timestamp)
          }
        }
        delete response.UpType
        let _callbackparam = {..._outParam, ...response}
        if (_callbackparam.LTextOut) {
          _callbackparam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
          _callbackparam.secretkey = Utils.encrypt(_callbackparam.LTextOut, _callbackparam.timestamp)
          _callbackparam.open_key = Utils.encryptOpenKey(_callbackparam.secretkey, _callbackparam.timestamp)
        }
        return Api.getLocalConfig(_callbackparam)
      } else {
        if (response.status) {
@@ -498,9 +544,11 @@
      }
    }).then(res => {
      if (!res) return
      if (_localParam) {
        if (!res.status) {
          errRes = res
        }
        return Api.getLocalConfig(_localParam)
      } else if (res.status) {
        if (params.length === 0) {
@@ -516,7 +564,7 @@
    }).then(res => {
      if (!res) return
      if (res.status) {
      if (res.status && !errRes) {
        if (params.length === 0) {
          this.execSuccess(btn, res)
          _resolve()
@@ -524,7 +572,7 @@
          this.outerLoopRequest(params, btn, _resolve, widthNumber)
        }
      } else {
        this.execError(res, btn)
        this.execError(errRes || res, btn)
        _resolve()
      }
    })
@@ -607,17 +655,10 @@
    const { BData } = this.props
    const { execAction, tabledata } = this.state
    let _this = this
    let _fields = []
    if (execAction.groups.length > 0) {
      execAction.groups.forEach(group => {
        _fields = [..._fields, ...group.sublist]
      })
    } else {
      _fields = execAction.fields
    }
    let result = _fields.map(item => {
    let result = []
    execAction.fields.forEach(item => {
      if (!item.field) return
      let _readin = item.readin !== 'false'
      let _initval = item.initval
@@ -638,14 +679,14 @@
        _fieldlen = item.decimal ? item.decimal : 0
      }
      return {
      result.push({
        key: item.field,
        readonly: item.readonly === 'true',
        readin: _readin,
        fieldlen: _fieldlen,
        type: item.type,
        value: _initval
      }
      })
    })
    confirm({
@@ -734,6 +775,7 @@
        destroyOnClose
      >
        <MutilForm
          menuType="HS"
          dict={this.props.dict}
          action={execAction}
          inputSubmit={this.handleOk}
@@ -750,7 +792,7 @@
    const { loadingUuid, loadingNumber } = this.state
    return (
      <div className="button-list toolbar-button">
      <div className="verup-button-list verup-toolbar-button">
        {this.props.actions.map((item, index) => {
          let label = item.label
          if (loadingUuid === item.uuid && loadingNumber !== '') {