fix(角色管理): 修复数据权限更新逻辑并移除调试日志

修复 updateDataScope 函数的数据权限更新逻辑,增加 updateAll 参数控制更新范围
优化菜单选择变化时的数据权限处理,增加读写权限的自动管理
移除所有调试用的 console.log 语句
This commit is contained in:
dzq 2025-06-21 08:16:04 +08:00
parent 977615baed
commit 07a27fa13d
1 changed files with 45 additions and 10 deletions

View File

@ -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 = () => {
dataScope.value = {};
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 {