diff --git a/src/config/menu.tsx b/src/config/menu.tsx
index f458e84..432f3f8 100644
--- a/src/config/menu.tsx
+++ b/src/config/menu.tsx
@@ -1,7 +1,7 @@
-import type React from 'react'
-import { DashboardOutlined, RobotOutlined, UserOutlined, DollarOutlined, BookOutlined, ImportOutlined, FileOutlined, SafetyOutlined, CodeOutlined, CloudServerOutlined, SettingOutlined }
+import type React from 'react'
+import { DashboardOutlined, RobotOutlined, UserOutlined, DollarOutlined, BookOutlined, ImportOutlined, FileOutlined, SafetyOutlined, CodeOutlined, CloudServerOutlined, SettingOutlined } from '@ant-design/icons'
import type { AdminRole } from '@/types/admin'
-import { SettingOutlined, CloudServerOutlined, CodeOutlined, SafetyOutlined, FileOutlined, ImportOutlined, BookOutlined, DollarOutlined, UserOutlined, RobotOutlined, DashboardOutlined, hasRole } from '@/constants/roles'
+import { hasRole } from '@/constants/roles'
export interface AdminMenuItem {
path: string
@@ -14,134 +14,28 @@ export interface AdminMenuItem {
export const adminMenuItems: AdminMenuItem[] = [
{ path: '/', name: '总览', icon: },
{ path: '/assistant', name: '任务助理', icon: },
- {
- path: '/users',
- name: '用户管理',
- icon: ,
- requiredRole: 'ADMIN',
- children: [
- { path: '/users/admins', name: '管理员', requiredRole: 'SUPER_ADMIN' },
- { path: '/users/members', name: '普通用户' },
- ],
- },
+ { path: '/users', name: '用户管理', icon: , children: [
+ { path: '/users/admins', name: '管理员', requiredRole: 'SUPER_ADMIN' },
+ { path: '/users/members', name: '普通用户' },
+ ]},
{ path: '/membership', name: '会员与额度', icon: , requiredRole: 'ADMIN' },
- {
- path: '/knowledge',
- name: '知识库管理',
- icon: ,
- children: [
- { path: '/knowledge/bases', name: '知识库列表' },
- { path: '/knowledge/sources', name: '知识源列表' },
- ],
- },
+ { path: '/knowledge', name: '知识库管理', icon: , children: [
+ { path: '/knowledge/bases', name: '知识库列表' },
+ { path: '/knowledge/sources', name: '知识源列表' },
+ ]},
{ path: '/imports', name: '文档导入', icon: },
{ path: '/files', name: '文件与 COS', icon: },
- { path: '/settings', name: '系统配置', icon: , requiredRole: 'ADMIN' },
+ { path: '/audit', name: '审计日志', icon: , requiredRole: 'ADMIN' },
{ path: '/billing', name: 'API 用量', icon: , requiredRole: 'SUPER_ADMIN' },
{ path: '/git', name: '代码仓库', icon: },
{ path: '/servers', name: '服务器运维', icon: , requiredRole: 'SUPER_ADMIN' },
- { path: '/audit', name: '审计日志', icon: , requiredRole: 'ADMIN' },
+ { path: '/settings', name: '系统配置', icon: , requiredRole: 'ADMIN' },
]
export function filterMenuByRole(items: AdminMenuItem[], role?: AdminRole): AdminMenuItem[] {
- if (!role) return []
- return items
- .filter((item) => !item.requiredRole || hasRole(role, item.requiredRole))
- .map((item) => ({
- ...item,
- children: item.children ? filterMenuByRole(item.children, role) : undefined,
- }))
- .filter((item) => {
- if (item.children && item.children.length === 0) return false
- return true
- })
-}export const menuItems: AdminMenuItem[] = [
- { path: '/', name: '总览', icon: },
- { path: '/assistant', name: '任务助理', icon: },
- {
- path: '/users', name: '用户管理', icon: ,
- children: [
- { path: '/users/admins', name: '管理员', requiredRole: 'SUPER_ADMIN' },
- { path: '/users/members', name: '普通用户' },
- ],
- },
- { path: '/membership', name: '会员与额度', icon: , requiredRole: 'ADMIN' },
- {
- path: '/knowledge', name: '知识库管理', icon: ,
- children: [
- { path: '/knowledge/bases', name: '知识库列表' },
- { path: '/knowledge/sources', name: '知识源列表' },
- ],
- },
- { path: '/imports', name: '文档导入', icon: },
- { path: '/files', name: '文件与 COS', icon: },
- { path: '/audit', name: '审计日志', icon: , requiredRole: 'ADMIN' },
- { path: '/billing', name: 'API 用量', icon: , requiredRole: 'SUPER_ADMIN' },
- { path: '/git', name: '代码仓库', icon: },
- { path: '/servers', name: '服务器运维', icon: , requiredRole: 'SUPER_ADMIN' },
- { path: '/settings', name: '系统配置', icon: , requiredRole: 'ADMIN' },
-];import type React from 'react'
-import { SettingOutlined, CloudServerOutlined, CodeOutlined, SafetyOutlined, FileOutlined, ImportOutlined, BookOutlined, DollarOutlined, UserOutlined, RobotOutlined, DashboardOutlined, DollarOutlined, CodeOutlined, CloudServerOutlined, RobotOutlined, DashboardOutlined,
- UserOutlined,
- BookOutlined,
- ImportOutlined,
- SettingOutlined,
- FileOutlined,
- SafetyOutlined,
-} , DashboardOutlined } , RobotOutlined } , UserOutlined } , DollarOutlined } , BookOutlined } , ImportOutlined } , FileOutlined } , SafetyOutlined } , CodeOutlined } , CloudServerOutlined } , SettingOutlined } from '@ant-design/icons'
-import type { AdminRole } from '@/types/admin'
-import { SettingOutlined, CloudServerOutlined, CodeOutlined, SafetyOutlined, FileOutlined, ImportOutlined, BookOutlined, DollarOutlined, UserOutlined, RobotOutlined, DashboardOutlined, hasRole } from '@/constants/roles'
-
-export interface AdminMenuItem {
- path: string
- name: string
- icon?: React.ReactNode
- requiredRole?: AdminRole
- children?: AdminMenuItem[]
-}
-
-export const adminMenuItems: AdminMenuItem[] = [
- { path: '/', name: '总览', icon: },
- { path: '/assistant', name: '任务助理', icon: },
- {
- path: '/users',
- name: '用户管理',
- icon: ,
- requiredRole: 'ADMIN',
- children: [
- { path: '/users/admins', name: '管理员', requiredRole: 'SUPER_ADMIN' },
- { path: '/users/members', name: '普通用户' },
- ],
- },
- { path: '/membership', name: '会员与额度', icon: , requiredRole: 'ADMIN' },
- {
- path: '/knowledge',
- name: '知识库管理',
- icon: ,
- children: [
- { path: '/knowledge/bases', name: '知识库列表' },
- { path: '/knowledge/sources', name: '知识源列表' },
- ],
- },
- { path: '/imports', name: '文档导入', icon: },
- { path: '/files', name: '文件与 COS', icon: },
- { path: '/settings', name: '系统配置', icon: , requiredRole: 'ADMIN' },
- { path: '/billing', name: 'API 用量', icon: , requiredRole: 'SUPER_ADMIN' },
- { path: '/git', name: '代码仓库', icon: },
- { path: '/servers', name: '服务器运维', icon: , requiredRole: 'SUPER_ADMIN' },
- { path: '/audit', name: '审计日志', icon: , requiredRole: 'ADMIN' },
-]
-
-export function filterMenuByRole(items: AdminMenuItem[], role?: AdminRole): AdminMenuItem[] {
- if (!role) return []
- return items
- .filter((item) => !item.requiredRole || hasRole(role, item.requiredRole))
- .map((item) => ({
- ...item,
- children: item.children ? filterMenuByRole(item.children, role) : undefined,
- }))
- .filter((item) => {
- if (item.children && item.children.length === 0) return false
- return true
- })
+ return items.filter(item => {
+ if (item.requiredRole && role && !hasRole(role, item.requiredRole)) return false
+ if (item.children) item.children = filterMenuByRole(item.children, role)
+ return true
+ })
}