refactor(web): 侧栏与页面模块名由角色权限改为角色管理
ci / 质量门禁 (push) Canceled after 0s

背景:角色权限只描述模块的一部分能力,侧栏同级均为模块级命名(用户与组织 / 客户 / 行业树);角色页实际覆盖角色 CRUD、权限点、数据范围、特殊权限与 SoD。

改动:
- 侧栏、面包屑、页面标题统一为「角色管理」,页面内权限点 / 数据范围 / 特殊权限分区名不变;
- 用户详情与超管授予弹窗中的模块引用同步改为「角色管理」;
- 开发计划页面清单与 A2 实施报告同步;
- 更新导航与面包屑单测、A2 e2e 标题断言。

验证:format:check / lint / typecheck / test 全绿;5173 实测侧栏、面包屑、页标题均为「角色管理」。
This commit is contained in:
Stev_Wang committed 2026-11-03 14:03:13 +08:00
1 parent a3419cf5da
commit f5a8afe835
11 files changed
+16 -16

No files matched your search

+3 -3
View File
@@ -3,12 +3,12 @@ import { describe, expect, it } from 'vitest';
import { getRoleSectionTrail, getUserSectionTrail } from './breadcrumbs';
describe('面包屑子路由补全', () => {
it('角色新建页:工作台 / 管理中心 / 角色权限 / 新建角色', () => {
it('角色新建页:工作台 / 管理中心 / 角色管理 / 新建角色', () => {
const trail = getRoleSectionTrail('/system/roles/new');
expect(trail?.map((entry) => entry.label)).toEqual([
'工作台',
'管理中心',
'角色权限',
'角色管理',
'新建角色',
]);
expect(trail?.[2]?.path).toBe('/system/roles');
@@ -19,7 +19,7 @@ describe('面包屑子路由补全', () => {
expect(trail?.map((entry) => entry.label)).toEqual([
'工作台',
'管理中心',
'角色权限',
'角色管理',
'角色编辑',
]);
});
+2 -2
View File
@@ -8,7 +8,7 @@ export function getRoleSectionTrail(pathname: string): BreadcrumbEntry[] | null
return [
{ key: 'home', label: '工作台', path: ROUTES.home },
{ key: 'system', label: '管理中心' },
{ key: 'roles', label: '角色权限', path: ROUTES.system.roles },
{ key: 'roles', label: '角色管理', path: ROUTES.system.roles },
{ key: 'role-new', label: '新建角色' },
];
}
@@ -16,7 +16,7 @@ export function getRoleSectionTrail(pathname: string): BreadcrumbEntry[] | null
return [
{ key: 'home', label: '工作台', path: ROUTES.home },
{ key: 'system', label: '管理中心' },
{ key: 'roles', label: '角色权限', path: ROUTES.system.roles },
{ key: 'roles', label: '角色管理', path: ROUTES.system.roles },
{ key: 'role-detail', label: '角色编辑' },
];
}
+2 -2
View File
@@ -33,12 +33,12 @@ describe('导航配置', () => {
);
});
it('角色权限菜单使用 role:view,只读角色也能进入角色页', () => {
it('角色管理菜单使用 role:view,只读角色也能进入角色页', () => {
const rolesItem = NAV_MODULES.find((module) => module.key === 'system')?.items.find(
(item) => item.key === 'roles',
);
expect(rolesItem?.permission).toBe('role:view');
expect(findActiveNav(NAV_MODULES, '/system/roles/new')?.item?.label).toBe('角色权限');
expect(findActiveNav(NAV_MODULES, '/system/roles/new')?.item?.label).toBe('角色管理');
expect(findActiveNav(NAV_MODULES, '/system/roles/01HZZZZZZZZZZZZZZZZZZZZZZZ')?.module.key).toBe(
'system',
);
+1 -1
View File
@@ -256,7 +256,7 @@ export const NAV_MODULES: readonly NavModule[] = [
},
{
key: 'roles',
label: '角色权限',
label: '角色管理',
path: '/system/roles',
icon: IconShield,
permission: Permission.ROLE_VIEW,