diff --git a/src/components/LangSelect/index.vue b/src/components/LangSelect/index.vue index b4a63ead..71979db7 100644 --- a/src/components/LangSelect/index.vue +++ b/src/components/LangSelect/index.vue @@ -9,7 +9,7 @@ const { locale } = useI18n(); function handleLanguageChange(lang: string) { locale.value = lang; appStore.changeLanguage(lang); - if (lang == "en") { + if (lang === "en") { ElMessage.success("Switch Language Successful!"); } else { ElMessage.success("切换语言成功!"); diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue index 336bb0e4..8a0dd2cf 100644 --- a/src/layout/components/Settings/index.vue +++ b/src/layout/components/Settings/index.vue @@ -76,14 +76,21 @@ const themeColors = ref([ */ function changeThemeColor(color: string) { document.documentElement.style.setProperty("--el-color-primary", color); - // settingsStore.changeSetting({ key: "layout", value: color }); + settingsStore.changeSetting({ key: "themeColor", value: color }); } +const currentThemeColor = computed(() => { + return settingsStore.themeColor; +}); onMounted(() => { window.document.body.setAttribute("layout", settingsStore.layout); const theme = localStorage.getItem("vueuse-color-scheme") || defaultSettings.theme; localStorage.setItem("vueuse-color-scheme", theme); + document.documentElement.style.setProperty( + "--el-color-primary", + settingsStore.themeColor + ); }); @@ -126,10 +133,12 @@ onMounted(() => {
  • + > + + 导航设置 @@ -240,5 +249,12 @@ onMounted(() => { box-shadow: 0 0 1px #888; } } + + .theme-wrap { + display: flex; + align-items: center; + justify-content: center; + color: #fff; + } } diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue index 7a33bba7..81f70cb2 100644 --- a/src/layout/components/TagsView/index.vue +++ b/src/layout/components/TagsView/index.vue @@ -121,7 +121,8 @@ function isFirstView() { try { return ( (selectedTag.value as TagView).fullPath === "/dashboard" || - (selectedTag.value as TagView).fullPath === tagsViewStore.visitedViews[1].fullPath + (selectedTag.value as TagView).fullPath === + tagsViewStore.visitedViews[1].fullPath ); } catch (err) { return false; diff --git a/src/settings.ts b/src/settings.ts index a39b8e43..a575395e 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -40,6 +40,11 @@ interface DefaultSettings { * 语言( zh-cn| en) */ language: string; + + /** + * 主题颜色 + */ + themeColor: string; } const defaultSettings: DefaultSettings = { @@ -52,6 +57,7 @@ const defaultSettings: DefaultSettings = { theme: "light", // 默认暗黑模式 size: "default", language: "zh-cn", + themeColor: "#409EFF", }; export default defaultSettings; diff --git a/src/store/modules/settings.ts b/src/store/modules/settings.ts index 1caaed74..04af061d 100644 --- a/src/store/modules/settings.ts +++ b/src/store/modules/settings.ts @@ -14,7 +14,10 @@ export const useSettingsStore = defineStore("setting", () => { ); const layout = useStorage("layout", defaultSettings.layout); - + const themeColor = useStorage( + "themeColor", + defaultSettings.themeColor + ); // actions function changeSetting(param: { key: string; value: any }) { const { key, value } = param; @@ -34,6 +37,9 @@ export const useSettingsStore = defineStore("setting", () => { case "layout": layout.value = value; break; + case "themeColor": + themeColor.value = value; + break; } } @@ -43,6 +49,7 @@ export const useSettingsStore = defineStore("setting", () => { fixedHeader, sidebarLogo, layout, + themeColor, changeSetting, }; }); diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 7fb28559..8fc63dee 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -39,7 +39,7 @@