fixbug:权限修改的bug,全量提交没点击时候丢失子节点的按钮

This commit is contained in:
lvjunzhao
2025-04-18 16:53:12 +08:00
parent 3dd55f85f7
commit 08b7f35d2a

View File

@ -186,7 +186,7 @@
});
findMenuTree(buttonSelectData.value, treeData.value, btnCheckedKey, 'button');
}
btnKeys.value = btnCheckedKey;
btnKeys.value = Array.from(new Set([...btnKeys.value, ...btnCheckedKey]));
let lostColKey = [];
colKeys.value.forEach((o) => {
@ -205,7 +205,7 @@
});
findMenuTree(columnSelectData.value, treeData.value, colCheckedKey, 'column');
}
colKeys.value = colCheckedKey;
colKeys.value = Array.from(new Set([...colKeys.value, ...colCheckedKey]));
let lostFieldKey = [];
fieldKeys.value.forEach((o) => {
@ -224,7 +224,7 @@
});
findMenuTree(fieldSelectData.value, treeData.value, fieldCheckedKey, 'field');
}
fieldKeys.value = fieldCheckedKey;
fieldKeys.value = Array.from(new Set([...fieldKeys.value, ...fieldCheckedKey]));
nextTick(() => {
getTree(unref(ButtonRef))?.setCheckedKeys(authList.buttonIds);
@ -289,6 +289,11 @@
// colKeys.value = getTree(unref(ColumnRef)).getCheckedKeys();
// fieldKeys.value = getTree(unref(FieldRef)).getCheckedKeys();
// 过滤无效的权限 ID
btnKeys.value = btnKeys.value.filter((o) => btnFilterKeys.value.includes(o));
colKeys.value = colKeys.value.filter((o) => colFilterKeys.value.includes(o));
fieldKeys.value = fieldKeys.value.filter((o) => fieldFilterKeys.value.includes(o));
// btnKeys.value = btnKeys.value.filter((o) => {
// return btnFilterKeys.value.includes(o);
// });
@ -299,6 +304,7 @@
// return fieldFilterKeys.value.includes(o);
// });
// 提交更新后的权限数据
await RoleSetAuth({
id: rowId.value,
type: typeKey.value == 4?NaN:typeKey.value,
@ -307,6 +313,7 @@
columnIds: colKeys.value,
formIds: fieldKeys.value,
});
notification.success({
message: t('提示'),
description: t('功能授权更新成功'),
@ -362,14 +369,23 @@
colFilterKeys.value = [];
fieldFilterKeys.value = [];
findMenuTree(buttonSelectData.value, treeData.value, addMenuSelect, 'button');
findMenuTree(columnSelectData.value, treeData.value, addMenuSelect, 'column');
findMenuTree(fieldSelectData.value, treeData.value, addMenuSelect, 'field');
// 使用 Set 合并已选中和新增选中的菜单,避免重复
const allMenuKeys = new Set([...menuKeys.value, ...addMenuSelect]);
let newBtnSelect = [...new Set([...btnKeys.value, ...addMenuSelect])];
getTree(unref(ButtonRef))?.setExpandedKeys(newBtnSelect);
getTree(unref(ColumnRef))?.setExpandedKeys([...new Set([...colKeys.value, ...addMenuSelect])]);
getTree(unref(FieldRef))?.setExpandedKeys([...new Set([...fieldKeys.value, ...addMenuSelect])]);
// 确保未选中菜单的子节点不会丢失
findMenuTree(buttonSelectData.value, treeData.value, Array.from(allMenuKeys), 'button');
findMenuTree(columnSelectData.value, treeData.value, Array.from(allMenuKeys), 'column');
findMenuTree(fieldSelectData.value, treeData.value, Array.from(allMenuKeys), 'field');
// 更新按钮、字段、表单的选中状态
btnKeys.value = Array.from(new Set([...btnKeys.value, ...addMenuSelect]));
colKeys.value = Array.from(new Set([...colKeys.value, ...addMenuSelect]));
fieldKeys.value = Array.from(new Set([...fieldKeys.value, ...addMenuSelect]));
// 扩展树的展开状态
getTree(unref(ButtonRef))?.setExpandedKeys(Array.from(allMenuKeys));
getTree(unref(ColumnRef))?.setExpandedKeys(Array.from(allMenuKeys));
getTree(unref(FieldRef))?.setExpandedKeys(Array.from(allMenuKeys));
}
function getParentKeys(checkedKey, arr, keys) {
for (let i = 0; i < arr.length; i++) {