From b69b5f6329ca5f87932436b7a6c1ddfc3377e10f Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 16 五月 2024 10:56:41 +0800
Subject: [PATCH] 2024-05-16

---
 src/tabviews/zshare/actionList/changeuserbutton/index.jsx |  193 ++++++++++++++++++++++++++++++++++++------------
 1 files changed, 145 insertions(+), 48 deletions(-)

diff --git a/src/tabviews/zshare/actionList/changeuserbutton/index.jsx b/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
index 67abd43..06cb05f 100644
--- a/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
@@ -4,66 +4,128 @@
 import { Button, notification, Modal } from 'antd'
 
 import Api from '@/api'
-import zhCN from '@/locales/zh-CN/main.js'
-import enUS from '@/locales/en-US/main.js'
-import './index.scss'
+import MKEmitter from '@/utils/events.js'
+import MkIcon from '@/components/mk-icon'
+// import './index.scss'
 
 const { confirm } = Modal
 
 class NewPageButton extends Component {
   static propTpyes = {
-    show: PropTypes.any,              // 鎸夐挳鏄剧ず鏍峰紡鎺у埗
+    MenuID: PropTypes.any,            // 鑿滃崟ID
+    BData: PropTypes.any,             // 涓昏〃鏁版嵁
     BID: PropTypes.string,            // 涓昏〃ID
     btn: PropTypes.object,            // 鎸夐挳
     selectedData: PropTypes.any,      // 瀛愯〃涓�夋嫨鏁版嵁
     setting: PropTypes.any,           // 椤甸潰閫氱敤璁剧疆
-    updateStatus: PropTypes.func,     // 鎸夐挳鐘舵�佹洿鏂�
-    triggerBtn: PropTypes.any
+    disabled: PropTypes.any,          // 琛屾寜閽鐢�
   }
 
   state = {
-    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS
+    disabled: false,
+    hidden: false,
+    loading: false
   }
 
-  /**
-   * @description 澶栭儴瑙﹀彂鎸夐挳鐐瑰嚮
-   */
-  UNSAFE_componentWillReceiveProps(nextProps) {
-    if (nextProps.triggerBtn && !is(fromJS(this.props.triggerBtn), fromJS(nextProps.triggerBtn)) && nextProps.triggerBtn.button.uuid === this.props.btn.uuid) {
-      this.actionTrigger(nextProps.triggerBtn.data)
+  UNSAFE_componentWillMount () {
+    const { btn, selectedData, BData, disabled } = this.props
+
+    if (btn.controlField) {
+      this.setStatus(btn, selectedData || [], BData, disabled)
+    } else if (disabled) {
+      this.setState({disabled: true})
     }
   }
 
   shouldComponentUpdate (nextProps, nextState) {
     return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
   }
+
+  componentDidMount () {
+    MKEmitter.addListener('triggerBtnId', this.actionTrigger)
+  }
+
+  UNSAFE_componentWillReceiveProps (nextProps) {
+    const { btn } = this.props
+
+    if (btn.controlField) {
+      this.setStatus(btn, nextProps.selectedData || [], nextProps.BData, nextProps.disabled)
+    } else {
+      this.setState({disabled: nextProps.disabled === true})
+    }
+  }
+
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+    MKEmitter.removeListener('triggerBtnId', this.actionTrigger)
+  }
+
+  setStatus = (btn, data, BData, disprop) => {
+    let disabled = false
+    let hidden = false
+
+    if (btn.control !== 'parent') {
+      if (data.length > 0) {
+        data.forEach(item => {
+          let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
+          if (btn.controlVals.includes(s)) {
+            disabled = true
+          }
+        })
+      } else if (btn.controlVals.includes('')) {
+        disabled = true
+      }
+    } else {
+      if (!BData || !BData.hasOwnProperty(btn.controlField)) {
+        hidden = true
+      } else {
+        let s = BData[btn.controlField] + ''
+        if (btn.controlVals.includes(s)) {
+          hidden = true
+        }
+      }
+    }
+
+    if (disabled && btn.control === 'hidden') {
+      hidden = true
+    }
+
+    if (disprop) {
+      disabled = true
+    }
+
+    this.setState({hidden, disabled})
+  }
   
   /**
    * @description 瑙﹀彂鎸夐挳鎿嶄綔
    */
-  actionTrigger = (record) => {
-    const { setting, selectedData } = this.props
-    let data = []
+  actionTrigger = (triggerId, record, type, lid) => {
+    const { setting, selectedData, btn, MenuID, LID } = this.props
+    const { loading, disabled } = this.state
+    
+    if (loading || disabled) return
+    if (triggerId && btn.uuid !== triggerId) return
+    if (type === 'linkbtn' && !btn.$toolbtn && LID !== lid) return
 
-    if (record) { // 琛ㄦ牸涓Е鍙戞寜閽�
-      data = [record]
-    } else {
-      data = selectedData || []
+    if (btn.funcType === 'closetab') {
+      MKEmitter.emit('closeTabView', MenuID || btn.$MenuID)
+
+      if (btn.refreshTab && btn.refreshTab.length > 0) {
+        MKEmitter.emit('reloadMenuView', btn.refreshTab[btn.refreshTab.length - 1], 'table')
+      }
+      return
     }
+    
+    let data = record || selectedData || []
 
     if (data.length !== 1) {
       // 闇�瑕侀�夋嫨鍗曡鏃讹紝鏍¢獙鏁版嵁
       notification.warning({
         top: 92,
-        message: this.state.dict['main.action.confirm.selectSingleLine'],
-        duration: 5
-      })
-      return
-    } else if (!setting.primaryKey) {
-      // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾槸鍚﹁缃富閿�
-      notification.warning({
-        top: 92,
-        message: '鏈缃富閿紒',
+        message: '璇烽�夋嫨鍗曡鏁版嵁锛�',
         duration: 5
       })
       return
@@ -71,7 +133,7 @@
 
     let primaryId = data[0][setting.primaryKey] || ''
 
-    this.props.updateStatus('start')
+    this.setState({loading: true})
     this.changeUser(primaryId)
   }
 
@@ -83,7 +145,10 @@
     let _this = this
 
     let param = {
-      func: 'webapi_ChangeUser'
+      func: 'webapi_ChangeUser',
+      login_city: sessionStorage.getItem('city') || '',
+      login_id_address: sessionStorage.getItem('ipAddress') || '',
+      domain_name: window.btoa(window.encodeURIComponent(window.GLOB.host)),
     }
 
     if (this.props.BID) {
@@ -97,53 +162,85 @@
     param[setting.primaryKey] = primaryId
 
     confirm({
-      title: this.state.dict['main.action.confirm.tip'],
+      title: '纭畾瑕佹墽琛屽悧?',
       onOk() {
         return new Promise(resolve => {
           Api.genericInterface(param).then(res => {
             resolve()
             if (res.status) {
-              sessionStorage.setItem('avatar', res.icon || '')
               sessionStorage.setItem('UserID', res.UserID)
               sessionStorage.setItem('LoginUID', res.LoginUID)
               sessionStorage.setItem('User_Name', res.UserName)
               sessionStorage.setItem('Full_Name', res.FullName)
+              sessionStorage.setItem('avatar', res.icon || '')
+              sessionStorage.setItem('dataM', res.dataM ? 'true' : '')
+              sessionStorage.setItem('debug', res.debug || '')
+              sessionStorage.setItem('role_id', res.role_id || '')
+              sessionStorage.setItem('departmentcode', res.departmentcode || '')
+              sessionStorage.setItem('organization', res.organization || '')
+              sessionStorage.setItem('mk_user_type', res.mk_user_type || '')
+
+              if (res.paas_externalDatabase) {
+                sessionStorage.setItem('externalDatabase', res.paas_externalDatabase)
+                window.GLOB.externalDatabase = `[${res.paas_externalDatabase}]..`
+              } else {
+                sessionStorage.removeItem('externalDatabase')
+              }
+              
+              sessionStorage.removeItem('CloudAvatar')
+              sessionStorage.removeItem('cloudDataM')
+              sessionStorage.removeItem('CloudUserID')
+              sessionStorage.removeItem('CloudUserName')
+              sessionStorage.removeItem('CloudLoginUID')
+              sessionStorage.removeItem('CloudFullName')
               
               window.location.reload()
             } else {
               notification.error({
                 top: 92,
-                message: res.message || res.ErrMesg,
+                message: res.message || '鎵ц澶辫触锛�',
                 duration: btn.verify && btn.verify.ntime ? btn.verify.ntime : 10
               })
-              _this.props.updateStatus('over')
+              _this.setState({loading: false})
             }
           }, () => {
             resolve()
-            _this.props.updateStatus('over')
+            _this.setState({loading: false})
           })
         })
       },
       onCancel() {
-        _this.props.updateStatus('over')
+        _this.setState({loading: false})
       }
     })
   }
 
   render() {
-    const { btn, show } = this.props
+    const { btn } = this.props
+    const { loading, disabled, hidden } = this.state
+
+    if (hidden) return null
+
+    let label = ''
+
+    if (btn.show === 'link') {
+      label = <span>{btn.label}{btn.icon ? <MkIcon style={{marginLeft: '8px'}} type={btn.icon} /> : ''}</span>
+    } else if (btn.show === 'icon') {
+      label = !loading ? <MkIcon type={btn.icon} /> : null
+    } else {
+      label = <span>{!loading && btn.icon ? <MkIcon style={{marginRight: '8px'}} type={btn.icon} /> : ''}{btn.label}</span>
+    }
 
     return (
-      <div className="mk-btn-wrap">
-        {!show ? <Button
-          className={'mk-btn mk-' + btn.class}
-          icon={btn.icon}
-          onClick={() => {this.actionTrigger()}}
-        >{btn.label}</Button> : null}
-        {show === 'icon' ? <Button className="action-cell" icon={btn.icon || 'dash'} onClick={() => {this.actionTrigger()}}></Button> : null}
-        {show === 'text' ? <Button className="action-cell" onClick={() => {this.actionTrigger()}}>{btn.label}</Button> : null}
-        {show === 'all' ? <Button className="action-cell" icon={btn.icon || ''} onClick={() => {this.actionTrigger()}}>{btn.label}</Button> : null}
-      </div>
+      <Button
+        type="link"
+        title={disabled ? (btn.reason || '') : (btn.show === 'icon' ? btn.label : '')}
+        loading={loading}
+        disabled={disabled}
+        style={btn.style}
+        className={btn.hover || ''}
+        onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
+      >{label}</Button>
     )
   }
 }

--
Gitblit v1.8.0