import { useState, useEffect } from 'react'; import { Layout, Menu, Button, Avatar, Dropdown, message } from 'antd'; import { Outlet, useNavigate, useLocation } from 'react-router-dom'; import { DashboardOutlined, QuestionCircleOutlined, SettingOutlined, BarChartOutlined, UserOutlined, LogoutOutlined, DatabaseOutlined, SafetyOutlined, BookOutlined, CalendarOutlined, TeamOutlined } from '@ant-design/icons'; import { useAdmin } from '../contexts'; const { Header, Sider, Content } = Layout; const AdminLayout = ({ children }: { children: React.ReactNode }) => { const navigate = useNavigate(); const location = useLocation(); const { admin, clearAdmin } = useAdmin(); const [collapsed, setCollapsed] = useState(false); const menuItems = [ { key: '/admin/dashboard', icon: , label: '仪表盘', }, { key: '/admin/questions', icon: , label: '题库管理', }, { key: '/admin/categories', icon: , label: '题目类别', }, { key: '/admin/subjects', icon: , label: '考试科目', }, { key: '/admin/tasks', icon: , label: '考试任务', }, { key: '/admin/users', icon: , label: '用户管理', }, { key: '/admin/config', icon: , label: '抽题配置', }, { key: '/admin/statistics', icon: , label: '数据统计', }, { key: '/admin/backup', icon: , label: '数据备份', }, ]; const handleMenuClick = ({ key }: { key: string }) => { navigate(key); }; const handleLogout = () => { clearAdmin(); message.success('退出登录成功'); navigate('/admin/login'); }; const userMenuItems = [ { key: 'logout', icon: , label: '退出登录', onClick: handleLogout, }, ]; return (

{collapsed ? '问卷' : '问卷系统'}

{children}
); }; export default AdminLayout;