wujianwei
2025-09-10 de448cb8a94591b85a99816d741480bf4c227879
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import defaultSettings from '@/settings'
import {useDynamicTitle} from "@/utils/dynamicTitle";
import {defineStore} from "pinia";
import {getStorage} from "@/utils/storage";
 
const {sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle} = defaultSettings
const item = getStorage({name:"layout-setting"}) || '';
const storageSetting = item !== '' ? JSON.parse(item) : '';
 
export interface SettingState {
    title: string,
    theme: string,
    sideTheme: string,
    showSettings: any,
    topNav: string,
    tagsView: string,
    fixedHeader: string,
    sidebarLogo: string,
    dynamicTitle: string,
    baseTitle:string
}
 
export const useSettingsStore = defineStore('settings',{
    state:():SettingState=>({
        title: '',
        theme: storageSetting.theme || '#409EFF',
        sideTheme: storageSetting.sideTheme || sideTheme,
        showSettings: showSettings,
        topNav: !storageSetting.topNav ? topNav : storageSetting.topNav,
        tagsView: !storageSetting.tagsView ? tagsView : storageSetting.tagsView,
        fixedHeader: !storageSetting.fixedHeader ? fixedHeader : storageSetting.fixedHeader,
        sidebarLogo: !storageSetting.sidebarLogo ? sidebarLogo : storageSetting.sidebarLogo,
        dynamicTitle: !storageSetting.dynamicTitle ? dynamicTitle : storageSetting.dynamicTitle,
        baseTitle: ''
    }),
    actions:{
        setBaseTitle(title:string){
            this.baseTitle = title;
            useDynamicTitle();
        },
        changeSetting(data: {key:any, value:any}) {
            if (this.hasOwnProperty(data.key)) {
                (this as any)[data.key] = data.value
            }
        },
        settings(title:string){
            this.title = title;
            useDynamicTitle();
        }
    }
})