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); + } + }); +}