From aed8c89dedf94b98c4b6e988388fbe147f99dab5 Mon Sep 17 00:00:00 2001 From: David Wei Date: 星期日, 08 十月 2023 16:05:58 +0800 Subject: [PATCH] update 优化 通过参数键名获取键值接口的返回体 --- src/layout/components/Settings/index.vue | 42 ++++++++++++++++++++++++++++++++++-------- 1 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue index bf62b14..d5522ae 100644 --- a/src/layout/components/Settings/index.vue +++ b/src/layout/components/Settings/index.vue @@ -1,10 +1,9 @@ <template> <el-drawer v-model="showSettings" :withHeader="false" direction="rtl" size="300px" close-on-click-modal> - <div class="setting-drawer-title"> - <h3 class="drawer-title">涓婚椋庢牸璁剧疆</h3> - </div> + <h3 class="drawer-title">涓婚椋庢牸璁剧疆</h3> + <div class="setting-drawer-block-checbox"> - <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-dark')"> + <div class="setting-drawer-block-checbox-item" @click="handleTheme(SideThemeEnum.DARK)"> <img src="@/assets/images/dark.svg" alt="dark" /> <div v-if="sideTheme === 'theme-dark'" class="setting-drawer-block-checbox-selectIcon" style="display: block;"> <i aria-label="鍥炬爣: check" class="anticon anticon-check"> @@ -16,7 +15,7 @@ </i> </div> </div> - <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-light')"> + <div class="setting-drawer-block-checbox-item" @click="handleTheme(SideThemeEnum.LIGHT)"> <img src="@/assets/images/light.svg" alt="light" /> <div v-if="sideTheme === 'theme-light'" class="setting-drawer-block-checbox-selectIcon" style="display: block;"> <i aria-label="鍥炬爣: check" class="anticon anticon-check"> @@ -35,6 +34,13 @@ <el-color-picker v-model="theme" :predefine="predefineColors" @change="themeChange" /> </span> </div> + <div class="drawer-item"> + <span>娣辫壊妯″紡</span> + <span class="comp-style"> + <el-switch v-model="isDark" @change="toggleDark" class="drawer-switch" /> + </span> + </div> + <el-divider /> <h3 class="drawer-title">绯荤粺甯冨眬閰嶇疆</h3> @@ -89,6 +95,7 @@ import { handleThemeStyle } from '@/utils/theme' import { ComponentInternalInstance } from "vue"; import { SettingTypeEnum } from "@/enums/SettingTypeEnum"; +import { SideThemeEnum } from "@/enums/SideThemeEnum"; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const appStore = useAppStore() @@ -102,7 +109,22 @@ const storeSettings = computed(() => settingsStore); const predefineColors = ref(["#409EFF", "#ff4500", "#ff8c00", "#ffd700", "#90ee90", "#00ced1", "#1e90ff", "#c71585"]); -/** 鏄惁闇�瑕乼opnav */ +// 鏄惁鏆楅粦妯″紡 +const isDark = useDark({ + storageKey: 'useDarkKey', + valueDark: 'dark', + valueLight: 'light', +}); +watch(isDark, ()=> { + if (isDark.value) { + settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: SideThemeEnum.DARK }) + } else { + settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: sideTheme.value }) + } +}) +const toggleDark = () => useToggle(isDark); + +/** 鏄惁闇�瑕乼opNav */ const topNav = computed({ get: () => storeSettings.value.topNav, set: (val) => { @@ -152,8 +174,13 @@ } } const handleTheme = (val: string) => { - settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: val }) sideTheme.value = val; + if (isDark.value && val === SideThemeEnum.LIGHT) { + // 鏆楅粦妯″紡棰滆壊涓嶅彉 + settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: SideThemeEnum.DARK }) + return + } + settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: val }) } const saveSetting = () => { proxy?.$modal.loading("姝e湪淇濆瓨鍒版湰鍦帮紝璇风◢鍊�..."); @@ -234,7 +261,6 @@ } .drawer-item { - color: rgba(0, 0, 0, 0.65); padding: 12px 0; font-size: 14px; -- Gitblit v1.9.3