king
2023-06-22 79e4981aa6cc9354276fc54cdf6d14eb08ab7fee
src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -1,6 +1,7 @@
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'
@@ -61,7 +62,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 +109,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 +330,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 +748,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 +764,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 +823,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) {
@@ -1243,10 +1160,8 @@
          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) {
@@ -1266,10 +1181,8 @@
          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) {
@@ -1367,15 +1280,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')
@@ -2338,7 +2265,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 || ''
@@ -2995,6 +2922,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 +2963,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 {