88 lines
1.9 KiB
TypeScript
88 lines
1.9 KiB
TypeScript
|
|
import { defineStore } from 'pinia'
|
||
|
|
|
||
|
|
import store from '@/store'
|
||
|
|
|
||
|
|
export interface IheaderSetting {
|
||
|
|
fixed: boolean
|
||
|
|
isReload: boolean
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface ImenuSetting {
|
||
|
|
minMenuWidth: number
|
||
|
|
menuWidth: number
|
||
|
|
fixed: boolean
|
||
|
|
collapsed: boolean
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface IcrumbsSetting {
|
||
|
|
show: boolean
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface ProjectSettingState {
|
||
|
|
appTheme: string
|
||
|
|
navTheme: string //导航风格
|
||
|
|
headerSetting: IheaderSetting //顶部设置
|
||
|
|
showFooter: boolean //页脚
|
||
|
|
menuSetting: ImenuSetting //多标签
|
||
|
|
crumbsSetting: IcrumbsSetting //面包屑
|
||
|
|
isPageAnimate: boolean //是否开启路由动画
|
||
|
|
pageAnimateType: string //路由动画类型
|
||
|
|
darkTheme: boolean
|
||
|
|
enableCloseAlert: boolean // 是否启用离开编辑界面提醒功能
|
||
|
|
}
|
||
|
|
|
||
|
|
const useProjectSettingStore = defineStore({
|
||
|
|
id: 'setting',
|
||
|
|
state: (): ProjectSettingState => ({
|
||
|
|
appTheme: '#2d8cf0',
|
||
|
|
navTheme: 'dark',
|
||
|
|
darkTheme: true,
|
||
|
|
headerSetting: {
|
||
|
|
//固定顶部
|
||
|
|
fixed: true,
|
||
|
|
//显示重载按钮
|
||
|
|
isReload: true
|
||
|
|
},
|
||
|
|
showFooter: true,
|
||
|
|
menuSetting: {
|
||
|
|
//最小宽度
|
||
|
|
minMenuWidth: 64,
|
||
|
|
//菜单宽度
|
||
|
|
menuWidth: 200,
|
||
|
|
//固定菜单
|
||
|
|
fixed: true,
|
||
|
|
// 折叠菜单
|
||
|
|
collapsed: false
|
||
|
|
},
|
||
|
|
crumbsSetting: {
|
||
|
|
//是否显示
|
||
|
|
show: true
|
||
|
|
},
|
||
|
|
isPageAnimate: true,
|
||
|
|
pageAnimateType: 'zoom-fade',
|
||
|
|
// 是否启用离开编辑界面提醒功能
|
||
|
|
enableCloseAlert: true
|
||
|
|
}),
|
||
|
|
getters: {
|
||
|
|
iconColor(): string {
|
||
|
|
return this.darkTheme ? '#eee' : '#333'
|
||
|
|
}
|
||
|
|
},
|
||
|
|
actions: {
|
||
|
|
setNavTheme(value: string): void {
|
||
|
|
this.navTheme = value
|
||
|
|
},
|
||
|
|
setAppTheme(value: string): void {
|
||
|
|
this.appTheme = value
|
||
|
|
},
|
||
|
|
setDarkTheme(isDark: boolean): void {
|
||
|
|
this.darkTheme = isDark
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
// Need to be used outside the setup
|
||
|
|
export function useProjectSettingStoreWithOut() {
|
||
|
|
return useProjectSettingStore(store)
|
||
|
|
}
|