diff --git a/src/settings.js b/src/settings.js index d2cb6b80abe86e16e81bd6a0dc2dde5a47ee60af..fa718496f973caec218d4b7c4634890902cb8c86 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 a06958f2ef58ce5f28214ca24f3f44ae15468c67..4008c794b6e0ad4962ef72e3a6fdfbcce45f8b08 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