diff --git a/frontend/src/components/Layout/SideNav.jsx b/frontend/src/components/Layout/SideNav.jsx index 1782193..c21b2d0 100644 --- a/frontend/src/components/Layout/SideNav.jsx +++ b/frontend/src/components/Layout/SideNav.jsx @@ -8,19 +8,34 @@ import { UserOutlined, TeamOutlined, } from '@ant-design/icons' - -const menuItems = [ - { key: '/dashboard', icon: , label: '仪表盘' }, - { key: '/tps', icon: , label: 'TPS 选题策划' }, - { key: '/knowledge', icon: , label: '知识库' }, - { key: '/doco', icon: , label: '文稿对齐' }, - { key: '/editor-home', icon: , label: '个人首页' }, - { key: '/users', icon: , label: '用户管理' }, -] +import useAuthStore from '../../stores/authStore' function SideNav() { const navigate = useNavigate() const location = useLocation() + const { user } = useAuthStore() + + const allMenuItems = [ + { key: '/dashboard', icon: , label: '仪表盘' }, + { key: '/editor-desk', icon: , label: '责编录入' }, + { key: '/tps', icon: , label: 'TPS 选题策划' }, + { key: '/knowledge', icon: , label: '知识库' }, + { key: '/doco', icon: , label: '文稿对齐' }, + { key: '/editor-home', icon: , label: '个人首页' }, + { key: '/users', icon: , label: '用户管理' }, + ] + + // 按角色过滤菜单项 + const visibleItems = allMenuItems.filter(item => { + // /dashboard 三角色都可见 + if (item.key === '/dashboard') return true + // /users 仅 zhipianren + if (item.key === '/users') return user?.role === 'zhipianren' + // /editor-desk 仅 zhipianren + zebian + if (item.key === '/editor-desk') return user?.role === 'zhipianren' || user?.role === 'zebian' + // 其余三角色都可见(保留后期 Phase 入口) + return true + }) return (
@@ -31,7 +46,7 @@ function SideNav() { navigate(key)} className="side-nav-menu" />