From 5b8999b188699ebd2f85c49c5ce44615bfaea719 Mon Sep 17 00:00:00 2001 From: Stev_Wang <304865932@qq.com> Date: Sat, 3 Jan 2026 20:11:05 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=F0=9F=93=8C=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E9=A3=8E=E6=A0=BC=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/AdminLayout.tsx | 47 +++++++++++++-- frontend/src/components/ThemeProvider.tsx | 34 +++++++++++ frontend/src/main.tsx | 15 ++--- frontend/src/stores/themeStore.ts | 34 +++++++++++ frontend/src/theme/index.ts | 69 +++++++++++++++++++---- 5 files changed, 172 insertions(+), 27 deletions(-) create mode 100644 frontend/src/components/ThemeProvider.tsx create mode 100644 frontend/src/stores/themeStore.ts diff --git a/frontend/src/components/AdminLayout.tsx b/frontend/src/components/AdminLayout.tsx index 457647a..59366ad 100644 --- a/frontend/src/components/AdminLayout.tsx +++ b/frontend/src/components/AdminLayout.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { useState, useMemo } from 'react'; import { Layout, Menu, Button, theme, App } from 'antd'; import { MenuFoldOutlined, @@ -6,9 +6,12 @@ import { DashboardOutlined, SettingOutlined, LogoutOutlined, + SunOutlined, + MoonOutlined, } from '@ant-design/icons'; import { Outlet, useNavigate, useLocation } from 'react-router-dom'; import { useAuthStore } from '../stores/authStore'; +import { useThemeStore } from '../stores/themeStore'; import { adminAuthService } from '../services/adminAuthService'; const { Header, Sider, Content, Footer } = Layout; @@ -23,6 +26,16 @@ const AdminLayout = () => { const adminUser = useAuthStore((state) => state.adminUser); const logout = useAuthStore((state) => state.logout); const { message } = App.useApp(); + const { themeMode, toggleTheme } = useThemeStore(); + + // 根据当前路径计算应该展开的菜单 + const openKeys = useMemo(() => { + const path = location.pathname; + if (path.startsWith('/admin/users')) { + return ['user']; + } + return []; + }, [location.pathname]); const handleLogout = async () => { try { @@ -56,26 +69,34 @@ const AdminLayout = () => { return ( - +
{collapsed ? '运营' : '运营管理系统'}
navigate(key)} /> @@ -99,14 +120,23 @@ const AdminLayout = () => { fontSize: '16px', width: 64, height: 64, + outline: 'none', }} />
+ @@ -123,7 +153,12 @@ const AdminLayout = () => { > -