Browse Source

新增角色多子节点新增问题

zhangrenyuan/feature-20250714163943-金币前端二期
ZhangYong 3 weeks ago
parent
commit
069da35350
  1. 63
      src/views/permissions/permission.vue

63
src/views/permissions/permission.vue

@ -694,6 +694,8 @@ const handleAddRole = async function () {
}
});
});
addRole.value.roleName = addRole.value.roleName.replace(/\s+/g, '');
console.log('去除角色名空格:',addRole.value.roleName);
const res = await API({
@ -859,52 +861,47 @@ const handleEditRolePermissionCheck = (checkedNodes, { checkedKeys }) => {
const handleCheckChange = async (checkedNodes, checkedInfo) => {
const { checkedKeys, checkedNodes: allCheckedNodes } = checkedInfo;
//
if (allCheckedNodes.length === 0) return;
//
const node = allCheckedNodes[0];
//
const checked = checkedKeys.includes(node.id);
console.log('checkedInfo', checkedInfo);
console.log('node', node);
console.log('checked', checked);
if (checked) {
const newCheckedKeys = [...checkedInfo.checkedKeys];
console.log('初始选中项:', newCheckedKeys);
//
const uniqueKeys = [...new Set(newCheckedKeys)];
selectParentNodes(data.value, node.id, uniqueKeys);
console.log('包含父级的选中项:', uniqueKeys);
addRole.value.checkedKeys = uniqueKeys;
} else {
addRole.value.checkedKeys = checkedInfo.checkedKeys;
console.log('else');
//
if (allCheckedNodes.length === 0) {
addRole.value.checkedKeys = [];
return;
}
// SetID
const allKeys = new Set(checkedKeys);
//
allCheckedNodes.forEach(node => {
//
selectParentNodes(data.value, node.id, allKeys);
});
// Set
addRole.value.checkedKeys = Array.from(allKeys);
console.log('包含所有父级的选中项:', addRole.value.checkedKeys);
};
const selectParentNodes = (treeData, nodeId, checkedKeys) => {
if (!Array.isArray(treeData)) return false;
if (!Array.isArray(treeData)) return false;
for (const item of treeData) {
if (item.children && Array.isArray(item.children) && item.children.length > 0) {
const found = selectParentNodes(item.children, nodeId, checkedKeys);
if (found) {
//
if (!checkedKeys.includes(item.id)) {
checkedKeys.push(item.id);
}
//
if (item.children && item.children.length > 0) {
const foundInChildren = selectParentNodes(item.children, nodeId, checkedKeys);
if (foundInChildren) {
//
checkedKeys.add(item.id);
return true;
}
}
//
if (item.id === nodeId) {
return true;
}
}
return false;
};
//

Loading…
Cancel
Save