From af367ddd19a05acc94fb48c57fbd9b7d0ee6feb2 Mon Sep 17 00:00:00 2001 From: chenxing Date: Tue, 15 Sep 2026 17:18:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(auth):=20=E4=BF=AE=E5=A4=8D=E5=8B=BE?= =?UTF-8?q?=E9=80=89=E7=BA=A7=E8=81=94=E8=A7=86=E8=A7=89=E4=B8=8D=E7=94=9F?= =?UTF-8?q?=E6=95=88=E2=80=94=E2=80=94checkNode=20=E6=8F=90=E5=89=8D=20ret?= =?UTF-8?q?urn=20=E8=B7=B3=E8=BF=87=E5=A4=96=E8=A7=82=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit zTree checkNode 在 node.checked 已等于目标值且 checkTypeFlag=false 时会提前 return, setChkClass(复选框外观刷新)被跳过。原先实现先手动赋值 n.checked 再调 checkNode, 导致除点击节点外,联动到的祖先/子孙节点只改数据、外观不刷新,表现为级联未生效。 改为由 checkNode 内部设置 checked 并刷新外观后再处理后续联动。 --- src/utils/treeCascade.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/utils/treeCascade.ts b/src/utils/treeCascade.ts index 6e1319f..33a71ca 100644 --- a/src/utils/treeCascade.ts +++ b/src/utils/treeCascade.ts @@ -77,8 +77,10 @@ export function setAppModulesChecked(app: { modules?: ModuleVo[] } | null | unde export function checkNodeWithCascade(treeObj: any, node: any, checked: boolean): void { if (!treeObj || !node) return; const set = (n: any, v: boolean) => { - n.checked = v; if (!v && n.inheritFlag !== undefined) n.inheritFlag = false; + // 注意:必须先调 checkNode,由 zTree 内部设置 checked 并调用 setChkClass 刷新复选框外观。 + // 若先手动 n.checked = v 再调 checkNode,会命中 zTree 的 + // `node.checked === checked && !checkTypeFlag` 提前 return,导致联动节点的外观不刷新。 treeObj.checkNode(n, v, false, false); }; set(node, checked);