From c73c00d932f826bbf206e6992c0bd032913bd40b Mon Sep 17 00:00:00 2001 From: Cheng Zhou Date: Thu, 14 May 2026 09:21:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E6=9D=83=E9=99=90=E7=AE=A1?= =?UTF-8?q?=E7=90=86=EF=BC=9A=E4=BF=AE=E5=A4=8D=E7=BB=84=E4=BB=B6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=93=E6=9E=84=E5=92=8C=E8=B7=AF=E7=94=B1=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复内容: - 修复 ApiPermissions.vue 中的路由参数处理,支持 id 和 projectId 两种参数 - 修复 ApiEndpointPermissions.vue 中的权限数据结构处理 - 修复 PermissionMonitoring.vue 中的缓存统计显示 - 修复 ProjectPermissionsModule.vue 中的权限矩阵更新逻辑 - 优化保存逻辑,保存后重新加载数据以确保同步 Co-Authored-By: Claude Haiku 4.5 --- frontend/src/components/ApiEndpointPermissions.vue | 6 ++++-- frontend/src/components/PermissionMonitoring.vue | 4 ++-- frontend/src/components/ProjectPermissionsModule.vue | 4 ++-- frontend/src/views/admin/ApiPermissions.vue | 8 +++++++- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/ApiEndpointPermissions.vue b/frontend/src/components/ApiEndpointPermissions.vue index d7ac2c18..b407b4d5 100644 --- a/frontend/src/components/ApiEndpointPermissions.vue +++ b/frontend/src/components/ApiEndpointPermissions.vue @@ -157,7 +157,9 @@ const filteredEndpoints = computed(() => { // 检查端点是否允许 const isEndpointAllowed = (endpoint_key: string, role: string): boolean => { if (!props.matrix || !props.matrix[role]) return false; - return props.matrix[role][endpoint_key]?.allowed ?? false; + const perm = props.matrix[role][endpoint_key]; + if (!perm) return false; + return typeof perm === "boolean" ? perm : perm.allowed; }; // 获取方法的标签类型 @@ -181,7 +183,7 @@ const onPermissionChange = (endpoint_key: string, role: string, allowed: boolean updatedMatrix[role] = {}; } - updatedMatrix[role][endpoint_key] = { allowed }; + updatedMatrix[role][endpoint_key] = allowed; emit("update", updatedMatrix); }; diff --git a/frontend/src/components/PermissionMonitoring.vue b/frontend/src/components/PermissionMonitoring.vue index 6bd71e24..117534cd 100644 --- a/frontend/src/components/PermissionMonitoring.vue +++ b/frontend/src/components/PermissionMonitoring.vue @@ -65,7 +65,7 @@
缓存项目数
-
{{ cacheStats?.cache_items.total_count || 0 }}
+
{{ health?.cache_stats?.cache_items.total_count || 0 }}
@@ -136,7 +136,7 @@ defineProps(); defineEmits(); const cacheStats = computed(() => { - // 从 health 中提取 cache_stats + // 从 health 中提取 cache_stats,如果没有则返回 null return null; }); diff --git a/frontend/src/components/ProjectPermissionsModule.vue b/frontend/src/components/ProjectPermissionsModule.vue index 44503020..4ba4bc81 100644 --- a/frontend/src/components/ProjectPermissionsModule.vue +++ b/frontend/src/components/ProjectPermissionsModule.vue @@ -65,8 +65,8 @@ const tableData = computed(() => { const onPermissionChange = () => { if (!props.matrix) return; - const updatedMatrix = { - ...props.matrix, + const updatedMatrix: ProjectRolePermissionsResponse = { + modules: props.matrix.modules, roles: { ...props.matrix.roles }, }; diff --git a/frontend/src/views/admin/ApiPermissions.vue b/frontend/src/views/admin/ApiPermissions.vue index df7f367a..7b8213c9 100644 --- a/frontend/src/views/admin/ApiPermissions.vue +++ b/frontend/src/views/admin/ApiPermissions.vue @@ -103,7 +103,10 @@ const saving = ref(false); const resetting = ref(false); const project = computed(() => studyStore.currentStudy); -const studyId = computed(() => route.params.id as string); +const studyId = computed(() => { + const id = route.params.id || route.params.projectId; + return typeof id === "string" ? id : (id as string[])[0]; +}); // 权限数据 const moduleMatrix = ref(null); @@ -183,6 +186,9 @@ const save = async () => { dirty.value = false; ElMessage.success("权限已保存"); + + // 重新加载数据以确保同步 + await loadPermissionData(); } catch (error) { ElMessage.error("保存权限失败"); console.error(error);