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) => { watch(activeTab, async (val) => {
console.log("activeTab", val); // key // console.log("activeTab", val); // key
opRow.value = dataList.value.find(item => item.roleKey == val); opRow.value = dataList.value.find(item => item.roleKey == val);
if (!opRow.value) { if (!opRow.value) {
return; return;
@ -89,7 +89,7 @@ watch(activeTab, async (val) => {
await getRoleInfo("update", opRow.value); await getRoleInfo("update", opRow.value);
Object.assign(formData, opRow.value); Object.assign(formData, opRow.value);
formData.menuIds = opRow.value.selectedMenuList; formData.menuIds = opRow.value.selectedMenuList;
updateDataScope(); updateDataScope(true);
}); });
async function getRoleInfo(type: "add" | "update", row?: RoleDTO) { async function getRoleInfo(type: "add" | "update", row?: RoleDTO) {
try { try {
@ -149,23 +149,47 @@ watch(menuTree, (val) => {
}; };
// //
console.log("遍历菜单树 val", val); // console.log(" val", val);
val.forEach(menuOption => { val.forEach(menuOption => {
collectMenus(menuOption); collectMenus(menuOption);
}) })
console.log("categories", categories); // 便 // console.log("categories", categories); // 便
// //
processedMenuOptions.value = categories; processedMenuOptions.value = categories;
}); });
// //
const updateDataScope = () => { const updateDataScope = (updateAll: boolean) => {
dataScope.value = {}; if (updateAll) {
dataScope.value = {};
}
// console.log("updateDataScope formData.menuIds", formData.menuIds);
processedMenuOptions.value.forEach(category => { processedMenuOptions.value.forEach(category => {
const selectedItem = category.items.find(item => item.menuName == '读写' && formData.menuIds.includes(item.id)); //
const permission = selectedItem ? '1' : '0'; const hasSelectedMenu = category.items.some(item =>
dataScope.value[category.id] = `${category.id}-${permission}`; 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, dataScope,
(newDataScope) => { (newDataScope) => {
Object.entries(newDataScope).forEach(([categoryId, scopeValue]) => { Object.entries(newDataScope).forEach(([categoryId, scopeValue]) => {
if (!scopeValue) {
return;
}
const [id, permission] = scopeValue.split('-'); const [id, permission] = scopeValue.split('-');
const category = processedMenuOptions.value.find(cat => cat.id === Number(id)); const category = processedMenuOptions.value.find(cat => cat.id === Number(id));
if (!category) return; if (!category) return;
@ -193,12 +220,20 @@ watch(
{ deep: true } { deep: true }
); );
//
watch(() => formData.menuIds,
() => {
updateDataScope(false);
},
{ deep: true }
);
async function handleConfirm() { async function handleConfirm() {
try { try {
await formRef.value?.validate(); await formRef.value?.validate();
loading.value = true; loading.value = true;
formData.dataScope = Object.values(dataScope.value).join(','); formData.dataScope = Object.values(dataScope.value).join(',');
console.log("opType", opType.value); // console.log("opType", opType.value);
if (opType.value === 'add') { if (opType.value === 'add') {
await addRoleApi(formData as AddRoleCommand); await addRoleApi(formData as AddRoleCommand);
} else { } else {