From e212a0ab75e1c59d0d030ac0b2f07048f6a0f9cf Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期三, 04 十二月 2024 20:32:06 +0800 Subject: [PATCH] 支持开启暗黑模式 --- src/layout/components/Settings/index.vue | 79 +++++++++++---------------------------- 1 files changed, 22 insertions(+), 57 deletions(-) diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue index ff1fa50..7f2bcb7 100644 --- a/src/layout/components/Settings/index.vue +++ b/src/layout/components/Settings/index.vue @@ -38,35 +38,35 @@ <div class="drawer-item"> <span>寮�鍚� TopNav</span> <span class="comp-style"> - <el-switch v-model="topNav" class="drawer-switch" /> + <el-switch v-model="settingsStore.topNav" @change="topNavChange" class="drawer-switch" /> </span> </div> <div class="drawer-item"> <span>寮�鍚� Tags-Views</span> <span class="comp-style"> - <el-switch v-model="tagsView" class="drawer-switch" /> + <el-switch v-model="settingsStore.tagsView" class="drawer-switch" /> </span> </div> <div class="drawer-item"> <span>鍥哄畾 Header</span> <span class="comp-style"> - <el-switch v-model="fixedHeader" class="drawer-switch" /> + <el-switch v-model="settingsStore.fixedHeader" class="drawer-switch" /> </span> </div> <div class="drawer-item"> <span>鏄剧ず Logo</span> <span class="comp-style"> - <el-switch v-model="sidebarLogo" class="drawer-switch" /> + <el-switch v-model="settingsStore.sidebarLogo" class="drawer-switch" /> </span> </div> <div class="drawer-item"> <span>鍔ㄦ�佹爣棰�</span> <span class="comp-style"> - <el-switch v-model="dynamicTitle" class="drawer-switch" /> + <el-switch v-model="settingsStore.dynamicTitle" class="drawer-switch" /> </span> </div> @@ -80,13 +80,13 @@ <script setup> import variables from '@/assets/styles/variables.module.scss' -import originElementPlus from 'element-plus/theme-chalk/index.css' import axios from 'axios' import { ElLoading, ElMessage } from 'element-plus' import { useDynamicTitle } from '@/utils/dynamicTitle' import useAppStore from '@/store/modules/app' import useSettingsStore from '@/store/modules/settings' import usePermissionStore from '@/store/modules/permission' +import { handleThemeStyle } from '@/utils/theme' const { proxy } = getCurrentInstance(); const appStore = useAppStore() @@ -99,55 +99,23 @@ const predefineColors = ref(["#409EFF", "#ff4500", "#ff8c00", "#ffd700", "#90ee90", "#00ced1", "#1e90ff", "#c71585"]); /** 鏄惁闇�瑕乼opnav */ -const topNav = computed({ - get: () => storeSettings.value.topNav, - set: (val) => { - settingsStore.changeSetting({ key: 'topNav', value: val }) - if (!val) { - appStore.toggleSideBarHide(false); - permissionStore.setSidebarRouters(permissionStore.defaultRoutes); - } +function topNavChange(val) { + if (!val) { + appStore.toggleSideBarHide(false); + permissionStore.setSidebarRouters(permissionStore.defaultRoutes); } -}) -/** 鏄惁闇�瑕乼agview */ -const tagsView = computed({ - get: () => storeSettings.value.tagsView, - set: (val) => { - settingsStore.changeSetting({ key: 'tagsView', value: val }) - } -}) -/**鏄惁闇�瑕佸浐瀹氬ご閮� */ -const fixedHeader = computed({ - get: () => storeSettings.value.fixedHeader, - set: (val) => { - settingsStore.changeSetting({ key: 'fixedHeader', value: val }) - } -}) -/**鏄惁闇�瑕佷晶杈规爮鐨刲ogo */ -const sidebarLogo = computed({ - get: () => storeSettings.value.sidebarLogo, - set: (val) => { - settingsStore.changeSetting({ key: 'sidebarLogo', value: val }) - } -}) -/**鏄惁闇�瑕佷晶杈规爮鐨勫姩鎬佺綉椤电殑title */ -const dynamicTitle = computed({ - get: () => storeSettings.value.dynamicTitle, - set: (val) => { - settingsStore.changeSetting({ key: 'dynamicTitle', value: val }) - // 鍔ㄦ�佽缃綉椤垫爣棰� - useDynamicTitle() - } -}) +} function themeChange(val) { - settingsStore.changeSetting({ key: 'theme', value: val }) - theme.value = val; + settingsStore.theme = val; + handleThemeStyle(val); } + function handleTheme(val) { - settingsStore.changeSetting({ key: 'sideTheme', value: val }) + settingsStore.sideTheme = val; sideTheme.value = val; } + function saveSetting() { proxy.$modal.loading("姝e湪淇濆瓨鍒版湰鍦帮紝璇风◢鍊�..."); let layoutSetting = { @@ -162,11 +130,13 @@ localStorage.setItem("layout-setting", JSON.stringify(layoutSetting)); setTimeout(proxy.$modal.closeLoading(), 1000) } + function resetSetting() { proxy.$modal.loading("姝e湪娓呴櫎璁剧疆缂撳瓨骞跺埛鏂帮紝璇风◢鍊�..."); localStorage.removeItem("layout-setting") setTimeout("window.location.reload()", 1000) } + function openSetting() { showSettings.value = true; } @@ -179,13 +149,15 @@ <style lang='scss' scoped> .setting-drawer-title { margin-bottom: 12px; - color: rgba(0, 0, 0, 0.85); + color: var(--el-text-color-primary, rgba(0, 0, 0, 0.85)); line-height: 22px; font-weight: bold; + .drawer-title { font-size: 14px; } } + .setting-drawer-block-checbox { display: flex; justify-content: flex-start; @@ -204,13 +176,6 @@ height: 48px; } - .custom-img { - width: 48px; - height: 38px; - border-radius: 5px; - box-shadow: 1px 1px 2px #898484; - } - .setting-drawer-block-checbox-selectIcon { position: absolute; top: 0; @@ -227,7 +192,7 @@ } .drawer-item { - color: rgba(0, 0, 0, 0.65); + color: var(--el-text-color-regular, rgba(0, 0, 0, 0.65)); padding: 12px 0; font-size: 14px; -- Gitblit v1.9.3