|
@@ -1,18 +1,115 @@
|
|
|
import { defineStore } from 'pinia'
|
|
|
import { store } from '../index'
|
|
|
-import { useCache } from '@/hooks/web/useCache'
|
|
|
-import { appModules } from '@/config/app'
|
|
|
-import type { AppState, LayoutType, ThemeTypes } from '@/config/app'
|
|
|
import { setCssVar, humpToUnderline } from '@/utils'
|
|
|
import { ElMessage } from 'element-plus'
|
|
|
+import { useCache } from '@/hooks/web/useCache'
|
|
|
|
|
|
const { wsCache } = useCache()
|
|
|
|
|
|
-export const useAppStore = defineStore({
|
|
|
- id: 'app',
|
|
|
- state: (): AppState => appModules,
|
|
|
- persist: {
|
|
|
- enabled: true
|
|
|
+type LayoutType = 'classic' | 'topLeft' | 'top' | 'cutMenu'
|
|
|
+
|
|
|
+type ThemeTypes = {
|
|
|
+ elColorPrimary?: string
|
|
|
+ leftMenuBorderColor?: string
|
|
|
+ leftMenuBgColor?: string
|
|
|
+ leftMenuBgLightColor?: string
|
|
|
+ leftMenuBgActiveColor?: string
|
|
|
+ leftMenuCollapseBgActiveColor?: string
|
|
|
+ leftMenuTextColor?: string
|
|
|
+ leftMenuTextActiveColor?: string
|
|
|
+ logoTitleTextColor?: string
|
|
|
+ logoBorderColor?: string
|
|
|
+ topHeaderBgColor?: string
|
|
|
+ topHeaderTextColor?: string
|
|
|
+ topHeaderHoverColor?: string
|
|
|
+ topToolBorderColor?: string
|
|
|
+}
|
|
|
+interface AppState {
|
|
|
+ breadcrumb: boolean
|
|
|
+ breadcrumbIcon: boolean
|
|
|
+ collapse: boolean
|
|
|
+ uniqueOpened: boolean
|
|
|
+ hamburger: boolean
|
|
|
+ screenfull: boolean
|
|
|
+ size: boolean
|
|
|
+ locale: boolean
|
|
|
+ tagsView: boolean
|
|
|
+ tagsViewIcon: boolean
|
|
|
+ logo: boolean
|
|
|
+ fixedHeader: boolean
|
|
|
+ greyMode: boolean
|
|
|
+ dynamicRouter: boolean
|
|
|
+ pageLoading: boolean
|
|
|
+ layout: LayoutType
|
|
|
+ title: string
|
|
|
+ userInfo: string
|
|
|
+ isDark: boolean
|
|
|
+ currentSize: ElememtPlusSize
|
|
|
+ sizeMap: ElememtPlusSize[]
|
|
|
+ mobile: boolean
|
|
|
+ footer: boolean
|
|
|
+ theme: ThemeTypes
|
|
|
+}
|
|
|
+
|
|
|
+export const useAppStore = defineStore('app', {
|
|
|
+ state: (): AppState => {
|
|
|
+ return {
|
|
|
+ userInfo: 'userInfo', // 登录信息存储字段-建议每个项目换一个字段,避免与其他项目冲突
|
|
|
+ sizeMap: ['default', 'large', 'small'],
|
|
|
+ mobile: false, // 是否是移动端
|
|
|
+ title: import.meta.env.VITE_APP_TITLE, // 标题
|
|
|
+ pageLoading: false, // 路由跳转loading
|
|
|
+
|
|
|
+ breadcrumb: true, // 面包屑
|
|
|
+ breadcrumbIcon: true, // 面包屑图标
|
|
|
+ collapse: false, // 折叠菜单
|
|
|
+ uniqueOpened: false, // 是否只保持一个子菜单的展开
|
|
|
+ hamburger: true, // 折叠图标
|
|
|
+ screenfull: true, // 全屏图标
|
|
|
+ size: true, // 尺寸图标
|
|
|
+ locale: true, // 多语言图标
|
|
|
+ tagsView: true, // 标签页
|
|
|
+ tagsViewIcon: true, // 是否显示标签图标
|
|
|
+ logo: true, // logo
|
|
|
+ fixedHeader: true, // 固定toolheader
|
|
|
+ footer: true, // 显示页脚
|
|
|
+ greyMode: false, // 是否开始灰色模式,用于特殊悼念日
|
|
|
+ dynamicRouter: wsCache.get('dynamicRouter') || false, // 是否动态路由
|
|
|
+
|
|
|
+ layout: wsCache.get('layout') || 'classic', // layout布局
|
|
|
+ isDark: wsCache.get('isDark') || false, // 是否是暗黑模式
|
|
|
+ currentSize: wsCache.get('default') || 'default', // 组件尺寸
|
|
|
+ theme: wsCache.get('theme') || {
|
|
|
+ // 主题色
|
|
|
+ elColorPrimary: '#409eff',
|
|
|
+ // 左侧菜单边框颜色
|
|
|
+ leftMenuBorderColor: 'inherit',
|
|
|
+ // 左侧菜单背景颜色
|
|
|
+ leftMenuBgColor: '#001529',
|
|
|
+ // 左侧菜单浅色背景颜色
|
|
|
+ leftMenuBgLightColor: '#0f2438',
|
|
|
+ // 左侧菜单选中背景颜色
|
|
|
+ leftMenuBgActiveColor: 'var(--el-color-primary)',
|
|
|
+ // 左侧菜单收起选中背景颜色
|
|
|
+ leftMenuCollapseBgActiveColor: 'var(--el-color-primary)',
|
|
|
+ // 左侧菜单字体颜色
|
|
|
+ leftMenuTextColor: '#bfcbd9',
|
|
|
+ // 左侧菜单选中字体颜色
|
|
|
+ leftMenuTextActiveColor: '#fff',
|
|
|
+ // logo字体颜色
|
|
|
+ logoTitleTextColor: '#fff',
|
|
|
+ // logo边框颜色
|
|
|
+ logoBorderColor: 'inherit',
|
|
|
+ // 头部背景颜色
|
|
|
+ topHeaderBgColor: '#fff',
|
|
|
+ // 头部字体颜色
|
|
|
+ topHeaderTextColor: 'inherit',
|
|
|
+ // 头部悬停颜色
|
|
|
+ topHeaderHoverColor: '#f6f6f6',
|
|
|
+ // 头部边框颜色
|
|
|
+ topToolBorderColor: '#eee'
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
getters: {
|
|
|
getBreadcrumb(): boolean {
|