From fe21d23b147ed5cec22b4f76a88840b05495d4ad Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期六, 18 六月 2022 22:33:59 +0800
Subject: [PATCH] 2022-06-18

---
 src/tabviews/zshare/actionList/normalbutton/index.jsx |  195 ++++++++++++++++++++++++++----------------------
 1 files changed, 105 insertions(+), 90 deletions(-)

diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index 23ace02..296ae6e 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/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,          // 鎸夐挳浣嶇疆锛屽伐鍏锋爮涓簍oolbar
     BID: PropTypes.string,            // 涓昏〃ID
     BData: PropTypes.any,             // 涓昏〃鏁版嵁
     style: PropTypes.any,             // 鎸夐挳鏍峰紡
@@ -33,7 +31,6 @@
     setting: PropTypes.any,           // 椤甸潰閫氱敤璁剧疆
     ContainerId: PropTypes.any,       // tab椤甸潰ID锛岀敤浜庡脊绐楁帶鍒�
     disabled: PropTypes.any,          // 琛屾寜閽鐢�
-    lineId: PropTypes.any,            // 琛岀储寮�+涓婚敭鍊硷紝鐢ㄤ簬琛屾寜閽弻鍑�
   }
 
   state = {
@@ -45,6 +42,7 @@
     btnconfig: null,
     loading: false,
     loadingNumber: '',
+    loadingTotal: '',
     disabled: false,
     hidden: false,
     checkParam: null,
@@ -97,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)
@@ -234,12 +232,7 @@
     const { loading, disabled } = this.state
 
     if (loading || disabled) return
-    if (triggerId) {
-      if (btn.uuid !== triggerId) return
-      if (this.props.lineId && record && record[0] && this.props.lineId !== record[0].$$key) {
-        return
-      }
-    }
+    if (triggerId && btn.uuid !== triggerId) return
 
     if (((Tab && Tab.supMenu) || setting.supModule) && !BID) {
       notification.warning({
@@ -248,17 +241,15 @@
         duration: 5
       })
       return
-    } else if (type === 'linkbtn' && selectedData && selectedData.length === 1) {
-      if (record[0].$Index !== selectedData[0].$Index) {
-        return
-      }
+    } else if (type === 'linkbtn' && !btn.$toolbtn && !is(fromJS(selectedData || []), fromJS(record))) {
+      return
     }
 
     this.setState({autoMatic: type === 'autoMatic'})
 
     let _this = this
     let data = record || selectedData || []
-
+    
     if (btn.Ot !== 'notRequired' && data.length === 0) {
       // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾暟鎹�
       notification.warning({
@@ -870,6 +861,11 @@
           _resolve()
         })
       } else { // 瓒呭嚭20涓姹傛椂寰幆鎵ц
+        if (btn.progress === 'progressbar' && btn.$toolbtn) {
+          this.setState({
+            loadingTotal: params.length
+          })
+        }
         this.innerLoopRequest(params, btn, _resolve)
       }
     } else if (btn.intertype === 'outer') {
@@ -930,8 +926,14 @@
         })
       }
 
+      if (_params.length > 1 && btn.progress === 'progressbar' && btn.$toolbtn) {
+        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 = []
 
@@ -945,6 +947,12 @@
         params = this.getInnerParam(data, formdata)
       }
 
+      if (params.length > 1 && btn.progress === 'progressbar' && btn.$toolbtn) {
+        this.setState({
+          loadingTotal: params.length
+        })
+      }
+
       this.customLoopRequest(params, _resolve)
     }
   }
@@ -956,7 +964,7 @@
     let param = params.shift()
 
     this.setState({
-      loadingNumber: params.length || ''
+      loadingNumber: params.length
     })
 
     let record = {
@@ -1287,7 +1295,7 @@
     let param = params.shift()
 
     this.setState({
-      loadingNumber: params.length || ''
+      loadingNumber: params.length
     })
 
     let _param = null
@@ -1338,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 => {
       // 鍐呴儴璇锋眰
@@ -1455,7 +1461,7 @@
             this.execSuccess(response)
             _resolve()
           } else {
-            this.outerLoopRequest(params, btn, _resolve, widthNumber)
+            this.outerLoopRequest(params, btn, _resolve)
           }
         } else {
           this.execError(response)
@@ -1470,7 +1476,7 @@
           this.execSuccess(res)
           _resolve()
         } else {
-          this.outerLoopRequest(params, btn, _resolve, widthNumber)
+          this.outerLoopRequest(params, btn, _resolve)
         }
       } else {
         this.execError(res)
@@ -1504,6 +1510,11 @@
     } else if (res && res.ErrCode === '-1') { // 瀹屾垚鍚庝笉鎻愮ず
 
     }
+
+    this.setState({
+      loadingNumber: '',
+      loadingTotal: '',
+    })
     
     if (autoMatic) {
       this.setState({
@@ -1527,6 +1538,9 @@
     if (btn.output) {
       id = res.mk_b_id || res[btn.output] || ''
     }
+    if (res.mk_icon) {
+      sessionStorage.setItem('avatar', res.mk_icon)
+    }
     let tabId = ''
     if (btn.refreshTab && btn.refreshTab.length > 0) {
       tabId = btn.refreshTab[btn.refreshTab.length - 1]
@@ -1544,6 +1558,8 @@
     } else if (btn.execSuccess !== 'never') {
       MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execSuccess, btn, id, this.state.selines)
     }
+    
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
 
     if (tabId) {
       MKEmitter.emit('reloadMenuView', tabId, 'table')
@@ -1554,8 +1570,13 @@
       let node = document.getElementById('tab' + id)
       node && node.click()
     }
+    if (btn.anchors && btn.anchors.length > 0) {
+      let id = btn.anchors[btn.anchors.length - 1]
+      let node = document.getElementById('anchor' + id)
+      node && node.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'nearest'})
+    }
 
-    if (btn.openmenu && btn.openmenu.length > 0 && btn.MenuID) {
+    if (btn.MenuID && Array.isArray(btn.openmenu) && btn.openmenu.length > 0) {
       let newtab = {
         MenuID: btn.MenuID,
         MenuName: btn.MenuName,
@@ -1717,6 +1738,7 @@
       this.setState({
         loading: false,
         loadingNumber: '',
+        loadingTotal: '',
         visible: false
       })
       MKEmitter.emit('autoExecOver', btn.uuid, 'error')
@@ -1725,7 +1747,8 @@
     
     this.setState({
       loading: false,
-      loadingNumber: ''
+      loadingNumber: '',
+      loadingTotal: '',
     })
 
     if (res.ErrCode === 'C') {
@@ -1823,10 +1846,10 @@
    */
   improveAction = () => {
     const { btn } = this.props
-    const { btnconfig, autoMatic } = this.state
+    const { btnconfig } = this.state
 
     if (btnconfig) {
-      if (!autoMatic && (btnconfig.setting.display === 'prompt' || btnconfig.setting.display === 'exec')) { // 濡傛灉琛ㄥ崟浠ユ槸鍚︽灞曠ず
+      if (btnconfig.setting.display === 'prompt' || btnconfig.setting.display === 'exec') { // 濡傛灉琛ㄥ崟浠ユ槸鍚︽灞曠ず
         this.modelconfirm()
       } else {
         this.setState({
@@ -1870,7 +1893,7 @@
           this.setState({
             btnconfig: _LongParam
           }, () => {
-            if (!autoMatic && (_LongParam.setting.display === 'prompt' || _LongParam.setting.display === 'exec')) { // 濡傛灉琛ㄥ崟浠ユ槸鍚︽灞曠ず
+            if (_LongParam.setting.display === 'prompt' || _LongParam.setting.display === 'exec') { // 濡傛灉琛ㄥ崟浠ユ槸鍚︽灞曠ず
               this.modelconfirm()
             } else {
               this.setState({
@@ -1888,6 +1911,7 @@
    */
   handleOk = () => {
     if (!this.formRef) return
+    
     this.formRef.handleConfirm().then(res => {
       this.setState({ confirmLoading: true })
 
@@ -2005,7 +2029,7 @@
 
     if (!btnconfig || !btnconfig.setting) return null
 
-    let title = btnconfig.setting.title
+    let title = btn.label
     let width = btnconfig.setting.width > 100 ? btnconfig.setting.width : btnconfig.setting.width + 'vw'
     let clickouter = btnconfig.setting.clickouter === 'close'
 
@@ -2086,70 +2110,61 @@
   }
 
   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} 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銆乼ext銆� 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 = btn.label
+      className = 'mk-btn mk-' + btn.class
+    }
+
+    if (loadingNumber && !loadingTotal && btn.$toolbtn && (!btn.show || btn.show === 'button')) {
+      label = (loadingNumber && !loadingTotal ? `(${loadingNumber})` : '') + btn.label
+    }
+
+    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>
   }
 }
 

--
Gitblit v1.8.0