From e181f04c642204e79749af93fa921875ff6c21ba Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期二, 20 五月 2025 10:46:35 +0800 Subject: [PATCH] refactor(qms): 重构趋势图展示逻辑 --- src/store/modules/settings.ts | 83 +++++++++++++++++++---------------------- 1 files changed, 38 insertions(+), 45 deletions(-) diff --git a/src/store/modules/settings.ts b/src/store/modules/settings.ts index 32119cd..ef49b3c 100644 --- a/src/store/modules/settings.ts +++ b/src/store/modules/settings.ts @@ -1,54 +1,47 @@ import { defineStore } from 'pinia'; import defaultSettings from '@/settings'; -import { SettingTypeEnum } from '@/enums/SettingTypeEnum'; import { useDynamicTitle } from '@/utils/dynamicTitle'; -import { Ref } from 'vue'; export const useSettingsStore = defineStore('setting', () => { - const storageSetting = JSON.parse(localStorage.getItem('layout-setting') || '{}'); + const storageSetting = useStorage<LayoutSetting>('layout-setting', { + topNav: defaultSettings.topNav, + tagsView: defaultSettings.tagsView, + fixedHeader: defaultSettings.fixedHeader, + sidebarLogo: defaultSettings.sidebarLogo, + dynamicTitle: defaultSettings.dynamicTitle, + sideTheme: defaultSettings.sideTheme, + theme: defaultSettings.theme + }); + const title = ref<string>(defaultSettings.title); + const theme = ref<string>(storageSetting.value.theme); + const sideTheme = ref<string>(storageSetting.value.sideTheme); + const showSettings = ref<boolean>(defaultSettings.showSettings); + const topNav = ref<boolean>(storageSetting.value.topNav); + const tagsView = ref<boolean>(storageSetting.value.tagsView); + const fixedHeader = ref<boolean>(storageSetting.value.fixedHeader); + const sidebarLogo = ref<boolean>(storageSetting.value.sidebarLogo); + const dynamicTitle = ref<boolean>(storageSetting.value.dynamicTitle); + const animationEnable = ref<boolean>(defaultSettings.animationEnable); + const dark = ref<boolean>(defaultSettings.dark); - const prop: { [key: string]: Ref<any> } = { - title: ref<string>(''), - theme: ref<string>(storageSetting.theme || defaultSettings.theme), - sideTheme: ref<string>(storageSetting.sideTheme || defaultSettings.sideTheme), - showSettings: ref<boolean>(storageSetting.showSettings), - topNav: ref<boolean>(storageSetting.topNav || defaultSettings.topNav), - tagsView: ref<boolean>(storageSetting.tagsView || defaultSettings.tagsView), - fixedHeader: ref<boolean>(storageSetting.fixedHeader || defaultSettings.fixedHeader), - sidebarLogo: ref<boolean>(storageSetting.sidebarLogo || defaultSettings.sidebarLogo), - dynamicTitle: ref<boolean>(storageSetting.dynamicTitle || defaultSettings.dynamicTitle), - animationEnable: ref<boolean>(storageSetting.animationEnable || defaultSettings.animationEnable), - dark: ref<boolean>(storageSetting.dark || defaultSettings.dark) - }; - - const { title, theme, sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle, animationEnable, dark } = prop; - - // actions - const changeSetting = (param: { key: SettingTypeEnum; value: any }) => { - const { key, value } = param; - if (key in prop) { - prop[key].value = value; - } - }; - const setTitle = (value: string) => { - title.value = value; - useDynamicTitle(); - }; - return { - title, - theme, - sideTheme, - showSettings, - topNav, - tagsView, - fixedHeader, - sidebarLogo, - dynamicTitle, - animationEnable, - dark, - changeSetting, - setTitle - }; + const setTitle = (value: string) => { + title.value = value; + useDynamicTitle(); + }; + return { + title, + theme, + sideTheme, + showSettings, + topNav, + tagsView, + fixedHeader, + sidebarLogo, + dynamicTitle, + animationEnable, + dark, + setTitle + }; }); export default useSettingsStore; -- Gitblit v1.9.3