From 3a9effd36f8684aa9705c7ed98ea9ddbc4e17ea3 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 01 四月 2024 17:03:30 +0800
Subject: [PATCH] 2024-04-01

---
 src/tabviews/zshare/actionList/tabbutton/index.jsx |  127 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 122 insertions(+), 5 deletions(-)

diff --git a/src/tabviews/zshare/actionList/tabbutton/index.jsx b/src/tabviews/zshare/actionList/tabbutton/index.jsx
index 87402ee..461c1aa 100644
--- a/src/tabviews/zshare/actionList/tabbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/tabbutton/index.jsx
@@ -1,11 +1,12 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Button, notification } from 'antd'
+import { Button, notification, Dropdown } from 'antd'
 
 import MKEmitter from '@/utils/events.js'
 import MkIcon from '@/components/mk-icon'
-// import './index.scss'
+
+import './index.scss'
 
 class TabButton extends Component {
   static propTpyes = {
@@ -103,7 +104,7 @@
     const { btn, selectedData, BID } = this.props
     const { disabled } = this.state
 
-    if (disabled) return
+    if (disabled || btn.multiMenus) return
     if (triggerId && btn.uuid !== triggerId) return
 
     if (type === 'linkbtn' && !btn.$toolbtn && !is(fromJS(selectedData || []), fromJS(record))) {
@@ -138,8 +139,22 @@
       let ids = data.map(d => (d.$$uuid || ''))
       ids = ids.filter(Boolean)
       primaryId = ids.join(',')
-    } else if (btn.Ot === 'notRequired' && BID) {
-      primaryId = BID
+    } else if (btn.Ot === 'notRequired') {
+      if (btn.sysId === 'js') {
+        primaryId = (() => {
+          let uuid = []
+          let timestamp = new Date().getTime()
+          let _options = '0123456789abcdefghigklmnopqrstuv'
+          for (let i = 0; i < 19; i++) {
+            uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1))
+          }
+          uuid = timestamp + uuid.join('')
+          return uuid
+        })()
+        primaryId = primaryId + (btn.sign || '')
+      } else {
+        primaryId = BID || ''
+      }
     }
 
     let newtab = {}
@@ -197,6 +212,92 @@
     }
   }
 
+  triggerMenu = (tab) => {
+    const { btn, selectedData, BID } = this.props
+
+    let data = selectedData || []
+
+    if (btn.Ot !== 'notRequired' && data.length === 0) {
+      // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾暟鎹�
+      notification.warning({
+        top: 92,
+        message: '璇烽�夋嫨琛岋紒',
+        duration: 5
+      })
+      return false
+    } else if (btn.Ot === 'requiredSgl' && data.length !== 1) {
+      // 闇�瑕侀�夋嫨鍗曡鏃讹紝鏍¢獙鏁版嵁
+      notification.warning({
+        top: 92,
+        message: '璇烽�夋嫨鍗曡鏁版嵁锛�',
+        duration: 5
+      })
+      return
+    }
+
+    let primaryId = ''
+
+    if (btn.Ot === 'requiredSgl') {
+      primaryId = data[0].$$uuid || ''
+    } else if (btn.Ot === 'requiredOnce') {
+      let ids = data.map(d => (d.$$uuid || ''))
+      ids = ids.filter(Boolean)
+      primaryId = ids.join(',')
+    } else if (btn.Ot === 'notRequired') {
+      if (btn.sysId === 'js') {
+        primaryId = (() => {
+          let uuid = []
+          let timestamp = new Date().getTime()
+          let _options = '0123456789abcdefghigklmnopqrstuv'
+          for (let i = 0; i < 19; i++) {
+            uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1))
+          }
+          uuid = timestamp + uuid.join('')
+          return uuid
+        })()
+        primaryId = primaryId + (tab.sign || '')
+      } else {
+        primaryId = BID || ''
+      }
+    }
+
+    let menuId = tab.menuId.slice(-1)[0]
+    let menu = null
+
+    if (window.GLOB.mkThdMenus.has(menuId)) {
+      menu = {...window.GLOB.mkThdMenus.get(menuId), param: { $BID: primaryId }}
+    } else if (tab.MenuID) {
+      menu = {
+        MenuID: tab.MenuID,
+        MenuName: tab.MenuName,
+        type: tab.tabType,
+        param: { $BID: primaryId }
+      }
+    }
+
+    if (!menu) {
+      notification.warning({
+        top: 92,
+        message: '鑿滃崟宸插垹闄ゆ垨娌℃湁璁块棶鏉冮檺锛�',
+        duration: 5
+      })
+      return
+    }
+
+
+    if (btn.openTab === 'view') {
+      window.open('#/view/' + menu.MenuID + '/' + primaryId)
+    } else {
+      MKEmitter.emit('modifyTabs', menu, true)
+  
+      MKEmitter.emit('openNewTab')
+    }
+
+    if (window.GLOB.systemType === 'production') {
+      MKEmitter.emit('queryTrigger', {menuId: btn.uuid, name: '鏍囩椤�'})
+    }
+  }
+
   render() {
     const { btn, name } = this.props
     const { disabled, hidden } = this.state
@@ -213,6 +314,22 @@
       label = <span>{btn.icon ? <MkIcon style={{marginRight: '8px'}} type={btn.icon} /> : ''}{name || btn.label}</span>
     }
 
+    if (btn.multiMenus && !disabled) {
+      return (<Dropdown
+        overlay={<div className="mk-tab-dropdown-wrap">{
+          btn.multiMenus.map(tab => <div key={tab.uuid} onClick={() => this.triggerMenu(tab)}>{tab.name}</div>)
+        }</div>}
+        trigger={['hover']}
+      >
+        <Button
+          type="link"
+          title={btn.show === 'icon' ? btn.label : ''}
+          style={btn.style || null}
+          className={btn.$toolbtn ? (btn.hover || '') : ''}
+        >{label}</Button>
+      </Dropdown>)
+    }
+
     return (
       <Button
         type="link"

--
Gitblit v1.8.0