From 7a279d100f1ab121f1f03794da6c6ebdb735f5eb Mon Sep 17 00:00:00 2001 From: "841322557@qq.com" <841322557@qq.com> Date: Thu, 13 Jun 2024 09:40:18 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=EF=BC=88BasicTree=EF=BC=89=E6=A0=91?= =?UTF-8?q?=E5=BD=A2=E7=BB=84=E4=BB=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E5=B1=82=E7=BA=A7=E7=9A=84=E6=90=9C=E7=B4=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Tree/src/Tree.vue | 215 ++++++++++++++++--------------- src/components/Tree/src/props.ts | 2 + src/utils/helper/treeHelper.ts | 12 +- 3 files changed, 120 insertions(+), 109 deletions(-) diff --git a/src/components/Tree/src/Tree.vue b/src/components/Tree/src/Tree.vue index d66f426..974948f 100644 --- a/src/components/Tree/src/Tree.vue +++ b/src/components/Tree/src/Tree.vue @@ -363,6 +363,7 @@ return result; }, unref(getFieldNames), + props.onlySearchLevel, ); if (expandOnSearch) { @@ -621,151 +622,151 @@ }); diff --git a/src/components/Tree/src/props.ts b/src/components/Tree/src/props.ts index 4d06848..9c2108b 100644 --- a/src/components/Tree/src/props.ts +++ b/src/components/Tree/src/props.ts @@ -101,6 +101,8 @@ export const basicProps: any = { checkOnSearch: propTypes.bool.def(false), // 搜索完成自动select所有结果 selectedOnSearch: propTypes.bool.def(false), + // 只搜索树表指定的层级,获得该层级下所有结果 + onlySearchLevel: propTypes.number, }; export const treeNodeProps = { diff --git a/src/utils/helper/treeHelper.ts b/src/utils/helper/treeHelper.ts index af93fbb..a5e13eb 100644 --- a/src/utils/helper/treeHelper.ts +++ b/src/utils/helper/treeHelper.ts @@ -137,18 +137,26 @@ export function filter( tree: T[], func: (n: T) => boolean, config: Partial = {}, + onlySearchLevel?: number, ): T[] { config = getConfig(config); const children = config.children as string; - function listFilter(list: T[]) { + function listFilter(list: T[], level?: number) { return list .map((node: any) => ({ ...node })) .filter((node) => { + if (level === 1) { + return func(node); + } + if (onlySearchLevel && level) { + node[children] = node[children] && listFilter(node[children], level - 1); + return node[children] && node[children].length; + } node[children] = node[children] && listFilter(node[children]); return func(node) || (node[children] && node[children].length); }); } - return listFilter(tree); + return listFilter(tree, onlySearchLevel); } export function forEach( -- Gitee From 9349370cfb95356633310b2a7e9b28a92eae09ba Mon Sep 17 00:00:00 2001 From: "841322557@qq.com" <841322557@qq.com> Date: Thu, 13 Jun 2024 15:10:38 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Tree/src/Tree.vue | 214 +++++++++++++++---------------- 1 file changed, 107 insertions(+), 107 deletions(-) diff --git a/src/components/Tree/src/Tree.vue b/src/components/Tree/src/Tree.vue index 974948f..345ad43 100644 --- a/src/components/Tree/src/Tree.vue +++ b/src/components/Tree/src/Tree.vue @@ -622,151 +622,151 @@ }); -- Gitee