Skip to content

Commit d12d21c

Browse files
JavaLionLigitee-org
authored andcommitted
!38 fix #I7WUYJ 菜单切换主题为浅色主题后颜色不正常
Merge pull request !38 from ahaos/tspr
2 parents b22d077 + 93fb212 commit d12d21c

File tree

4 files changed

+44
-15
lines changed

4 files changed

+44
-15
lines changed

src/assets/styles/sidebar.scss

+24-11
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,16 @@
8181
}
8282

8383
// menu hover
84+
.theme-dark .sub-menu-title-noDropdown,
85+
.theme-dark .el-sub-menu__title {
86+
&:hover {
87+
background-color: $base-sub-menu-title-hover !important;
88+
}
89+
}
8490
.sub-menu-title-noDropdown,
8591
.el-sub-menu__title {
8692
&:hover {
87-
background-color: $base-sub-menu-title-hover !important;
93+
background-color: rgba(0, 0, 0, 0.05) !important;
8894
}
8995
}
9096

@@ -95,12 +101,12 @@
95101
& .nest-menu .el-sub-menu > .el-sub-menu__title,
96102
& .el-sub-menu .el-menu-item {
97103
min-width: $base-sidebar-width !important;
98-
99104
&:hover {
100-
background-color: rgba(0, 0, 0, 0.06) !important;
105+
background-color: rgba(0, 0, 0, 0.1) !important;
101106
}
102107
}
103108

109+
104110
& .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title,
105111
& .theme-dark .el-sub-menu .el-menu-item {
106112
background-color: $base-sub-menu-background !important;
@@ -109,6 +115,21 @@
109115
background-color: $base-sub-menu-hover !important;
110116
}
111117
}
118+
119+
& .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title,
120+
& .theme-dark .el-menu-item {
121+
&:hover {
122+
// you can use $sub-menuHover
123+
background-color: $base-menu-hover !important;
124+
}
125+
}
126+
& .nest-menu .el-sub-menu > .el-sub-menu__title,
127+
& .el-menu-item {
128+
&:hover {
129+
// you can use $sub-menuHover
130+
background-color: rgba(0, 0, 0, 0.04) !important;
131+
}
132+
}
112133
}
113134

114135
.hideSidebar {
@@ -207,14 +228,6 @@
207228
}
208229
}
209230

210-
.nest-menu .el-sub-menu > .el-sub-menu__title,
211-
.el-menu-item {
212-
&:hover {
213-
// you can use $sub-menuHover
214-
background-color: $base-menu-hover !important;
215-
}
216-
}
217-
218231
// the scroll bar appears when the sub-menu is too long
219232
> .el-menu--popup {
220233
max-height: 100vh;

src/enums/SideThemeEnum.ts

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export enum SideThemeEnum {
2+
DARK = 'theme-dark',
3+
LIGHT = 'theme-light'
4+
}

src/layout/components/Settings/index.vue

+16-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<h3 class="drawer-title">主题风格设置</h3>
44

55
<div class="setting-drawer-block-checbox">
6-
<div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-dark')">
6+
<div class="setting-drawer-block-checbox-item" @click="handleTheme(SideThemeEnum.DARK)">
77
<img src="@/assets/images/dark.svg" alt="dark" />
88
<div v-if="sideTheme === 'theme-dark'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
99
<i aria-label="图标: check" class="anticon anticon-check">
@@ -15,7 +15,7 @@
1515
</i>
1616
</div>
1717
</div>
18-
<div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-light')">
18+
<div class="setting-drawer-block-checbox-item" @click="handleTheme(SideThemeEnum.LIGHT)">
1919
<img src="@/assets/images/light.svg" alt="light" />
2020
<div v-if="sideTheme === 'theme-light'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
2121
<i aria-label="图标: check" class="anticon anticon-check">
@@ -95,6 +95,7 @@ import usePermissionStore from '@/store/modules/permission'
9595
import { handleThemeStyle } from '@/utils/theme'
9696
import { ComponentInternalInstance } from "vue";
9797
import { SettingTypeEnum } from "@/enums/SettingTypeEnum";
98+
import { SideThemeEnum } from "@/enums/SideThemeEnum";
9899
99100
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
100101
const appStore = useAppStore()
@@ -114,6 +115,13 @@ const isDark = useDark({
114115
valueDark: 'dark',
115116
valueLight: 'light',
116117
});
118+
watch(isDark, ()=> {
119+
if (isDark.value) {
120+
settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: SideThemeEnum.DARK })
121+
} else {
122+
settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: sideTheme.value })
123+
}
124+
})
117125
const toggleDark = () => useToggle(isDark);
118126
119127
/** 是否需要topNav */
@@ -166,8 +174,13 @@ const themeChange = (val: string | null) => {
166174
}
167175
}
168176
const handleTheme = (val: string) => {
169-
settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: val })
170177
sideTheme.value = val;
178+
if (isDark.value && val === SideThemeEnum.LIGHT) {
179+
// 暗黑模式颜色不变
180+
settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: SideThemeEnum.DARK })
181+
return
182+
}
183+
settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: val })
171184
}
172185
const saveSetting = () => {
173186
proxy?.$modal.loading("正在保存到本地,请稍候...");

src/layout/components/Sidebar/index.vue

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import variables from '@/assets/styles/variables.module.scss'
2727
import useAppStore from '@/store/modules/app'
2828
import useSettingsStore from '@/store/modules/settings'
2929
import usePermissionStore from '@/store/modules/permission'
30-
import { ComponentInternalInstance } from "vue";
3130
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
3231
3332
const route = useRoute();

0 commit comments

Comments
 (0)