153 lines
4.0 KiB
TypeScript
Raw Normal View History

2023-10-10 09:31:35 +08:00
import { defineStore, createPinia } from "pinia";
import { GlobalState, ThemeConfigProps, AssemblySizeType } from "./interface";
import { DEFAULT_PRIMARY } from "@/config/config";
import piniaPersistConfig from "@/config/piniaPersist";
import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
// defineStore 调用后返回一个函数,调用该函数获得 Store 实体
export const GlobalStore = defineStore({
// id: 必须的,在所有 Store 中唯一
id: "GlobalState",
// state: 返回对象的函数
state: (): GlobalState => ({
// token
token: "",
// userInfo
userInfo: "",
account: "",
moduleId: "", //模块id
accountType: undefined, //登录账号类型
moduleName: "", //登录账号类型
// 都是控制退出或者修改密码的时候遮挡视频的问题
editPassword: false,
openDropdown: false,
Message: null, // 点击跳转的时候存的数据
projectDateAuth: null, //是否拥有所属工程的必填
isManager: "",
// element组件大小
assemblySize: "default",
// language
language: "",
path: null,
// 工程Sn
engineeringSn: "",
// 系统配置名称
systemConfigName: "",
// 系统配置登录页背景
systemConfigBg: "",
// 系统配置登录页子背景
systemConfigSubBg: "",
// 系统配置Logo
systemConfigLogo: "",
// 右侧抽屉选择类别
activeType: "eng",
// 右侧抽屉选择的Sn值
activeSn: "",
// 右侧抽屉选择的Id值
activeId: "",
2023-10-20 18:32:09 +08:00
// 视角书签
viewBookmarkArr: "",
2023-10-10 09:31:35 +08:00
// themeConfig
themeConfig: {
// 当前页面是否全屏
maximize: false,
// 布局切换 ==> 纵向vertical | 经典classic | 横向transverse | 分栏columns
layout: "classic",
// 默认 primary 主题颜色
primary: DEFAULT_PRIMARY,
// 深色模式
isDark: false,
// 灰色模式
isGrey: false,
// 色弱模式
isWeak: false,
// 折叠菜单
isCollapse: false,
// 面包屑导航
breadcrumb: false,
// 面包屑导航图标
breadcrumbIcon: false,
// 标签页
tabs: false,
// 标签页图标
tabsIcon: false,
// 页脚
footer: false
}
}),
getters: {},
actions: {
// setToken
setToken(token: string | null) {
this.token = token;
},
setModultId(moduleId: string | null) {
this.moduleId = moduleId;
},
setAccountType(accountType: number | undefined) {
this.accountType = accountType;
},
setAccount(account: string | null) {
this.account = account;
},
// 判断所属工程有没有校验
setProjectDateAuth(projectDateAuth: number | null) {
this.projectDateAuth = projectDateAuth;
},
// 判断所属工程有没有校验
setIsManager(isManager: string | null) {
this.isManager = isManager;
},
// 都是解决视频组件遮挡修改密码或者退出的时候
seteditPassword(editPassword: boolean | null) {
this.editPassword = editPassword;
},
setopenDropdown(openDropdown: boolean | null) {
this.openDropdown = openDropdown;
},
setmodultTitle(moduleName: string | null) {
this.moduleName = moduleName;
},
setPath(path: string | null) {
this.path = path;
},
// setUserInfo
setUserInfo(userInfo: any) {
this.userInfo = userInfo;
},
// setAssemblySizeSize
setAssemblySizeSize(assemblySize: AssemblySizeType | "") {
this.assemblySize = assemblySize;
},
// updateLanguage
updateLanguage(language: string | null) {
this.language = language;
},
// setThemeConfig
setThemeConfig(themeConfig: ThemeConfigProps) {
this.themeConfig = themeConfig;
},
resetStore() {
this.token = null;
this.moduleId = null;
this.accountType = undefined;
this.account = null;
this.userInfo = null;
this.projectDateAuth = null;
this.moduleName = null;
this.editPassword = null;
this.openDropdown = null;
this.path = null;
this.Message = null;
this.isManager = null;
}
},
persist: piniaPersistConfig("GlobalState")
});
// piniaPersist(持久化)
const pinia = createPinia();
pinia.use(piniaPluginPersistedstate);
export default pinia;