import { defineStore } from 'pinia' import config from '@/config' type LayoutTheme = 'light' | 'dark' export interface ISettingState { layoutMode: string // 布局, 内置的布局查看 src/layout/main/buildin-layout layoutTheme: LayoutTheme layoutColor: string fixedMenu: boolean fixedHeader: boolean bread: boolean multipleTabs: boolean } const getItem = (name: string) => { return localStorage.getItem(`${config.pkgName}${name}`) } export const useSettingStore = defineStore('useSettingStore', { state: (): ISettingState => { return { layoutMode: getItem('_layoutMode') || 'BuildinLayoutLeft', layoutTheme: (getItem('_layoutTheme') as LayoutTheme) || 'dark', layoutColor: getItem('_layoutColor') || '#1890FF', fixedMenu: getItem('_fixedMenu') === 'true' || getItem('_fixedMenu') === null, fixedHeader: getItem('_fixedHeader') === 'true' || getItem('_fixedHeader') === null, bread: getItem('_bread') === 'true' || getItem('_bread') === null, multipleTabs: getItem('_multipleTabs') === 'true' || getItem('_multipleTabs') === null, } }, actions: { // 布局设置 setLayoutMode(layoutMode: string) { localStorage.setItem(`${config.pkgName}_layoutMode`, layoutMode) this.layoutMode = layoutMode }, // 主题背景 setTheme(layoutTheme: LayoutTheme) { localStorage.setItem(`${config.pkgName}_layoutTheme`, layoutTheme) this.layoutTheme = layoutTheme }, // 主题颜色 setColor(layoutColor: string) { localStorage.setItem(`${config.pkgName}_layoutColor`, layoutColor) this.layoutColor = layoutColor }, // 固定菜单栏 setFixedMenu(fixedMenu: boolean) { localStorage.setItem(`${config.pkgName}_fixedMenu`, JSON.stringify(fixedMenu)) this.fixedMenu = fixedMenu }, // 固定头部 setFixedHeader(fixedHeader: boolean) { localStorage.setItem(`${config.pkgName}_fixedHeader`, JSON.stringify(fixedHeader)) this.fixedHeader = fixedHeader }, // 面包屑模式 setBread(bread: boolean) { localStorage.setItem(`${config.pkgName}_bread`, JSON.stringify(bread)) this.bread = bread }, // 多页签模式 setMultipleTabs(multipleTabs: boolean) { localStorage.setItem(`${config.pkgName}_multipleTabs`, JSON.stringify(multipleTabs)) this.multipleTabs = multipleTabs }, }, })