Compare commits
2 Commits
5b8999b188
...
c962fac20e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c962fac20e | ||
|
|
b2ca0d86f2 |
@@ -28,8 +28,13 @@ const AdminLayout = () => {
|
||||
const { message } = App.useApp();
|
||||
const { themeMode, toggleTheme } = useThemeStore();
|
||||
|
||||
// 跟踪用户是否手动修改过 openKeys
|
||||
const [userInteracted, setUserInteracted] = useState(false);
|
||||
// 用户手动设置的 openKeys
|
||||
const [userOpenKeys, setUserOpenKeys] = useState<string[]>([]);
|
||||
|
||||
// 根据当前路径计算应该展开的菜单
|
||||
const openKeys = useMemo(() => {
|
||||
const defaultOpenKeys = useMemo(() => {
|
||||
const path = location.pathname;
|
||||
if (path.startsWith('/admin/users')) {
|
||||
return ['user'];
|
||||
@@ -37,6 +42,17 @@ const AdminLayout = () => {
|
||||
return [];
|
||||
}, [location.pathname]);
|
||||
|
||||
// 最终使用的 openKeys:如果用户手动修改过,使用用户的设置;否则使用默认值
|
||||
const openKeys = useMemo(() => {
|
||||
return userInteracted ? userOpenKeys : defaultOpenKeys;
|
||||
}, [userInteracted, userOpenKeys, defaultOpenKeys]);
|
||||
|
||||
// 处理菜单展开/收起
|
||||
const handleOpenChange = (keys: string[]) => {
|
||||
setUserInteracted(true);
|
||||
setUserOpenKeys(keys);
|
||||
};
|
||||
|
||||
const handleLogout = async () => {
|
||||
try {
|
||||
await adminAuthService.logout();
|
||||
@@ -97,6 +113,7 @@ const AdminLayout = () => {
|
||||
mode="inline"
|
||||
selectedKeys={[location.pathname]}
|
||||
openKeys={openKeys}
|
||||
onOpenChange={handleOpenChange}
|
||||
items={menuItems}
|
||||
onClick={({ key }) => navigate(key)}
|
||||
/>
|
||||
|
||||
@@ -35,9 +35,6 @@ export const lightTheme: ThemeConfig = {
|
||||
itemColor: 'rgba(0, 0, 0, 0.65)', // 菜单项文字颜色(亮色)
|
||||
itemSelectedColor: '#1890ff', // 菜单激活文字颜色(亮色)
|
||||
itemHoverColor: '#1890ff', // 菜单悬停文字颜色(亮色)
|
||||
itemSelectedStyle: {
|
||||
boxShadow: 'none', // 去除菜单激活项的阴影
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
@@ -85,4 +82,4 @@ export const getThemeByMode = (mode: ThemeMode): ThemeConfig => {
|
||||
};
|
||||
|
||||
// 默认主题配置(向后兼容)
|
||||
export const appTheme: ThemeConfig = darkTheme;
|
||||
export const appTheme: ThemeConfig = lightTheme;
|
||||
|
||||
Reference in New Issue
Block a user