diff --git a/src/components/Tree/src/Tree.vue b/src/components/Tree/src/Tree.vue
index 9c36373d..52fc3759 100644
--- a/src/components/Tree/src/Tree.vue
+++ b/src/components/Tree/src/Tree.vue
@@ -20,7 +20,7 @@
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 } from '/@/utils/helper/treeHelper';
+ import { filter, treeToList, eachTree } from '/@/utils/helper/treeHelper';
import { useTree } from './useTree';
import { useContextMenu } from '/@/hooks/web/useContextMenu';
import { CreateContextOptions } from '/@/components/ContextMenu';
@@ -355,7 +355,7 @@
const treeData = computed(() => {
const data = cloneDeep(getTreeData.value);
- data.forEach((item) => {
+ eachTree(data, (item, _parent) => {
const searchText = searchState.searchText;
const { highlight } = unref(props);
const {
@@ -397,6 +397,7 @@
)}
);
+ return item;
});
return data;
});
@@ -426,9 +427,7 @@
)}
-
- {extendSlots(slots)}
-
+
diff --git a/src/utils/helper/treeHelper.ts b/src/utils/helper/treeHelper.ts
index 0535af7b..352008ff 100644
--- a/src/utils/helper/treeHelper.ts
+++ b/src/utils/helper/treeHelper.ts
@@ -187,3 +187,18 @@ export function treeMapEach(
};
}
}
+
+/**
+ * 递归遍历树结构
+ * @param treeDatas 树
+ * @param callBack 回调
+ * @param parentNode 父节点
+ */
+export function eachTree(treeDatas: any[], callBack: Fn, parentNode = {}) {
+ treeDatas.forEach((element) => {
+ const newNode = callBack(element, parentNode) || element;
+ if (element.children) {
+ eachTree(element.children, callBack, newNode);
+ }
+ });
+}