Compare commits
2 Commits
5b8999b188
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c962fac20e | ||
|
|
b2ca0d86f2 |
@@ -28,8 +28,13 @@ const AdminLayout = () => {
|
|||||||
const { message } = App.useApp();
|
const { message } = App.useApp();
|
||||||
const { themeMode, toggleTheme } = useThemeStore();
|
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;
|
const path = location.pathname;
|
||||||
if (path.startsWith('/admin/users')) {
|
if (path.startsWith('/admin/users')) {
|
||||||
return ['user'];
|
return ['user'];
|
||||||
@@ -37,6 +42,17 @@ const AdminLayout = () => {
|
|||||||
return [];
|
return [];
|
||||||
}, [location.pathname]);
|
}, [location.pathname]);
|
||||||
|
|
||||||
|
// 最终使用的 openKeys:如果用户手动修改过,使用用户的设置;否则使用默认值
|
||||||
|
const openKeys = useMemo(() => {
|
||||||
|
return userInteracted ? userOpenKeys : defaultOpenKeys;
|
||||||
|
}, [userInteracted, userOpenKeys, defaultOpenKeys]);
|
||||||
|
|
||||||
|
// 处理菜单展开/收起
|
||||||
|
const handleOpenChange = (keys: string[]) => {
|
||||||
|
setUserInteracted(true);
|
||||||
|
setUserOpenKeys(keys);
|
||||||
|
};
|
||||||
|
|
||||||
const handleLogout = async () => {
|
const handleLogout = async () => {
|
||||||
try {
|
try {
|
||||||
await adminAuthService.logout();
|
await adminAuthService.logout();
|
||||||
@@ -97,6 +113,7 @@ const AdminLayout = () => {
|
|||||||
mode="inline"
|
mode="inline"
|
||||||
selectedKeys={[location.pathname]}
|
selectedKeys={[location.pathname]}
|
||||||
openKeys={openKeys}
|
openKeys={openKeys}
|
||||||
|
onOpenChange={handleOpenChange}
|
||||||
items={menuItems}
|
items={menuItems}
|
||||||
onClick={({ key }) => navigate(key)}
|
onClick={({ key }) => navigate(key)}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -35,9 +35,6 @@ export const lightTheme: ThemeConfig = {
|
|||||||
itemColor: 'rgba(0, 0, 0, 0.65)', // 菜单项文字颜色(亮色)
|
itemColor: 'rgba(0, 0, 0, 0.65)', // 菜单项文字颜色(亮色)
|
||||||
itemSelectedColor: '#1890ff', // 菜单激活文字颜色(亮色)
|
itemSelectedColor: '#1890ff', // 菜单激活文字颜色(亮色)
|
||||||
itemHoverColor: '#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