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