feat: 1. 本地化思源黑体的字体包并优先使用。
2. 添加权限映射表和全局查看权限的hook,便于路由控制不同权限按钮显示/隐藏。 3. 删除评查点分组的部分旧api方法。 4. 对接评查点分组接口,文档类型接口, 提示词管理接口, 入口模块管理的接口。 5. 优化角色权限管理的接口,完善不用地区的访问权限认证。 6. 优化主页交叉评查和设置的入口样式和布局。 7. 优化评查点分组,评查规则的功能权限校验。
This commit is contained in:
@@ -100,7 +100,8 @@ export interface UserInfo {
|
||||
nick_name: string;
|
||||
phone_number?: string;
|
||||
email?: string;
|
||||
ou_name: string;
|
||||
area: string; // v3.3: 地区字段,用于权限隔离(省/市级别)
|
||||
ou_name: string; // 部门名称,用于组织显示(部门级别)
|
||||
status: number;
|
||||
is_leader: boolean;
|
||||
}
|
||||
@@ -277,6 +278,8 @@ export async function getRoutes(): Promise<RouteInfo[]> {
|
||||
children: route.children ? route.children.map(mapRouteData) : undefined
|
||||
});
|
||||
|
||||
console.log('获取当前用户的路由', routes.map(mapRouteData) )
|
||||
|
||||
return routes.map(mapRouteData);
|
||||
} catch (error) {
|
||||
console.error('❌ [getRoutes] 获取路由数据失败:', error);
|
||||
@@ -316,6 +319,8 @@ export async function getRoleRoutePermissions(roleId: number): Promise<RoleRoute
|
||||
created_at: new Date().toISOString()
|
||||
}));
|
||||
|
||||
console.log("路由权限数据", permissions)
|
||||
|
||||
return permissions;
|
||||
} catch (error) {
|
||||
console.error('❌ [getRoleRoutePermissions] 获取角色路由权限失败:', error);
|
||||
@@ -352,7 +357,7 @@ export async function getRoleRoutesWithPermissions(roleId: number): Promise<{
|
||||
}
|
||||
|
||||
// 递归转换路由数据格式
|
||||
const mapRouteData = (route: any): RouteInfo => ({
|
||||
const mapRouteData = (route: any): any => ({
|
||||
id: route.id,
|
||||
route_path: route.route_path,
|
||||
route_name: route.route_name,
|
||||
@@ -364,6 +369,8 @@ export async function getRoleRoutesWithPermissions(roleId: number): Promise<{
|
||||
status: route.status || 1,
|
||||
parent_id: route.parent_id || null,
|
||||
component: route.component,
|
||||
// v3.2: 添加 enabled 字段
|
||||
enabled: route.enabled !== undefined ? route.enabled : true,
|
||||
// v3.0: 转换permissions数组
|
||||
permissions: Array.isArray(route.permissions) ? route.permissions.map((p: any) => ({
|
||||
id: p.id,
|
||||
@@ -377,11 +384,14 @@ export async function getRoleRoutesWithPermissions(roleId: number): Promise<{
|
||||
|
||||
const mappedRoutes = routes.map(mapRouteData);
|
||||
|
||||
// 收集所有已选中的路由ID
|
||||
const collectRouteIds = (routes: RouteInfo[]): number[] => {
|
||||
// v3.2: 收集已启用的路由ID(enabled=true)
|
||||
const collectRouteIds = (routes: any[]): number[] => {
|
||||
let ids: number[] = [];
|
||||
routes.forEach(route => {
|
||||
ids.push(route.id);
|
||||
// v3.2: 只收集 enabled=true 的路由
|
||||
if (route.enabled) {
|
||||
ids.push(route.id);
|
||||
}
|
||||
if (route.children) {
|
||||
ids = ids.concat(collectRouteIds(route.children));
|
||||
}
|
||||
@@ -468,14 +478,14 @@ export async function saveRoleApiPermissions(
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新角色的路由权限
|
||||
* 更新角色的路由权限 - v3.2更新
|
||||
* @param roleId 角色ID
|
||||
* @param routeIds 路由ID数组
|
||||
*/
|
||||
export async function updateRoleRoutePermissions(
|
||||
roleId: number,
|
||||
routeIds: number[]
|
||||
): Promise<{ success: boolean; message: string }> {
|
||||
): Promise<{ success: boolean; message: string; code?: number }> {
|
||||
try {
|
||||
// 导入 axios-client 的 put 函数
|
||||
const { put } = await import('~/api/axios-client');
|
||||
@@ -491,13 +501,33 @@ export async function updateRoleRoutePermissions(
|
||||
throw new Error(response.error);
|
||||
}
|
||||
|
||||
// 后端响应格式: { code: 200, msg: "success", data: { role_id, assigned_count, removed_count, route_ids } }
|
||||
// v3.3: 处理权限不足错误
|
||||
if (response.data && response.data.code === 4003) {
|
||||
return {
|
||||
success: false,
|
||||
message: response.data.msg || '权限不足:仅省级管理员可以修改角色路由权限',
|
||||
code: 4003
|
||||
};
|
||||
}
|
||||
|
||||
// v3.2: 新响应格式: { code: 200, msg: "success", data: { role_id, enabled_count, disabled_count, inserted_count, route_ids } }
|
||||
let message = '角色权限更新成功';
|
||||
if (response.data && response.data.msg) {
|
||||
message = response.data.msg;
|
||||
} else if (response.data && response.data.data) {
|
||||
const { assigned_count, removed_count } = response.data.data;
|
||||
message = `成功分配 ${assigned_count} 个路由,移除了 ${removed_count} 个旧路由`;
|
||||
const { enabled_count, disabled_count, inserted_count } = response.data.data;
|
||||
if (enabled_count !== undefined && disabled_count !== undefined) {
|
||||
message = `成功启用 ${enabled_count} 个路由,禁用 ${disabled_count} 个路由`;
|
||||
if (inserted_count && inserted_count > 0) {
|
||||
message += `,新增 ${inserted_count} 个路由关联`;
|
||||
}
|
||||
} else {
|
||||
// 兼容旧版本响应格式
|
||||
const { assigned_count, removed_count } = response.data.data;
|
||||
if (assigned_count !== undefined && removed_count !== undefined) {
|
||||
message = `成功分配 ${assigned_count} 个路由,移除了 ${removed_count} 个旧路由`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return { success: true, message };
|
||||
@@ -558,6 +588,7 @@ export async function getRoleUsers(
|
||||
nick_name: user.nick_name,
|
||||
phone_number: user.phone_number || '',
|
||||
email: user.email || '',
|
||||
area: user.area || '', // v3.3: 地区字段,用于权限隔离
|
||||
ou_name: user.ou_name,
|
||||
status: user.status || 1,
|
||||
is_leader: user.is_leader || false
|
||||
@@ -619,6 +650,7 @@ export async function getAllUsers(params?: {
|
||||
nick_name: user.nick_name,
|
||||
phone_number: user.phone_number || '',
|
||||
email: user.email || '',
|
||||
area: user.area || '', // v3.3: 地区字段,用于权限隔离
|
||||
ou_name: user.ou_name,
|
||||
status: user.status || 1,
|
||||
is_leader: user.is_leader || false
|
||||
|
||||
Reference in New Issue
Block a user