This commit is contained in:
Ray.Hao
2025-08-14 09:19:17 +08:00
4 changed files with 22 additions and 11 deletions

View File

@@ -132,6 +132,16 @@ const onMenuClose = (index: string) => {
expandedMenuIndexes.value = expandedMenuIndexes.value.filter((item) => item !== index);
};
/**
* 监听展开的菜单项变化,更新父菜单样式
*/
watch(
() => expandedMenuIndexes.value,
() => {
updateParentMenuStyles();
}
);
/**
* 监听菜单模式变化:当菜单模式切换为水平模式时,关闭所有展开的菜单项,
* 避免在水平模式下菜单项显示错位。

View File

@@ -194,7 +194,7 @@ html.sidebar-color-blue {
// 父菜单激活状态样式 - 当子菜单激活时,父菜单显示激活状态
.el-sub-menu {
// 当父菜单包含激活子菜单时的样式
&.has-active-child .el-sub-menu__title {
&.has-active-child > .el-sub-menu__title {
color: var(--el-color-primary) !important;
background-color: var(--el-color-primary-light-9) !important;
@@ -205,7 +205,7 @@ html.sidebar-color-blue {
// 深色主题下的父菜单激活状态
html.dark & {
&.has-active-child .el-sub-menu__title {
&.has-active-child > .el-sub-menu__title {
color: var(--el-color-primary-light-3) !important;
background-color: rgba(64, 128, 255, 0.15) !important;
@@ -217,7 +217,7 @@ html.sidebar-color-blue {
// 深蓝色侧边栏配色下的父菜单激活状态
html.sidebar-color-blue & {
&.has-active-child .el-sub-menu__title {
&.has-active-child > .el-sub-menu__title {
color: var(--el-color-primary-light-3) !important;
background-color: rgba(64, 128, 255, 0.2) !important;

View File

@@ -35,13 +35,11 @@ export function setupPermission() {
const permissionStore = usePermissionStore();
const userStore = useUserStore();
// 确保用户信息已加载
if (!userStore.userInfo.username) {
await userStore.getUserInfo();
}
// 确保动态路由已生成
if (!permissionStore.isDynamicRoutesGenerated) {
/** 先获取最新的用户信息 */
await userStore.getUserInfo();
const dynamicRoutes = await permissionStore.generateRoutes();
dynamicRoutes.forEach((route: RouteRecordRaw) => {
router.addRoute(route);

View File

@@ -6,7 +6,7 @@
<el-card class="user-card">
<div class="user-info">
<div class="avatar-wrapper">
<el-avatar :src="userProfile.avatar" :size="100" />
<el-avatar :src="userStore.userInfo.avatar" :size="100" />
<el-button
type="info"
class="avatar-edit-btn"
@@ -227,9 +227,12 @@ import UserAPI, {
} from "@/api/system/user.api";
import FileAPI from "@/api/file.api";
import { useUserStoreHook } from "@/store";
import { Camera } from "@element-plus/icons-vue";
const userStore = useUserStoreHook();
const userProfile = ref<UserProfileVO>({});
const enum DialogType {
@@ -443,12 +446,12 @@ const handleFileChange = async (event: Event) => {
// 调用文件上传API
try {
const data = await FileAPI.uploadFile(file);
// 更新用户头像
userProfile.value.avatar = data.url;
// 更新用户信息
await UserAPI.updateProfile({
avatar: data.url,
});
// 更新用户头像
userStore.userInfo.avatar = data.url;
} catch (error) {
console.error("头像上传失败:" + error);
ElMessage.error("头像上传失败");