feat: stabilize document type and upload flows

This commit is contained in:
wren
2026-04-30 17:44:05 +08:00
parent 81c5e98b53
commit 3fb7e9f5d0
18 changed files with 2122 additions and 491 deletions
+50 -2
View File
@@ -516,7 +516,8 @@ export async function getRoleRoutesWithPermissions(roleId: number): Promise<{
*/
export async function saveRoleApiPermissions(
roleId: number,
permissionIds: number[]
permissionIds: number[],
scopePermissionIds: number[] = []
): Promise<{ success: boolean; message: string }> {
try {
// 构建权限配置
@@ -530,7 +531,8 @@ export async function saveRoleApiPermissions(
const response = await post<any>('/api/v3/rbac/role-permissions', {
role_id: roleId,
permissions,
replace: true // 替换模式:先删除现有权限,再插入新权限
replace: true, // 替换模式:仅替换当前页面涉及的权限范围
replace_scope_permission_ids: scopePermissionIds
});
if (response.error) {
@@ -555,6 +557,52 @@ export async function saveRoleApiPermissions(
}
}
/**
* 原子保存角色的菜单权限与 API 权限
* @param roleId 角色ID
* @param routeIds 路由ID数组
* @param permissionIds 权限ID数组
* @param scopePermissionIds 本页允许被替换清理的权限范围
*/
export async function saveRoleAccess(
roleId: number,
routeIds: number[],
permissionIds: number[],
scopePermissionIds: number[] = []
): Promise<{ success: boolean; message: string; code?: number }> {
try {
const response = await post<any>(`/api/v3/rbac/roles/${roleId}/access`, {
route_ids: routeIds,
permission_ids: permissionIds,
route_permission: 'RW',
replace_scope_permission_ids: scopePermissionIds
});
if (response.error) {
throw new Error(response.error);
}
if (response.data?.code && response.data.code !== 200) {
return {
success: false,
message: response.data.message || '角色权限保存失败',
code: response.data.code
};
}
return {
success: true,
message: response.data?.message || '角色权限保存成功'
};
} catch (error) {
console.error('❌ [saveRoleAccess] 保存角色联合权限失败:', error);
return {
success: false,
message: error instanceof Error ? error.message : '角色权限保存失败'
};
}
}
/**
* 更新角色的路由权限 - v3.2更新
* @param roleId 角色ID