2
0

fix: 修复修改角色的菜单权限bug

This commit is contained in:
caiyuchao
2025-01-08 15:34:07 +08:00
parent b9026be4b1
commit 168e4bf1b8
2 changed files with 18 additions and 9 deletions

View File

@@ -10,17 +10,26 @@ import type { DataNode } from 'ant-design-vue/es/tree';
*/ */
export function transformMenuChildWithRootIds(menuList: DataNode[], checkedKeys: number[]): number[] { export function transformMenuChildWithRootIds(menuList: DataNode[], checkedKeys: number[]): number[] {
const checkedKeysSet = new Set(checkedKeys); const checkedKeysSet = new Set(checkedKeys);
function changeCheckedKeys(menus: DataNode[]) { function changeCheckedKeys(menus: DataNode[], checkedKey: number): boolean {
menus.forEach(menu => { for (let menu of menus) {
if (menu.children) { if (menu.key === checkedKey) {
changeCheckedKeys(menu.children);
checkedKeysSet.add(menu.key as number); checkedKeysSet.add(menu.key as number);
return true;
} }
}); if (menu.children && menu.children.length > 0) {
let isFind = changeCheckedKeys(menu.children, checkedKey);
if (isFind) {
checkedKeysSet.add(menu.key as number);
return true;
}
}
};
return false;
} }
checkedKeys.forEach(checkedKey => {
changeCheckedKeys(menuList); changeCheckedKeys(menuList, checkedKey);
})
return Array.from(checkedKeysSet); return Array.from(checkedKeysSet);
} }

View File

@@ -83,7 +83,7 @@ function closeDrawer() {
async function handleSubmit() { async function handleSubmit() {
await validate(); await validate();
const menuIds = menuAuthRef.value?.checkedKeys(); const menuIds = transformMenuChildWithRootIds(menuAuthRef.value?.tree || [], model.value.menuIds);
const {error} = await (props.operateType === 'edit' ? doPutRole : doPostRole)({ const {error} = await (props.operateType === 'edit' ? doPutRole : doPostRole)({
...model.value, ...model.value,