170 lines
5.3 KiB
JavaScript
170 lines
5.3 KiB
JavaScript
/** 与后端 PermissionCatalog 保持一致:目录 / 菜单 / 按钮 */
|
|
export const permissionTree = [
|
|
{
|
|
code: 'dir:overview',
|
|
name: '概览',
|
|
type: 'dir',
|
|
children: [
|
|
{
|
|
code: 'menu:dashboard',
|
|
name: '数据概览',
|
|
type: 'menu',
|
|
path: '/dashboard',
|
|
icon: 'dashboard',
|
|
children: []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: 'dir:org',
|
|
name: '组织架构',
|
|
type: 'dir',
|
|
children: [
|
|
{
|
|
code: 'menu:users',
|
|
name: '用户管理',
|
|
type: 'menu',
|
|
path: '/users',
|
|
icon: 'users',
|
|
children: [
|
|
{ code: 'btn:user:create', name: '新增用户', type: 'btn' },
|
|
{ code: 'btn:user:edit', name: '编辑用户', type: 'btn' },
|
|
{ code: 'btn:user:reset_password', name: '重置密码', type: 'btn' },
|
|
{ code: 'btn:user:delete', name: '删除用户', type: 'btn' }
|
|
]
|
|
},
|
|
{
|
|
code: 'menu:departments',
|
|
name: '部门管理',
|
|
type: 'menu',
|
|
path: '/departments',
|
|
icon: 'departments',
|
|
children: [
|
|
{ code: 'btn:dept:create', name: '新增部门', type: 'btn' },
|
|
{ code: 'btn:dept:edit', name: '编辑部门', type: 'btn' },
|
|
{ code: 'btn:dept:delete', name: '删除部门', type: 'btn' }
|
|
]
|
|
},
|
|
{
|
|
code: 'menu:roles',
|
|
name: '角色管理',
|
|
type: 'menu',
|
|
path: '/roles',
|
|
icon: 'roles',
|
|
children: [
|
|
{ code: 'btn:role:create', name: '新增角色', type: 'btn' },
|
|
{ code: 'btn:role:edit', name: '编辑角色', type: 'btn' },
|
|
{ code: 'btn:role:delete', name: '删除角色', type: 'btn' }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: 'dir:business',
|
|
name: '业务数据',
|
|
type: 'dir',
|
|
children: [
|
|
{
|
|
code: 'menu:conversations',
|
|
name: '会话管理',
|
|
type: 'menu',
|
|
path: '/conversations',
|
|
icon: 'conversations',
|
|
children: [
|
|
{ code: 'btn:conv:view_all', name: '查看全部会话', type: 'btn' },
|
|
{ code: 'btn:conv:view_subordinate', name: '查看下级部门会话', type: 'btn' }
|
|
]
|
|
},
|
|
{
|
|
code: 'menu:memberships',
|
|
name: '会员等级',
|
|
type: 'menu',
|
|
path: '/memberships',
|
|
icon: 'memberships',
|
|
children: [
|
|
{ code: 'btn:membership:create', name: '新增会员等级', type: 'btn' },
|
|
{ code: 'btn:membership:edit', name: '编辑会员等级', type: 'btn' },
|
|
{ code: 'btn:membership:delete', name: '删除会员等级', type: 'btn' }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: 'dir:system',
|
|
name: '系统管理',
|
|
type: 'dir',
|
|
children: [
|
|
{
|
|
code: 'menu:models',
|
|
name: 'AI 模型',
|
|
type: 'menu',
|
|
path: '/models',
|
|
icon: 'models',
|
|
children: [
|
|
{ code: 'btn:model:create', name: '新增模型', type: 'btn' },
|
|
{ code: 'btn:model:edit', name: '编辑模型', type: 'btn' },
|
|
{ code: 'btn:model:delete', name: '删除模型', type: 'btn' },
|
|
{ code: 'btn:model:test', name: '测试连接', type: 'btn' }
|
|
]
|
|
},
|
|
{
|
|
code: 'menu:permissions',
|
|
name: '权限管理',
|
|
type: 'menu',
|
|
path: '/permissions',
|
|
icon: 'permissions',
|
|
children: [
|
|
{ code: 'btn:perm:create', name: '新增权限', type: 'btn' },
|
|
{ code: 'btn:perm:edit', name: '编辑权限', type: 'btn' },
|
|
{ code: 'btn:perm:delete', name: '删除权限', type: 'btn' }
|
|
]
|
|
},
|
|
{
|
|
code: 'menu:settings',
|
|
name: '系统设置',
|
|
type: 'menu',
|
|
path: '/settings',
|
|
icon: 'settings',
|
|
children: [
|
|
{ code: 'btn:settings:save', name: '保存设置', type: 'btn' }
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
|
|
export function emptyPermissions() {
|
|
return {
|
|
can_access_admin: false,
|
|
dirs: [],
|
|
menus: [],
|
|
buttons: []
|
|
}
|
|
}
|
|
|
|
export function flattenMenus(tree = permissionTree) {
|
|
const list = []
|
|
for (const dir of tree) {
|
|
for (const menu of dir.children || []) {
|
|
list.push({
|
|
...menu,
|
|
dir: dir.code,
|
|
dirName: dir.name
|
|
})
|
|
}
|
|
}
|
|
return list
|
|
}
|
|
|
|
export function summarizePermissionLabels(perms = {}) {
|
|
const labels = []
|
|
if (perms.can_access_admin) labels.push('后台')
|
|
for (const dir of permissionTree) {
|
|
if ((perms.dirs || []).includes(dir.code)) labels.push(dir.name)
|
|
}
|
|
for (const menu of flattenMenus()) {
|
|
if ((perms.menus || []).includes(menu.code)) labels.push(menu.name)
|
|
}
|
|
return labels
|
|
}
|