king
2022-05-29 f38b3321250222b81a797a538d9c3efa9f8a0ecb
src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -3,7 +3,7 @@
import moment from 'moment'
import {connect} from 'react-redux'
import { is, fromJS } from 'immutable'
import { Button, Modal, notification, message, Drawer, Switch, Checkbox } from 'antd'
import { Button, Modal, notification, message, Drawer, Switch, Checkbox, Progress } from 'antd'
import Api from '@/api'
import Utils, { getSysDefaultSql } from '@/utils/utils.js'
@@ -21,8 +21,6 @@
class NormalButton extends Component {
  static propTpyes = {
    show: PropTypes.any,              // 按钮显示样式控制
    position: PropTypes.any,          // 按钮位置,工具栏为toolbar
    BID: PropTypes.string,            // 主表ID
    BData: PropTypes.any,             // 主表数据
    style: PropTypes.any,             // 按钮样式
@@ -44,6 +42,7 @@
    btnconfig: null,
    loading: false,
    loadingNumber: '',
    loadingTotal: '',
    disabled: false,
    hidden: false,
    checkParam: null,
@@ -96,10 +95,10 @@
  }
  componentDidMount () {
    const { position, btn } = this.props
    const { btn } = this.props
    MKEmitter.addListener('triggerBtnId', this.actionTrigger)
    if (position === 'form') {
    if (btn.OpenType === 'formSubmit') {
      MKEmitter.addListener('triggerFormSubmit', this.actionSubmit)
    }
    MKEmitter.addListener('returnModuleParam', this.resetModuleParam)
@@ -862,6 +861,11 @@
          _resolve()
        })
      } else { // 超出20个请求时循环执行
        if (btn.progress === 'progressbar') {
          this.setState({
            loadingTotal: params.length
          })
        }
        this.innerLoopRequest(params, btn, _resolve)
      }
    } else if (btn.intertype === 'outer') {
@@ -922,8 +926,14 @@
        })
      }
      if (_params.length > 1 && btn.progress === 'progressbar') {
        this.setState({
          loadingTotal: _params.length
        })
      }
      // 循环调用外部接口(包括内部及回调函数)
      this.outerLoopRequest(_params, btn, _resolve, _params.length > 20)
      this.outerLoopRequest(_params, btn, _resolve)
    } else if (btn.intertype === 'custom') { // 系统接口
      let params = []
@@ -937,6 +947,12 @@
        params = this.getInnerParam(data, formdata)
      }
      if (params.length > 1 && btn.progress === 'progressbar') {
        this.setState({
          loadingTotal: params.length
        })
      }
      this.customLoopRequest(params, _resolve)
    }
  }
@@ -948,7 +964,7 @@
    let param = params.shift()
    this.setState({
      loadingNumber: params.length || ''
      loadingNumber: params.length
    })
    let record = {
@@ -1279,7 +1295,7 @@
    let param = params.shift()
    this.setState({
      loadingNumber: params.length || ''
      loadingNumber: params.length
    })
    let _param = null
@@ -1330,17 +1346,15 @@
  /**
   * @description 外部请求循环执行
   */
  outerLoopRequest = (params, btn, _resolve, widthNumber) => {
  outerLoopRequest = (params, btn, _resolve) => {
    if (!params && params.length === 0) return
    let param = params.shift()
    let _outParam = null
    if (widthNumber) {
      this.setState({
        loadingNumber: params.length || ''
      })
    }
    this.setState({
      loadingNumber: params.length
    })
    new Promise(resolve => {
      // 内部请求
@@ -1447,7 +1461,7 @@
            this.execSuccess(response)
            _resolve()
          } else {
            this.outerLoopRequest(params, btn, _resolve, widthNumber)
            this.outerLoopRequest(params, btn, _resolve)
          }
        } else {
          this.execError(response)
@@ -1462,7 +1476,7 @@
          this.execSuccess(res)
          _resolve()
        } else {
          this.outerLoopRequest(params, btn, _resolve, widthNumber)
          this.outerLoopRequest(params, btn, _resolve)
        }
      } else {
        this.execError(res)
@@ -1496,6 +1510,11 @@
    } else if (res && res.ErrCode === '-1') { // 完成后不提示
    }
    this.setState({
      loadingNumber: '',
      loadingTotal: '',
    })
    
    if (autoMatic) {
      this.setState({
@@ -1716,6 +1735,7 @@
      this.setState({
        loading: false,
        loadingNumber: '',
        loadingTotal: '',
        visible: false
      })
      MKEmitter.emit('autoExecOver', btn.uuid, 'error')
@@ -1724,7 +1744,8 @@
    
    this.setState({
      loading: false,
      loadingNumber: ''
      loadingNumber: '',
      loadingTotal: '',
    })
    if (res.ErrCode === 'C') {
@@ -2086,70 +2107,57 @@
  }
  render() {
    const { btn, show, style } = this.props
    const { loadingNumber, loading, disabled, hidden, check } = this.state
    const { btn } = this.props
    const { loadingNumber, loadingTotal, loading, disabled, hidden, check } = this.state
    if (hidden) return null
    if (btn.OpenType === 'form') {
      if (btn.formType === 'switch') {
        return <Switch loading={loading} checked={check} disabled={disabled || loading} title={disabled ? (btn.reason || '') : ''} onChange={(val,e) => {e.stopPropagation();this.actionTrigger()}} style={style} className={btn.size === 'large' ? 'ant-switch-large' : ''} size={btn.size} checkedChildren={btn.openText || ''} unCheckedChildren={btn.closeText || ''}/>
        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 {
        return <Checkbox disabled={disabled || loading} title={disabled ? (btn.reason || '') : ''} checked={check} onChange={(e) => {e.stopPropagation();this.actionTrigger()}} style={style}></Checkbox>
        return <Checkbox disabled={disabled || loading} title={disabled ? (btn.reason || '') : ''} checked={check} onChange={(e) => {e.stopPropagation();this.actionTrigger()}} style={btn.style}></Checkbox>
      }
    } else if (show === 'actionList') {
      return <div style={{display: 'inline-block'}} onClick={(e) => e.stopPropagation()}>
        <Button
          style={style}
          icon={btn.icon}
          loading={loading}
          disabled={disabled}
          title={disabled ? (btn.reason || '') : ''}
          className={'mk-btn mk-' + btn.class}
          onClick={() => {this.actionTrigger()}}
        >{(loadingNumber ? `(${loadingNumber})` : '') + btn.label}</Button>
        {this.getModels()}
      </div>
    } else if (show && show.indexOf('plus') > -1) {
      return <div style={{display: 'inline-block'}}>
        <Button
          type="link"
          loading={loading}
          icon={btn.icon || 'plus'}
          style={{fontSize: show.substring(4) + 'px'}}
          onClick={() => {this.actionTrigger()}}
        ></Button>
        {this.getModels()}
      </div>
    } else { // icon、text、 all 卡片
      let label = ''
      let icon = ''
      if (show === 'button') {
        label = btn.label
        icon = btn.icon || ''
      } else if (show === 'link') {
        label = <span>{btn.label}{btn.icon ? <MkIcon style={{marginLeft: '8px'}} type={btn.icon}/> : ''}</span>
        icon = ''
      } else if (show === 'icon') {
        icon = btn.icon || ''
      } else {
        label = btn.label
      }
      return <div style={{display: 'inline-block'}} onClick={(e) => e.stopPropagation()}>
        <Button
          type="link"
          title={disabled ? (btn.reason || '') : (show === 'icon' ? btn.label : '')}
          loading={loading}
          disabled={disabled}
          style={btn.style || style}
          icon={icon}
          onClick={() => {this.actionTrigger()}}
        >{label}</Button>
        {this.getModels()}
      </div>
    }
    let label = ''
    let icon = ''
    let type = 'link'
    let className = ''
    if (btn.show === 'button') {
      label = btn.label
      icon = btn.icon || ''
    } else if (btn.show === 'link') {
      label = <span>{btn.label}{btn.icon ? <MkIcon style={{marginLeft: '8px'}} type={btn.icon}/> : ''}</span>
      icon = ''
    } else if (btn.show === 'icon') {
      icon = btn.icon || ''
    } else if (!btn.$toolbtn) {
      icon = btn.icon || ''
      label = btn.label
      className = 'mk-btn mk-' + btn.class
    } else {
      type = ''
      icon = btn.icon || ''
      label = (loadingNumber && !loadingTotal ? `(${loadingNumber})` : '') + btn.label
      className = 'mk-btn mk-' + btn.class
    }
    return <div style={{display: 'inline-block'}} onClick={(e) => e.stopPropagation()}>
      <Button
        type={type}
        icon={icon}
        title={disabled ? (btn.reason || '') : (btn.show === 'icon' ? btn.label : '')}
        loading={loading}
        disabled={disabled}
        style={btn.style || null}
        className={className}
        onClick={() => {this.actionTrigger()}}
      >{label}</Button>
      {this.getModels()}
      {loadingTotal ? <Progress className="mk-button-progress" percent={(loadingTotal - loadingNumber) / loadingTotal * 100} size="small" showInfo={false} /> : null}
    </div>
  }
}