From 697c405ac874da346e74df40266763370355154d Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期六, 08 三月 2025 15:40:25 +0800
Subject: [PATCH] ASN单

---
 src/views/components/GeneralTree.vue |   72 ++++++++++++++++++++++++++++++++---
 1 files changed, 65 insertions(+), 7 deletions(-)

diff --git a/src/views/components/GeneralTree.vue b/src/views/components/GeneralTree.vue
index 2873f95..2e063e9 100644
--- a/src/views/components/GeneralTree.vue
+++ b/src/views/components/GeneralTree.vue
@@ -4,7 +4,7 @@
  * @version: 
  * @Date: 2024-06-19 11:07:21
  * @LastEditors: Ben Lin
- * @LastEditTime: 2024-06-21 13:31:30
+ * @LastEditTime: 2024-10-22 10:34:03
 -->
 <template>
   <div class="m-4 mr-0 overflow-hidden bg-white">
@@ -18,15 +18,26 @@
       :treeData="treeData"
       :renderIcon="createIcon"
       :fieldNames="fieldNames"
+      :selectedKeys="selectedKeys"
       @select="handleSelect"
       @handleAdd="handleAdd"
       @unselect="UnSelect"
+      :beforeRightClick="props.beforeRightClick"
+      :defaultExpandAll="true"
+      ref="tigerTree"
     />
   </div>
 </template>
 <script lang="ts" setup>
-  import { onMounted, ref } from 'vue';
-  import { FieldNames, TigerTree, TreeItem } from '/@/components/TigerTree'
+  import { onMounted, ref, watch } from 'vue';
+  import {
+    ContextMenuItem,
+    ContextMenuOptions,
+    FieldNames,
+    TigerTree,
+    TreeItem,
+  } from '/@/components/TigerTree';
+  import { EventDataNode } from 'ant-design-vue/lib/tree';
 
   defineOptions({ name: 'CustTree' });
 
@@ -37,14 +48,20 @@
       type: String,
     },
     treeData: {
-      type:  Array as PropType<TreeItem[]>,
+      type: Array as PropType<TreeItem[]>,
     },
     createIcon: {
       type: Function as PropType<(params: Recordable<any>) => string>,
     },
-    add: {type: Boolean,},
-    fieldNames: {type: Object as PropType<FieldNames>},
+    add: { type: Boolean },
+    fieldNames: { type: Object as PropType<FieldNames> },
+    beforeRightClick: {
+      type: Function as PropType<(...arg: any) => ContextMenuItem[] | ContextMenuOptions>,
+      default: undefined,
+    },
   });
+  const tigerTree = ref(null);
+  const selectedKeys = ref<KeyType[]>([])
 
   function handleSelect(keys, e) {
     emit('select', keys[0], e);
@@ -54,10 +71,51 @@
     emit('handleAdd');
   }
 
-  
   function UnSelect(node) {
     emit('UnSelect', node);
   }
 
+  function expandAll(expandAll: boolean) {
+    if (tigerTree.value) {
+      tigerTree.value.expandAll(expandAll);
+    }
+  }
+
+  function getExpandedKeys() {
+    if (tigerTree.value) {
+      return tigerTree.value.getExpandedKeys();
+    }
+    return [];
+  }
+
+  function setSelectedKeys(keys: KeyType[]) {
+    selectedKeys.value = keys;
+    if (tigerTree.value) {
+      tigerTree.value.setSelectedKeys(keys);
+    }
+  }
+
+  function getSelectedKeys() {
+    if (tigerTree.value) {
+      return tigerTree.value.getSelectedKeys();
+    }
+    return [];
+  }
+
+  function getNodeById(Id: string) {
+    if (tigerTree.value) {
+      return tigerTree.value.getNodeById(Id);
+    }
+    return {};
+  }
+
+  defineExpose({
+    getExpandedKeys,
+    expandAll,
+    setSelectedKeys,
+    getSelectedKeys,
+    getNodeById
+  });
+
   onMounted(() => {});
 </script>

--
Gitblit v1.9.3