diff --git a/apps/admin/src/layouts/MainLayout.tsx b/apps/admin/src/layouts/MainLayout.tsx
index 0fda368..e149949 100644
--- a/apps/admin/src/layouts/MainLayout.tsx
+++ b/apps/admin/src/layouts/MainLayout.tsx
@@ -1,6 +1,6 @@
-import React, { useState, useEffect } from 'react';
+import React, { useState } from 'react';
import { Outlet, useNavigate, useLocation } from 'react-router-dom';
-import { Layout, Menu, Button, Avatar, Dropdown, Drawer } from 'antd';
+import { Layout, Menu, Button, Avatar, Dropdown, Drawer, Grid } from 'antd';
import {
DashboardOutlined,
TeamOutlined,
@@ -84,18 +84,16 @@ const allMenuItems: MenuItemType[] = [
const MainLayout: React.FC = () => {
const [collapsed, setCollapsed] = useState(false);
- const [isMobile, setIsMobile] = useState(window.innerWidth < 768);
const [drawerOpen, setDrawerOpen] = useState(false);
const navigate = useNavigate();
const location = useLocation();
const user = JSON.parse(localStorage.getItem('user') || '{}');
const { hasPermission } = usePermission();
- useEffect(() => {
- const handleResize = () => setIsMobile(window.innerWidth < 768);
- window.addEventListener('resize', handleResize);
- return () => window.removeEventListener('resize', handleResize);
- }, []);
+ const screens = Grid.useBreakpoint();
+ const isMobile = !screens.sm; // < 576px (仅 xs)
+ const isTablet = (screens.sm || screens.md) && !screens.lg; // 576-991px
+ const isDesktop = !!screens.lg; // >= 992px
// 按 permission 过滤菜单
const filterByPermission = (items: MenuItemType[]): MenuItemType[] => {
@@ -152,7 +150,7 @@ const MainLayout: React.FC = () => {
@@ -163,12 +161,12 @@ const MainLayout: React.FC = () => {
alignItems: 'center',
justifyContent: 'center',
color: '#1d1d1f',
- fontSize: collapsed ? 16 : 17,
+ fontSize: (isTablet || collapsed) ? 16 : 17,
fontWeight: 600,
borderBottom: '1px solid #e5e5e7',
}}
>
- {collapsed ? '恭' : '恭学教育基地'}
+ {(isTablet || collapsed) ? '恭' : '恭学教育基地'}
{menuContent}
@@ -200,7 +198,7 @@ const MainLayout: React.FC = () => {
) : collapsed ? (
@@ -208,7 +206,7 @@ const MainLayout: React.FC = () => {
)
}
- onClick={() => (isMobile ? setDrawerOpen(true) : setCollapsed(!collapsed))}
+ onClick={() => (isMobile || isTablet ? setDrawerOpen(true) : setCollapsed(!collapsed))}
/>
{
>
} />
-
{user.name || user.username || '用户'}
+ {isDesktop &&
{user.name || user.username || '用户'}}