From 9db49fcbbc64e1e1edf022e427d8a88479c942d1 Mon Sep 17 00:00:00 2001 From: yueye Date: Sun, 13 Oct 2024 23:23:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B8=83=E5=B1=80=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=88=9D=E5=A7=8B=E5=8C=96=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/settings.js | 2 +- src/store/modules/settings.ts | 109 +++++++++++++++++++++------------- 2 files changed, 68 insertions(+), 43 deletions(-) diff --git a/src/settings.js b/src/settings.js index d2cb6b8..fa71849 100644 --- a/src/settings.js +++ b/src/settings.js @@ -55,7 +55,7 @@ const setting = { * 获取后端配置的设置 * @returns Promise */ - async initSetting() { + async initDbSetting() { const config = (key,type=String) => getConfigKey(key).then(res => { if(type===String){ return res.msg diff --git a/src/store/modules/settings.ts b/src/store/modules/settings.ts index a06958f..4008c79 100644 --- a/src/store/modules/settings.ts +++ b/src/store/modules/settings.ts @@ -3,54 +3,79 @@ import { useDynamicTitle } from '@/utils/dynamicTitle' import { init } from 'echarts' import { defineStore } from 'pinia' -const { theme, sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle, initSetting } = defaultSettings +const { theme, sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle, initDbSetting } = defaultSettings const storageSetting: typeof defaultSettings = JSON.parse( localStorage.getItem('layout-setting') || '{}' ) -const useSettingsStore = defineStore( - 'settings', - { - state: () => ({ - title: '', - theme: undefined, - sideTheme: undefined, - showSettings: showSettings, - topNav: undefined, - tagsView: undefined, - fixedHeader: undefined, - sidebarLogo: undefined, - dynamicTitle: undefined, - inited: false - }), - actions: { - async initSetting() { - if (this.inited) return - const config = await initSetting() - this.theme = storageSetting.theme || config.theme || theme - this.sideTheme = storageSetting.sideTheme || config.sideTheme || sideTheme - this.topNav = storageSetting.topNav || config.topNav || topNav - this.tagsView = storageSetting.tagsView || config.tagsView || tagsView - this.fixedHeader = storageSetting.fixedHeader || config.fixedHeader || fixedHeader - this.sidebarLogo = storageSetting.sidebarLogo || config.sidebarLogo || sidebarLogo - this.dynamicTitle = storageSetting.dynamicTitle || config.dynamicTitle || dynamicTitle - this.inited = true - }, - // 修改布局设置 - changeSetting(data: { key: keyof typeof storageSetting, value: any }) { - const { key, value } = data - if (this.hasOwnProperty(key)) { - //@ts-ignore - this[key] = value - } - }, - // 设置网页标题 - setTitle(title: string) { - this.title = title - useDynamicTitle(); +const useSettingsStore = defineStore('settings', { + state: () => ({ + title: '', + theme: undefined, + sideTheme: undefined, + showSettings: showSettings, + topNav: undefined, + tagsView: undefined, + fixedHeader: undefined, + sidebarLogo: undefined, + dynamicTitle: undefined, + inited: false + }), + actions: { + async initSetting() { + if (this.inited) return + const config = await initDbSetting() + this.theme = storageSetting.theme || config.theme || theme + this.sideTheme = storageSetting.sideTheme || config.sideTheme || sideTheme + // 顶部导航 + if (storageSetting.topNav == undefined) { + this.topNav = config.topNav == undefined ? topNav : config.topNav + } else { + this.topNav = storageSetting.topNav } + // tab栏 + if (storageSetting.tagsView == undefined) { + this.tagsView = config.tagsView == undefined ? tagsView : config.tagsView + } else { + this.tagsView = storageSetting.tagsView + } + // 固定顶部栏 + if (storageSetting.fixedHeader == undefined) { + this.fixedHeader = config.fixedHeader == undefined ? fixedHeader : config.fixedHeader + } else { + this.fixedHeader = storageSetting.fixedHeader + } + // 显示logo + if (storageSetting.sidebarLogo == undefined) { + this.sidebarLogo = config.sidebarLogo == undefined ? sidebarLogo : config.sidebarLogo + } else { + this.sidebarLogo = storageSetting.sidebarLogo + } + // 动态标题 + if (storageSetting.dynamicTitle == undefined) { + this.dynamicTitle = config.dynamicTitle == undefined ? dynamicTitle : config.dynamicTitle + } else { + this.dynamicTitle = storageSetting.dynamicTitle + } + this.inited = true + + console.log('initSetting', storageSetting, config, this.fixedHeader) + }, + // 修改布局设置 + changeSetting(data: { key: keyof typeof storageSetting, value: any }) { + const { key, value } = data + if (this.hasOwnProperty(key)) { + //@ts-ignore + this[key] = value + } + }, + // 设置网页标题 + setTitle(title: string) { + this.title = title + useDynamicTitle(); } - }) + } +}) export default useSettingsStore -- Gitee