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 // 设置主键参数
      }
@@ -868,7 +872,11 @@
          if (/'/.test(val)) {
            val = val.replace(/'/ig, '"')
          }
          _initFormfields.push(`@${_key}='${val}'`)
          if (form.isconst) {
            _initFormfields.push(`@${_key}=N'${val}'`)
          } else {
            _initFormfields.push(`@${_key}='${val}'`)
          }
        }
      }
      
@@ -1061,37 +1069,49 @@
      if (params[0].$unCheckParam) {
        this.checkLoopRequest(params, _resolve)
      } else if (btn.preFunc && params.length === 1) {
        let param = params[0]
        let _param = fromJS(param).toJS()
        _param.func = btn.preFunc
        Api.genericInterface(_param).then(res => {
          if (res.status) {
            if (res.ErrCode !== '-1') {
              param = {...param, ...res}
              delete param.status
              delete param.ErrCode
              delete param.ErrMesg
              delete param.message
              setTimeout(() => {
                Api.genericInterface(param).then(result => {
                  if (!result.status) {
                    notification.warning({
                      top: 92,
                      message: result.message,
                      duration: 5
                    })
                  }
                })
              }, 600)
            }
            this.triggerNote(res) // 消息
            this.execSuccess(res)
          } else {
            this.execError(res)
          }
          _resolve()
        }, () => {
          this.updateStatus()
          _resolve()
        })
      } else if (params.length <= 20 && btn.execType !== 'single') {
        let deffers = params.map((param, i) => {
          return new Promise(resolve => {
            setTimeout(() => {
              let _param = null
              if (btn.preFunc) {
                _param = fromJS(param).toJS()
                param.func = btn.preFunc
              }
              Api.genericInterface(param).then(res => {
                if (btn.preFunc && res.status && res.ErrCode !== '-1') {
                  _param = {..._param, ...res}
                  delete _param.status
                  delete _param.ErrCode
                  delete _param.ErrMesg
                  delete _param.message
                  setTimeout(() => {
                    Api.genericInterface(_param).then(result => {
                      if (!result.status) {
                        notification.warning({
                          top: 92,
                          message: result.message,
                          duration: 5
                        })
                      }
                    })
                  }, 600)
                }
                if (res.status) {
                  this.triggerNote(res) // 消息
                }
@@ -1253,7 +1273,46 @@
      param[key] = result[key]
    })
    Api.directRequest(url, btn.method, param, btn.cross).then(res => {
    let _params = {
      url: url,
      method: btn.method || 'post'
    }
    if (btn.cross === 'true') {
      if (JSON.stringify(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 (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')
      _params.url = '/trans/redirect?rd=' + _url + '&method=' + _params.method
      _params.method = 'post'
    }
    Api.directRequest(_params).then(res => {
      if (typeof(res) !== 'object') {
        let error = '未知的返回结果!'
@@ -1566,36 +1625,8 @@
      loadingNumber: params.length
    })
    let _param = null
    if (btn.preFunc) {
      _param = fromJS(param).toJS()
      param.func = btn.preFunc
    }
    Api.genericInterface(param).then(res => {
      if (res.status) {
        if (btn.preFunc && res.ErrCode !== '-1') {
          _param = {..._param, ...res}
          delete _param.status
          delete _param.ErrCode
          delete _param.ErrMesg
          delete _param.message
          setTimeout(() => {
            Api.genericInterface(_param).then(result => {
              if (!result.status) {
                notification.warning({
                  top: 92,
                  message: result.message,
                  duration: 5
                })
              }
            })
          }, 600)
        }
        this.triggerNote(res) // 消息
        if (params.length === 0) {
@@ -2062,7 +2093,17 @@
      MKEmitter.emit('refreshDebugTable')
    }
    
    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
    if (btn.syncComponentId) {
      if (btn.syncComponentId === 'multiComponent') {
        btn.syncComponentIds.forEach((id, i) => {
          setTimeout(() => {
            MKEmitter.emit('reloadData', id)
          }, 20 * i)
        })
      } else {
        MKEmitter.emit('reloadData', btn.syncComponentId)
      }
    }
    if (tabId) {
      MKEmitter.emit('reloadMenuView', tabId, 'table')
@@ -2117,7 +2158,18 @@
      this.sendMessage(btn.verify, id)
    }
    if (btn.verify.wxNote === 'true') {
      this.sendWxMessage(btn.verify, id)
      if (btn.verify.wxTemplateId === 'mk_category_temp') {
        let verify = fromJS(btn.verify).toJS()
        verify.wxTemplateId = verify.wxCustomTempId
        verify.wxNoteKeys = verify.wxNoteKeys.filter(item => item.key)
        if (!verify.wxTemplateId || verify.wxNoteKeys.length === 0) return
        this.sendWxMessage(verify, id)
      } else {
        this.sendWxMessage(btn.verify, id)
      }
    }
  }
@@ -2140,8 +2192,15 @@
    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
    param.secretkey = Utils.encrypt(param.LText, param.timestamp)
    let domain1 = ''
    let domain2 = ''
    if (['8IFltwzyKcu15iA8fqSyb6m-pMa88a3ZTu0No3vDHgo', 'LOB-bbt9jVncGh7IOAUdESh1Sgzcbt62UwOqSqcK9ok'].includes(verify.wxTemplateId) && options.sysType !== 'cloud') {
      domain1 = 'https://cloud.mk9h.cn/'
      domain2 = 'https://cloud.mk9h.cn:8443/'
    }
    Api.genericInterface(param).then(res => {
      // res.data = [{openid: 'o2E7gvoSFvQRG7I8_gZxf4y3ONkQ', send_id: '2223333', first: '您的缴费信息如下', keyword1: '010000000001', keyword2: '2022年07月03日', keyword3: '供暖缴费', keyword4: '20元', keyword5: '成功', remark: '感谢您的使用!'}]
      // res.send_data = [{openid: 'o2E7gvoSFvQRG7I8_gZxf4y3ONkQ', send_id: Utils.getuuid(), p1: '010000000001', p2: '明科', p3: 'dddd', p4: '顺风', p5: '成功'}]
      if (!res.status) {
        notification.warning({
          top: 92,
@@ -2149,7 +2208,12 @@
          duration: 5
        })
        return
      } else if (!res.send_data || res.send_data.length === 0) {
      }
      let sends = res.send_data || []
      sends = sends.filter(item => !!item.openid)
      if (sends.length === 0) {
        return
      }
@@ -2173,13 +2237,13 @@
      }
      
      verify.wxNoteKeys.forEach(item => {
        _param.data[item.key] = {value: '', color: item.color}
        _param.data[item.key] = {value: ''}
      })
      let params = res.send_data.map(item => {
      let params = sends.map(item => {
        let m = fromJS(_param).toJS()
        m.touser = item.openid || ''
        m.touser = item.openid
        if (item.bid && m.miniprogram && m.miniprogram.pagepath.indexOf('MenuId') > -1) {
          m.miniprogram.pagepath = m.miniprogram.pagepath + `&BID=${item.bid}`
        }
@@ -2197,21 +2261,25 @@
        return m
      })
      Api.wxAccessToken().then(res => {
      Api.wxAccessToken(domain1).then(res => {
        if (!res.oa_access_token) return
  
        params.forEach(n => {
          if (!n.touser) return
          Api.wxNginxRequest(`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 || ''
              if (msg.length > 50) {
                msg = msg.substr(0, 50)
              }
              let _p = {
                func: 's_get_sms_weixin_local_suc_err',
                upid: id,
                send_id: n.client_msg_id || '',
                status_result: re.errcode === 0 ? 'S' : 'E',
                errcode: re.errcode,
                msg_result: re.errmsg
                msg_result: msg
              }
              _p.LText = Utils.formatOptions(Utils.getuuid())
@@ -2621,7 +2689,8 @@
        fieldlen: item.fieldlength || 50,
        writein: item.writein !== 'false',
        type: item.type,
        value: item.initval
        value: item.initval,
        isconst: item.constant === 'true'
      }
      let key = item.field.toLowerCase()
@@ -2853,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
@@ -2863,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 {