function handleCheck(data:any, { checkedKeys }) {
if (checkedKeys.includes(data.id)) {
// 选中
let node = menuRef.value.getNode(data.id);
selectChildren(data, true); // 选中子节点
parentNodesChange(node); // 选中父节点
} else {
selectChildren(data, false); // 取消子节点
}
}
function selectChildren(data: { children: any[]; }, checked: boolean) {
data &&
data.children &&
data.children.map(item => {
menuRef.value.setChecked(item.id, checked);
if (data.children) {
selectChildren(item, checked);
}
});
}
// 父级递归
function parentNodesChange(node:any) {
if (node.parent) {
for (let key in node) {
if (key == "id") {
menuRef.value.setChecked(node, true);
}
}
if (node.parent && node.id !== 0) {
parentNodesChange(node.parent);
}
}
}