UNIVPLMDataIntegration/Web/src/stores/userInfo.ts
2024-07-08 18:29:26 +08:00

198 lines
5.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { defineStore } from 'pinia';
import { Local, Session } from '/@/utils/storage';
import Watermark from '/@/utils/watermark';
import { useThemeConfig } from '/@/stores/themeConfig';
import { getAPI } from '/@/utils/axios-utils';
import { SysAuthApi, SysConstApi, SysDictTypeApi } from '/@/api-services/api';
/**
* 用户信息
* @methods setUserInfos 设置用户信息
*/
export const useUserInfo = defineStore('userInfo', {
state: (): UserInfosState => ({
userInfos: {} as any,
constList: [] as any,
dictList: {} as any,
dictListInt: {} as any,
}),
getters: {
// // 获取系统常量列表
// async getSysConstList(): Promise<any[]> {
// var res = await getAPI(SysConstApi).apiSysConstListGet();
// this.constList = res.data.result ?? [];
// return this.constList;
// },
},
actions: {
// 存储用户信息到浏览器缓存
async setUserInfos() {
if (Session.get('userInfo')) {
this.userInfos = Session.get('userInfo');
} else {
const userInfos = <UserInfos>await this.getApiUserInfo();
this.userInfos = userInfos;
}
},
// 存储常量信息到浏览器缓存
async setConstList() {
if (Session.get('constList')) {
this.constList = Session.get('constList');
} else {
const constList = <any[]>await this.getSysConstList();
Session.set('constList', constList);
this.constList = constList;
}
},
// 存储字典信息到浏览器缓存
async setDictList() {
var res = await getAPI(SysDictTypeApi).apiSysDictTypeAllDictListGet();
this.dictList = res.data.result;
// if (Session.get('dictList')) {
// this.dictList = Session.get('dictList');
// } else {
// const dictList = <any[]>await this.getAllDictList();
// Session.set('dictList', dictList);
// this.dictList = dictList;
// }
},
// 获取当前用户信息
getApiUserInfo() {
return new Promise((resolve) => {
getAPI(SysAuthApi)
.apiSysAuthUserInfoGet()
.then(async (res: any) => {
if (res.data.result == null) return;
var d = res.data.result;
const userInfos = {
id: d.id,
account: d.account,
realName: d.realName,
phone: d.phone,
idCardNum: d.idCardNum,
email: d.email,
accountType: d.accountType,
avatar: d.avatar ?? '/Upload/logo.png',
address: d.address,
signature: d.signature,
orgId: d.orgId,
orgName: d.orgName,
posName: d.posName,
roles: d.roleIds,
authBtnList: d.buttons,
time: new Date().getTime(),
};
// vue-next-admin 提交Id225bce7 提交消息admin-23.03.26:发布v2.4.32版本
// 增加了下面代码,引起当前会话的用户信息不会刷新,如:重新提交的头像不更新,需要新开一个页面才能正确显示
// Session.set('userInfo', userInfos);
// 用户水印
const storesThemeConfig = useThemeConfig();
storesThemeConfig.themeConfig.watermarkText = d.watermarkText ?? '';
if (storesThemeConfig.themeConfig.isWatermark) Watermark.set(storesThemeConfig.themeConfig.watermarkText);
else Watermark.del();
Local.remove('themeConfig');
Local.set('themeConfig', storesThemeConfig.themeConfig);
resolve(userInfos);
});
});
},
// 获取常量集合
getSysConstList() {
return new Promise((resolve) => {
getAPI(SysConstApi)
.apiSysConstListGet()
.then(async (res: any) => {
resolve(res.data.result ?? []);
});
});
},
// 获取字典集合
getAllDictList() {
return new Promise((resolve) => {
if (this.dictList) {
resolve(this.dictList);
} else {
getAPI(SysDictTypeApi)
.apiSysDictTypeAllDictListGet()
.then((res: any) => {
resolve(res.data.result ?? []);
});
}
});
},
// 根据字典类型和代码取字典项
getDictItemByCode(typePCode: string, val: string) {
val = val.toString();
if (val) {
const _val = val.toString();
const ds = this.getDictDatasByCode(typePCode);
for (let index = 0; index < ds.length; index++) {
const element = ds[index];
if (element.code == _val) {
return element;
}
}
}
return {};
},
// 根据字典类型和值取描述
getDictLabelByVal(typePCode: string, val: string) {
if (val) {
const _val = val.toString();
const ds = this.getDictDatasByCode(typePCode);
for (let index = 0; index < ds.length; index++) {
const element = ds[index];
if (element.value == _val) {
return element;
}
}
}
return {};
},
// 根据字典类型和描述取值
getDictValByLabel(typePCode: string, label: string) {
if (!label) return '';
const ds = this.getDictDatasByCode(typePCode);
for (let index = 0; index < ds.length; index++) {
const element = ds[index];
if (element.name == label) {
return element;
}
}
},
// 根据字典类型获取字典数据
getDictDatasByCode(dictTypeCode: string) {
return this.dictList[dictTypeCode] || [];
},
// 根据字典类型获取字典数据(值转为数字类型)
getDictIntDatasByCode(dictTypeCode: string) {
var ds = this.dictListInt[dictTypeCode];
if (ds) {
return ds;
} else {
ds = this.dictList[dictTypeCode].map((element: { code: any }) => {
var d = { ...element };
d.code = element.code - 0;
return d;
});
this.dictListInt[dictTypeCode] = ds;
return ds;
}
},
},
});