designStore.ts
1.41 KB
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 { defineStore } from 'pinia'
import { theme } from '@/settings/designSetting'
import { DesignStateType, AppThemeColorType } from './designStore.d'
import { setLocalStorage, getLocalStorage } from '@/utils'
import { StorageEnum } from '@/enums/storageEnum'
import { ThemeEnum } from '@/enums/styleEnum'
const { GO_DESIGN_STORE } = StorageEnum
const { darkTheme, appTheme, appThemeDetail } = theme
const storageDesign = getLocalStorage(GO_DESIGN_STORE)
export const useDesignStore = defineStore({
id: 'useDesignStore',
state: (): DesignStateType =>
storageDesign || {
// 是否暗黑
darkTheme,
// 主题名称
themeName: (darkTheme && ThemeEnum.DARK) || ThemeEnum.LIGHT,
// 颜色色号
appTheme,
appThemeDetail,
},
getters: {
getDarkTheme(e): boolean {
return this.darkTheme
},
getAppTheme(): string {
return this.appTheme
},
getAppThemeDetail(): AppThemeColorType | null {
return this.appThemeDetail
}
},
actions: {
// 切换主题
changeTheme(): void {
this.darkTheme = !this.darkTheme
this.themeName = this.darkTheme ? ThemeEnum.DARK : ThemeEnum.LIGHT
setLocalStorage(GO_DESIGN_STORE, this.$state)
},
// 设置颜色
setAppColor(color: AppThemeColorType): void {
this.appTheme = color.hex
this.appThemeDetail = color
setLocalStorage(GO_DESIGN_STORE, this.$state)
}
}
})