fix: 🐛 主题首次切换无效问题修复

Former-commit-id: 1a5028c4e94d8ed28ca567ac2767fdbc8a8516f1
This commit is contained in:
hxr
2023-11-05 17:17:28 +08:00
parent dfbbd5b6f7
commit de90c26210
3 changed files with 20 additions and 14 deletions

View File

@@ -1,4 +1,5 @@
<script lang="ts" setup> <script lang="ts" setup>
import defaultSettings from "@/settings";
import { useSettingsStore } from "@/store/modules/settings"; import { useSettingsStore } from "@/store/modules/settings";
const settingsStore = useSettingsStore(); const settingsStore = useSettingsStore();
@@ -35,7 +36,7 @@ const logo = ref(new URL(`../../../assets/logo.png`, import.meta.url).href);
> >
<img v-if="settingsStore.sidebarLogo" :src="logo" class="w-5 h-5" /> <img v-if="settingsStore.sidebarLogo" :src="logo" class="w-5 h-5" />
<span class="ml-3 text-white text-sm font-bold"> <span class="ml-3 text-white text-sm font-bold">
{{ $t("login.title") }}</span {{ defaultSettings.title }}</span
> >
</router-link> </router-link>
</transition> </transition>

View File

@@ -45,7 +45,9 @@ export const useSettingsStore = defineStore("setting", () => {
break; break;
case "theme": case "theme":
theme.value = value; theme.value = value;
if (theme.value !== "dark") { if (theme.value === "dark") {
document.documentElement.classList.add("dark");
} else {
document.documentElement.classList.remove("dark"); document.documentElement.classList.remove("dark");
} }
break; break;

View File

@@ -1,7 +1,7 @@
<template> <template>
<div class="login-container"> <div class="login-container">
<!-- 顶部 --> <!-- 顶部 -->
<div class="absolute top-0 flex items-center justify-end px-25 h-20 w-full"> <div class="absolute top-0 flex items-center justify-end px-5 h-20 w-full">
<el-switch <el-switch
v-model="isDark" v-model="isDark"
inline-prompt inline-prompt
@@ -11,16 +11,18 @@
inactive-color="var(--el-color-primary)" inactive-color="var(--el-color-primary)"
@change="handleThemeChange" @change="handleThemeChange"
/> />
<lang-select class="ml-4 cursor-pointer" /> <lang-select class="ml-2 cursor-pointer" />
</div> </div>
<!-- 登录表单 --> <!-- 登录表单 -->
<el-card <el-card
class="z-1 !border-none w-100 !bg-transparent !rounded-4% <sm:w-83" class="z-1 !border-none w-100 !bg-transparent !rounded-4% <sm:w-83"
> >
<h2 class="text-center"> <div class="text-center relative">
{{ defaultSettings.title }} <h2>{{ defaultSettings.title }}</h2>
<el-tag class="ml-2">{{ defaultSettings.version }}</el-tag> <el-tag class="ml-2 absolute top-0 right-0">{{
</h2> defaultSettings.version
}}</el-tag>
</div>
<el-form <el-form
ref="loginFormRef" ref="loginFormRef"
:model="loginData" :model="loginData"
@@ -145,17 +147,18 @@ import { LoginData } from "@/api/auth/types";
import defaultSettings from "@/settings"; import defaultSettings from "@/settings";
const appStore = useAppStore(); const appStore = useAppStore();
const settingsStore = useSettingsStore();
const userStore = useUserStore(); const userStore = useUserStore();
const route = useRoute(); const route = useRoute();
const isDark = useDark(); const isDark = ref<boolean>(settingsStore.theme === "dark");
const toggleDark = () => useToggle(isDark);
function handleThemeChange() { function handleThemeChange(isDark: boolean) {
toggleDark(); console.log("登录页面主题切换", isDark);
useSettingsStore().changeSetting({ useToggle(isDark);
settingsStore.changeSetting({
key: "theme", key: "theme",
value: isDark.value ? "dark" : "light", value: isDark ? "dark" : "light",
}); });
} }