king
2021-01-27 34f4be5727bf4d0d231e0691a503cf0c9e5d00d3
src/tabviews/formtab/actionList/index.jsx
@@ -2,7 +2,8 @@
import PropTypes from 'prop-types'
import moment from 'moment'
import { Button, Modal, notification, message } from 'antd'
import Utils from '@/utils/utils.js'
import Utils, { getSysDefaultSql } from '@/utils/utils.js'
import options from '@/store/options.js'
import Api from '@/api'
import './index.scss'
@@ -10,10 +11,10 @@
class MainAction extends Component {
  static propTpyes = {
    menuType: PropTypes.any,       // 菜单类型,普通菜单或HS
    MenuID: PropTypes.string,      // 菜单ID
    primaryId: PropTypes.string,   // 主键
    actions: PropTypes.array,      // 按钮组
    logcolumns: PropTypes.array,   // 显示列
    dict: PropTypes.object,        // 字典项
    data: PropTypes.any,           // 数据
    setting: PropTypes.any,        // 页面通用设置
@@ -32,7 +33,6 @@
   */
  actionTrigger = (item) => {
    const { data } = this.props
    let _this = this
    if (item.btnType !== 'cancel') {
@@ -65,61 +65,88 @@
   * @description 按钮提交执行
   */
  execSubmit = (btn, data, _resolve, formdata) => {
    const { setting, logcolumns, primaryId } = this.props
    const { setting, primaryId } = this.props
    let _primaryId = primaryId
    if (btn.intertype === 'inner') {
      // 使用内部接口时,内部函数和数据源不可同时为空, 使用系统函数时,类型不可为空
      if (!btn.innerFunc && (!btn.sql || (btn.sql && !btn.sqlType))) {
      let param = { // 系统存储过程
        func: btn.innerFunc,
        BID: ''
      }
      param[setting.primaryKey] = primaryId
      formdata.forEach(_data => {
        param[_data.key] = _data.value
      })
      if (!param[setting.primaryKey]) {
        param[setting.primaryKey] = Utils.getguid()
      }
      _primaryId = param[setting.primaryKey]
      Api.genericInterface(param).then((res) => {
        if (res.status) {
          this.execSuccess(btn, res, _primaryId, formdata)
        } else {
          this.execError(res, btn)
        }
        _resolve()
      })
    } else if (btn.intertype === 'system') {
      // 使用系统接口时,数据源不可为空, 使用系统函数时,类型不可为空
      if (!btn.sql || !btn.sqlType) {
        this.actionSettingError()
        _resolve()
        return
      }
      // 创建凭证时,需要选择行时
      if (!data && !btn.innerFunc && btn.verify && btn.verify.voucher && btn.verify.voucher.enabled) {
      if (!data && btn.verify && btn.verify.voucher && btn.verify.voucher.enabled) {
        notification.warning({
          top: 92,
          message: '使用创建凭证函数,需要选择行!',
          duration: 10
          duration: 5
        })
        return
      }
      let param = { // 系统存储过程
        func: 'sPC_TableData_InUpDe',
        exec_type: 'y', // 后台解码
        BID: ''
      }
      if (btn.innerFunc) {
        param.func = btn.innerFunc
        param[setting.primaryKey] = primaryId
        formdata.forEach(_data => {
          param[_data.key] = _data.value
        })
        if (!param[setting.primaryKey]) {
          param[setting.primaryKey] = Utils.getguid()
        }
        _primaryId = param[setting.primaryKey]
      } else if (btn.sql && btn.sqlType === 'insert') { // 系统函数添加时,生成uuid
      if (btn.sql && btn.sqlType === 'insert') { // 系统函数添加时,生成uuid
        param.ID = Utils.getguid()
        param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data, 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, []) // 数据源
        param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
        param.secretkey = Utils.encrypt('', param.timestamp)
        param.LText = Utils.formatOptions(param.LText)
        _primaryId = param.ID
      } else if (btn.sql && btn.sqlType === 'insertOrUpdate') { // 系统函数添加或修改时
        param.ID = primaryId || Utils.getguid()
        param.LText = getSysDefaultSql(btn, setting, formdata, param, data, []) // 数据源
        param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
        param.secretkey = Utils.encrypt('', param.timestamp)
        param.LText = Utils.formatOptions(param.LText)
        _primaryId = param.ID
      } else if (btn.sql) {
        param.ID = primaryId
        param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data, 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, []) // 数据源
        param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
        param.secretkey = Utils.encrypt('', param.timestamp)
        param.LText = Utils.formatOptions(param.LText)
      }
      if (this.props.menuType === 'HS' && param.timestamp) { // 云端验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
      Api.genericInterface(param).then((res) => {
        if (res.status) {
          this.execSuccess(btn, res, _primaryId, formdata)
@@ -182,17 +209,23 @@
        // 外部请求
        _outParam = JSON.parse(JSON.stringify(res))
  
        if (btn.sysInterface === 'true') {
          res.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi
        if (this.props.menuType === 'HS') {
          if (btn.sysInterface === 'true' && options.cloudServiceApi) {
            res.rduri = options.cloudServiceApi
          } else if (btn.sysInterface !== 'true') {
            res.rduri = btn.interface
          }
        } else {
          res.rduri = btn.interface
          if (btn.sysInterface === 'true' && window.GLOB.mainSystemApi) {
            res.rduri = window.GLOB.mainSystemApi
          } else if (btn.sysInterface !== 'true') {
            res.rduri = btn.interface
          }
        }
        if (btn.outerFunc) {
          res.func = btn.outerFunc
        }
        res.appkey = window.GLOB.appkey || '' // 外部请求时,统一添加appkey
  
        return Api.genericInterface(res)
      }).then(response => {
@@ -272,14 +305,14 @@
      notification.error({
        top: 92,
        message: res.message || res.ErrMesg,
        duration: btn.errorTime || 15
        duration: btn.errorTime || 10
      })
    } else if (res.ErrCode === 'F') {
      notification.error({
        className: 'notification-custom-error',
        top: 92,
        message: res.message || res.ErrMesg,
        duration: btn.errorTime || 15
        duration: btn.errorTime || 10
      })
    } else if (res.ErrCode === 'NM') {
      message.error(res.message || res.ErrMesg)
@@ -295,7 +328,7 @@
    notification.warning({
      top: 92,
      message: this.props.dict['main.action.settingerror'],
      duration: 10
      duration: 5
    })
  }