更新
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
/** 与后端 PermissionCatalog 保持一致:目录 / 菜单 / 按钮 */
|
||||
export const permissionTree = [
|
||||
{
|
||||
code: 'dir:overview',
|
||||
name: '概览',
|
||||
type: 'dir',
|
||||
children: [
|
||||
{
|
||||
code: 'menu:dashboard',
|
||||
name: '数据概览',
|
||||
type: 'menu',
|
||||
path: '/dashboard',
|
||||
icon: '📊',
|
||||
children: []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
code: 'dir:org',
|
||||
name: '组织架构',
|
||||
type: 'dir',
|
||||
children: [
|
||||
{
|
||||
code: 'menu:users',
|
||||
name: '用户管理',
|
||||
type: 'menu',
|
||||
path: '/users',
|
||||
icon: '👥',
|
||||
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: '🏢',
|
||||
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: '🛡️',
|
||||
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: '💬',
|
||||
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: '⭐',
|
||||
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: '🤖',
|
||||
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: '🔑',
|
||||
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: '🔧',
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user