fix(auth): 修复勾选级联视觉不生效——checkNode 提前 return 跳过外观刷新
build / build (push) Successful in 1m58s

zTree checkNode 在 node.checked 已等于目标值且 checkTypeFlag=false 时会提前 return,
setChkClass(复选框外观刷新)被跳过。原先实现先手动赋值 n.checked 再调 checkNode,
导致除点击节点外,联动到的祖先/子孙节点只改数据、外观不刷新,表现为级联未生效。
改为由 checkNode 内部设置 checked 并刷新外观后再处理后续联动。
This commit is contained in:
chenxing
2026-09-15 17:18:21 +08:00
parent e1cdc26697
commit af367ddd19
+3 -1
View File
@@ -77,8 +77,10 @@ export function setAppModulesChecked(app: { modules?: ModuleVo[] } | null | unde
export function checkNodeWithCascade(treeObj: any, node: any, checked: boolean): void { export function checkNodeWithCascade(treeObj: any, node: any, checked: boolean): void {
if (!treeObj || !node) return; if (!treeObj || !node) return;
const set = (n: any, v: boolean) => { const set = (n: any, v: boolean) => {
n.checked = v;
if (!v && n.inheritFlag !== undefined) n.inheritFlag = false; 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); treeObj.checkNode(n, v, false, false);
}; };
set(node, checked); set(node, checked);