From 08abfcfea8247c394b2034cad59734846b403dd9 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期一, 28 十月 2024 22:22:58 +0800
Subject: [PATCH] 计划任务优化

---
 src/components/Tree/src/BasicTree.vue |   52 +++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 35 insertions(+), 17 deletions(-)

diff --git a/src/components/Tree/src/BasicTree.vue b/src/components/Tree/src/BasicTree.vue
index 1d7f875..dbd4e9a 100644
--- a/src/components/Tree/src/BasicTree.vue
+++ b/src/components/Tree/src/BasicTree.vue
@@ -23,16 +23,17 @@
   import TreeHeader from './components/TreeHeader.vue';
   import { Tree, Spin, Empty } from 'ant-design-vue';
   import { TreeIcon } from './TreeIcon';
-  import { ScrollContainer } from '/@/components/Container';
+  import { ScrollContainer } from '@/components/Container';
   import { omit, get, difference, cloneDeep } from 'lodash-es';
-  import { isArray, isBoolean, isEmpty, isFunction } from '/@/utils/is';
-  import { extendSlots, getSlot } from '/@/utils/helper/tsxHelper';
-  import { filter, treeToList, eachTree } from '/@/utils/helper/treeHelper';
+  import { isArray, isBoolean, isEmpty, isFunction } from '@/utils/is';
+  import { extendSlots, getSlot } from '@/utils/helper/tsxHelper';
+  import { filter, treeToList, eachTree } from '@/utils/helper/treeHelper';
   import { useTree } from './hooks/useTree';
-  import { useContextMenu } from '/@/hooks/web/useContextMenu';
-  import { CreateContextOptions } from '/@/components/ContextMenu';
+  import { useContextMenu } from '@/hooks/web/useContextMenu';
+  import { CreateContextOptions } from '@/components/ContextMenu';
   import { treeEmits, treeProps } from './types/tree';
-  import { createBEM } from '/@/utils/bem';
+  import { createBEM } from '@/utils/bem';
+  import type { TreeProps } from 'ant-design-vue/es/tree/Tree';
 
   export default defineComponent({
     name: 'BasicTree',
@@ -78,8 +79,8 @@
           expandedKeys: state.expandedKeys,
           selectedKeys: state.selectedKeys,
           checkedKeys: state.checkedKeys,
-          halfCheckedKeys: state.halfCheckedKeys,
           checkStrictly: state.checkStrictly,
+          halfCheckedKeys: state.halfCheckedKeys,
           fieldNames: unref(getFieldNames),
           'onUpdate:expandedKeys': (v: KeyType[]) => {
             state.expandedKeys = v;
@@ -91,7 +92,7 @@
           },
           onCheck: (v: CheckKeys, e) => {
             let currentValue = toRaw(state.checkedKeys) as KeyType[];
-            state.halfCheckedKeys = e.halfCheckedKeys;
+            state.halfCheckedKeys = e.halfCheckedKeys; //鍔犲崐key
             if (isArray(currentValue) && searchState.startSearch) {
               const value = e.node.eventKey;
               currentValue = difference(currentValue, getChildrenKeys(value));
@@ -110,15 +111,15 @@
           },
           onRightClick: handleRightClick,
         };
-        return omit(propsData, 'treeData', 'class');
+        return omit(propsData, 'treeData', 'class') as TreeProps;
       });
 
-      const getTreeData = computed((): TreeItem[] =>
+      const getTreeSearchData = computed((): TreeItem[] =>
         searchState.startSearch ? searchState.searchData : unref(treeDataRef),
       );
 
       const getNotFound = computed((): boolean => {
-        return !getTreeData.value || getTreeData.value.length === 0;
+        return !getTreeSearchData.value || getTreeSearchData.value.length === 0;
       });
 
       const {
@@ -159,6 +160,10 @@
         if (!contextMenuOptions.items?.length) return;
         contextMenuOptions.items = contextMenuOptions.items.filter((item) => !item.hidden);
         createContextMenu(contextMenuOptions);
+      }
+
+      function getTreeData() {
+        return unref(treeDataRef);
       }
 
       function setExpandedKeys(keys: KeyType[]) {
@@ -333,6 +338,7 @@
       });
 
       const instance: TreeActionType = {
+        getTreeData,
         setExpandedKeys,
         getExpandedKeys,
         setSelectedKeys,
@@ -379,7 +385,7 @@
       }
 
       const treeData = computed(() => {
-        const data = cloneDeep(getTreeData.value);
+        const data = cloneDeep(getTreeSearchData.value);
         eachTree(data, (item, _parent) => {
           const searchText = searchState.searchText;
           const { highlight } = unref(props);
@@ -406,16 +412,26 @@
           ) : (
             title
           );
+
+          const iconDom = icon ? (
+            <TreeIcon icon={icon} />
+          ) : slots.icon ? (
+            <span class="mr-2">{getSlot(slots, 'icon')}</span>
+          ) : null;
+
           item[titleField] = (
             <span
-              class={`${bem('title')} pl-2`}
+              class={`${bem('title')}`}
               onClick={handleClickNode.bind(null, item[keyField], item[childrenField])}
             >
               {slots?.title ? (
-                getSlot(slots, 'title', item)
+                <>
+                  {iconDom}
+                  {getSlot(slots, 'title', item)}
+                </>
               ) : (
                 <>
-                  {icon && <TreeIcon icon={icon} />}
+                  {iconDom}
                   {titleDom}
                   <span class={bem('actions')}>{renderAction(item)}</span>
                 </>
@@ -457,7 +473,9 @@
               tip="鍔犺浇涓�..."
             >
               <ScrollContainer style={scrollStyle} v-show={!unref(getNotFound)}>
-                <Tree {...unref(getBindValues)} showIcon={false} treeData={treeData.value} />
+                <Tree {...unref(getBindValues)} showIcon={false} treeData={treeData.value}>
+                  {extendSlots(slots, ['title'])}
+                </Tree>
               </ScrollContainer>
               <Empty
                 v-show={unref(getNotFound)}

--
Gitblit v1.9.3