fix(角色管理): 修复数据权限更新逻辑并移除调试日志
修复 updateDataScope 函数的数据权限更新逻辑,增加 updateAll 参数控制更新范围 优化菜单选择变化时的数据权限处理,增加读写权限的自动管理 移除所有调试用的 console.log 语句
This commit is contained in:
parent
977615baed
commit
07a27fa13d
|
@ -81,7 +81,7 @@ const rules: FormRules = {
|
|||
};
|
||||
|
||||
watch(activeTab, async (val) => {
|
||||
console.log("activeTab", val); // 输出当前选中的标签的 key 或其他标识符
|
||||
// console.log("activeTab", val); // 输出当前选中的标签的 key 或其他标识符
|
||||
opRow.value = dataList.value.find(item => item.roleKey == val);
|
||||
if (!opRow.value) {
|
||||
return;
|
||||
|
@ -89,7 +89,7 @@ watch(activeTab, async (val) => {
|
|||
await getRoleInfo("update", opRow.value);
|
||||
Object.assign(formData, opRow.value);
|
||||
formData.menuIds = opRow.value.selectedMenuList;
|
||||
updateDataScope();
|
||||
updateDataScope(true);
|
||||
});
|
||||
async function getRoleInfo(type: "add" | "update", row?: RoleDTO) {
|
||||
try {
|
||||
|
@ -149,23 +149,47 @@ watch(menuTree, (val) => {
|
|||
};
|
||||
|
||||
// 遍历菜单树,开始收集菜单项
|
||||
console.log("遍历菜单树 val", val);
|
||||
// console.log("遍历菜单树 val", val);
|
||||
val.forEach(menuOption => {
|
||||
collectMenus(menuOption);
|
||||
})
|
||||
|
||||
console.log("categories", categories); // 输出处理后的菜单选项结构,方便调试和查看结构
|
||||
// console.log("categories", categories); // 输出处理后的菜单选项结构,方便调试和查看结构
|
||||
// 更新处理后的菜单选项
|
||||
processedMenuOptions.value = categories;
|
||||
});
|
||||
|
||||
// 监听菜单选择变化,更新数据权限
|
||||
const updateDataScope = () => {
|
||||
const updateDataScope = (updateAll: boolean) => {
|
||||
if (updateAll) {
|
||||
dataScope.value = {};
|
||||
}
|
||||
// console.log("updateDataScope formData.menuIds", formData.menuIds);
|
||||
processedMenuOptions.value.forEach(category => {
|
||||
const selectedItem = category.items.find(item => item.menuName == '读写' && formData.menuIds.includes(item.id));
|
||||
const permission = selectedItem ? '1' : '0';
|
||||
dataScope.value[category.id] = `${category.id}-${permission}`;
|
||||
// 检查是否有任何非“读写”的菜单权限被选中
|
||||
const hasSelectedMenu = category.items.some(item =>
|
||||
item.menuName !== '读写' && formData.menuIds.includes(item.id)
|
||||
);
|
||||
// 检查是否有任何“读写”的菜单权限被选中
|
||||
const hasWriteSelectedMenu = category.items.some(item =>
|
||||
item.menuName == '读写' && formData.menuIds.includes(item.id)
|
||||
);
|
||||
|
||||
if (hasSelectedMenu && !hasWriteSelectedMenu) {
|
||||
// 有选中的菜单权限,默认选中只读
|
||||
dataScope.value[category.id] = dataScope.value[category.id] || `${category.id}-0`;
|
||||
} else if (hasSelectedMenu && hasWriteSelectedMenu) {
|
||||
// 有选中的“读写”菜单权限,默认选中“读写”
|
||||
dataScope.value[category.id] = dataScope.value[category.id] || `${category.id}-1`;
|
||||
} else {
|
||||
// 没有选中的菜单权限,不选中任何数据权限
|
||||
dataScope.value[category.id] = null;
|
||||
|
||||
if (hasWriteSelectedMenu) {
|
||||
const writeReadItem = category.items.find(item => item.menuName === '读写');
|
||||
formData.menuIds = formData.menuIds.filter(id => id !== writeReadItem.id);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -174,6 +198,9 @@ watch(
|
|||
dataScope,
|
||||
(newDataScope) => {
|
||||
Object.entries(newDataScope).forEach(([categoryId, scopeValue]) => {
|
||||
if (!scopeValue) {
|
||||
return;
|
||||
}
|
||||
const [id, permission] = scopeValue.split('-');
|
||||
const category = processedMenuOptions.value.find(cat => cat.id === Number(id));
|
||||
if (!category) return;
|
||||
|
@ -193,12 +220,20 @@ watch(
|
|||
{ deep: true }
|
||||
);
|
||||
|
||||
// 监听菜单选择变化,更新数据权限
|
||||
watch(() => formData.menuIds,
|
||||
() => {
|
||||
updateDataScope(false);
|
||||
},
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
async function handleConfirm() {
|
||||
try {
|
||||
await formRef.value?.validate();
|
||||
loading.value = true;
|
||||
formData.dataScope = Object.values(dataScope.value).join(',');
|
||||
console.log("opType", opType.value);
|
||||
// console.log("opType", opType.value);
|
||||
if (opType.value === 'add') {
|
||||
await addRoleApi(formData as AddRoleCommand);
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue