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