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