From 5d8706040a328c007734ad4916b034d71696eaab Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 24 四月 2024 15:09:14 +0800
Subject: [PATCH] 2024-04-24

---
 src/tabviews/custom/components/tree/antd-tree/index.jsx |   81 +++++++++++++++++++++++++++-------------
 1 files changed, 55 insertions(+), 26 deletions(-)

diff --git a/src/tabviews/custom/components/tree/antd-tree/index.jsx b/src/tabviews/custom/components/tree/antd-tree/index.jsx
index 361b59a..e218c48 100644
--- a/src/tabviews/custom/components/tree/antd-tree/index.jsx
+++ b/src/tabviews/custom/components/tree/antd-tree/index.jsx
@@ -31,6 +31,7 @@
     treeNodes: null,           // 鍒楄〃鏁版嵁闆�
     expandedKeys: [],          // 灞曞紑鐨勬爲鑺傜偣
     selectedKeys: [],          // 閫変腑鐨勬爲鑺傜偣
+    lineActions: [],
     selected: false            // 閫変腑棣栬
   }
 
@@ -71,13 +72,28 @@
       }
     }
 
+    let lineActions = []
+    _config.action = _config.action || []
+    _config.action = _config.action.filter(item => {
+      if (item.Ot === 'requiredSgl') {
+        lineActions.push(item)
+        return false
+      }
+      return true
+    })
+
     _config.wrap.contentHeight = config.wrap.title || config.wrap.searchable === 'true' ? 'calc(100% - 45px)' : '100%'
+
+    if (_config.wrap.lineHeight) {
+      _config.style['--mk-tree-line-height'] = _config.wrap.lineHeight + 'px'
+    }
 
     this.setState({
       selected: _config.wrap.selected === 'true',
       config: _config,
       data: _data,
-      BID: BID || ''
+      BID: BID || '',
+      lineActions
     })
   }
 
@@ -505,30 +521,45 @@
     })
   }
 
-  renderActionTreeNodes = (nodes) => {
+  renderActionTreeNodes = (nodes, actShow) => {
     return nodes.map(item => {
-      let title = <>
-        {item.$title}
-        <Dropdown overlay={
-          <div className="mk-tree-dropdown-wrap" onClick={(e) => e.stopPropagation()}>
-            <MainAction
-              BID={this.state.BID}
-              BData={this.state.BData}
-              setting={this.state.config.setting}
-              actions={this.state.config.action}
-              columns={this.state.config.columns}
-              selectedData={[{...item, children: ''}]}
-            />
-          </div>
-        } placement="bottomCenter" trigger={['hover']}>
-          <MoreOutlined onClick={(e) => e.stopPropagation()}/>
-        </Dropdown>
-      </>
+      let title = null
+      if (actShow === 'line') {
+        title = <>
+          {item.$title}
+          <MainAction
+            BID={this.state.BID}
+            BData={this.state.BData}
+            setting={this.state.config.setting}
+            actions={this.state.lineActions}
+            columns={this.state.config.columns}
+            selectedData={[{...item, children: ''}]}
+          />
+        </>
+      } else {
+        title = <>
+          {item.$title}
+          <Dropdown overlay={
+            <div className="mk-tree-dropdown-wrap" onClick={(e) => e.stopPropagation()}>
+              <MainAction
+                BID={this.state.BID}
+                BData={this.state.BData}
+                setting={this.state.config.setting}
+                actions={this.state.lineActions}
+                columns={this.state.config.columns}
+                selectedData={[{...item, children: ''}]}
+              />
+            </div>
+          } placement="bottomCenter" trigger={['hover']}>
+            <MoreOutlined onClick={(e) => e.stopPropagation()}/>
+          </Dropdown>
+        </>
+      }
 
       if (item.children) {
         return (
           <TreeNode icon={<span><FolderOpenOutlined /><FolderOutlined /></span>} title={title} key={item.$key} dataRef={item}>
-            {this.renderActionTreeNodes(item.children)}
+            {this.renderActionTreeNodes(item.children, actShow)}
           </TreeNode>
         )
       }
@@ -591,9 +622,7 @@
   }
 
   render() {
-    const { BID, BData, config, loading, treeNodes, expandedKeys, selectedKeys } = this.state
-
-    let extra = config.action && config.action.length > 0
+    const { BID, BData, config, loading, treeNodes, expandedKeys, selectedKeys, lineActions } = this.state
 
     return (
       <div className="custom-tree-box" id={'anchor' + config.uuid} style={config.style}>
@@ -607,7 +636,7 @@
           <span className={'title ' + (config.wrap.searchable !== 'true' ? 'search-unable' : '')}>{config.wrap.title}</span>
           {config.wrap.searchable === 'true' ? <Search allowClear onSearch={this.treeFilter} /> : null}
         </div> : null}
-        {extra ? <MainAction
+        {config.action.length ? <MainAction
           BID={BID}
           setting={config.setting}
           actions={config.action}
@@ -621,12 +650,12 @@
             onSelect={this.selectTreeNode}
             expandedKeys={expandedKeys}
             selectedKeys={selectedKeys}
-            onRightClick={!extra ? this.changeExpandedAllKeys : null}
+            onRightClick={!lineActions.length ? this.changeExpandedAllKeys : null}
             onExpand={this.changeExpandedKeys}
             showIcon={config.wrap.showIcon === 'true'}
             showLine={config.wrap.showLine === 'true'}
           >
-            {!extra ? this.renderTreeNodes(treeNodes) : this.renderActionTreeNodes(treeNodes)}
+            {!lineActions.length ? this.renderTreeNodes(treeNodes) : this.renderActionTreeNodes(treeNodes, config.wrap.actShow)}
           </Tree>
         </div> : null}
         {treeNodes && treeNodes.length === 0 ? <Empty description={false}/> : null}

--
Gitblit v1.8.0