import { useState } from 'react'; import { Layout, Menu, Button, theme, App } from 'antd'; import { MenuFoldOutlined, MenuUnfoldOutlined, DashboardOutlined, SettingOutlined, LogoutOutlined, } from '@ant-design/icons'; import { Outlet, useNavigate, useLocation } from 'react-router-dom'; import { useAuthStore } from '../stores/authStore'; import { adminAuthService } from '../services/adminAuthService'; const { Header, Sider, Content, Footer } = Layout; const AdminLayout = () => { const [collapsed, setCollapsed] = useState(false); const { token: { colorBgContainer, borderRadiusLG }, } = theme.useToken(); const navigate = useNavigate(); const location = useLocation(); const adminUser = useAuthStore((state) => state.adminUser); const logout = useAuthStore((state) => state.logout); const { message } = App.useApp(); const handleLogout = async () => { try { await adminAuthService.logout(); logout(); message.success('登出成功'); navigate('/admin/login'); } catch { message.error('登出失败'); } }; const menuItems = [ { key: '/admin/dashboard', icon: , label: '工作台', }, { key: 'user', icon: , label: '系统管理', children: [ { key: '/admin/users', label: '用户管理', }, ], }, ]; return ( {collapsed ? '运营' : '运营管理系统'} navigate(key)} /> : } onClick={() => setCollapsed(!collapsed)} style={{ fontSize: '16px', width: 64, height: 64, }} /> 欢迎, {adminUser?.username} } onClick={handleLogout} > 退出 ); }; export default AdminLayout;