feat: 1. 添加交叉评查中的相关页面的按钮与权限的绑定控制。 2. 完善权限校验的hook函数,添加指定的交叉评查的相关的权限。

fix: 1. 修复交叉评查中无法高亮文档的问题。
This commit is contained in:
2025-12-12 16:10:05 +08:00
parent d4000cd292
commit 847f7b2b5a
9 changed files with 214 additions and 140 deletions
+50 -1
View File
@@ -35,6 +35,34 @@ interface RootLoaderData {
};
}
/**
* 交叉评查模块默认权限配置
* 当 permissionMap 中没有配置时,使用此默认配置
*/
const CROSS_CHECKING_DEFAULT_PERMISSIONS: Record<string, string[]> = {
'/cross-checking': [
'cross_review:task:read',
// 'cross_review:task:create',
// 'cross_review:document:complete',
'cross_review:progress:view',
'cross_review:proposal:create',
'cross_review:proposal:delete',
'cross_review:proposal:read',
// 'cross_review:proposal:vote'
],
'/cross-checking/upload': [
// 'cross_review:task:create'
],
'/cross-checking/result': [
// 'cross_review:document:complete',
'cross_review:progress:view',
'cross_review:proposal:create',
'cross_review:proposal:delete',
'cross_review:proposal:read',
// 'cross_review:proposal:vote'
]
};
export function usePermission() {
const rootData = useRouteLoaderData("root") as RootLoaderData;
const location = useLocation();
@@ -46,7 +74,28 @@ export function usePermission() {
// 🔑 根据当前路由获取权限列表
const currentPath = location.pathname;
// console.log('currentPath', currentPath)
const currentPermissions = permissionMap[currentPath] || [];
// 获取当前路由的权限:优先使用 permissionMap,否则使用交叉评查默认配置
const getCrossCheckingPermissions = (): string[] => {
// 检查是否是交叉评查相关路由
if (currentPath.startsWith('/cross-checking')) {
// 精确匹配
if (CROSS_CHECKING_DEFAULT_PERMISSIONS[currentPath]) {
return CROSS_CHECKING_DEFAULT_PERMISSIONS[currentPath];
}
// 处理带参数的路由,如 /cross-checking/result?id=xxx
const basePath = currentPath.split('?')[0];
if (CROSS_CHECKING_DEFAULT_PERMISSIONS[basePath]) {
return CROSS_CHECKING_DEFAULT_PERMISSIONS[basePath];
}
}
return [];
};
// 优先使用 permissionMap 中的权限,如果没有则使用交叉评查默认权限
const currentPermissions = permissionMap[currentPath]?.length > 0
? permissionMap[currentPath]
: getCrossCheckingPermissions();
// 向后兼容:如果存在旧的permissions数组,也要支持
const legacyPermissions = rootData?.permissions || [];