userInfo.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { defineStore } from 'pinia';
  2. import { Local, Session } from '/@/utils/storage';
  3. import Watermark from '/@/utils/watermark';
  4. import { useThemeConfig } from '/@/stores/themeConfig';
  5. import { getAPI } from '/@/utils/axios-utils';
  6. import { SysAuthApi, SysConstApi } from '/@/api-services/api';
  7. /**
  8. * 用户信息
  9. * @methods setUserInfos 设置用户信息
  10. */
  11. export const useUserInfo = defineStore('userInfo', {
  12. state: (): UserInfosState => ({
  13. userInfos: {} as any,
  14. constList: [] as any,
  15. }),
  16. getters: {
  17. // 获取系统常量列表
  18. async getSysConstList(): Promise<any[]> {
  19. var res = await getAPI(SysConstApi).apiSysConstListGet();
  20. this.constList = res.data.result ?? [];
  21. return this.constList;
  22. },
  23. },
  24. actions: {
  25. async setUserInfos() {
  26. // 缓存用户信息
  27. if (Session.get('userInfo')) {
  28. this.userInfos = Session.get('userInfo');
  29. } else {
  30. const userInfos: any = await this.getApiUserInfo();
  31. this.userInfos = userInfos;
  32. }
  33. },
  34. // 获取当前用户信息
  35. getApiUserInfo() {
  36. return new Promise((resolve) => {
  37. getAPI(SysAuthApi)
  38. .apiSysAuthUserInfoGet()
  39. .then(async (res: any) => {
  40. if (res.data.result == null) return;
  41. var d = res.data.result;
  42. const userInfos = {
  43. account: d.account,
  44. realName: d.realName,
  45. avatar: d.avatar ? d.avatar : '/favicon.ico',
  46. address: d.address,
  47. signature: d.signature,
  48. orgId: d.orgId,
  49. orgName: d.orgName,
  50. posName: d.posName,
  51. roles: [],
  52. authBtnList: d.buttons,
  53. time: new Date().getTime(),
  54. };
  55. Session.set('userInfo', userInfos);
  56. // 读取用户配置
  57. const configRes: any = await getAPI(SysAuthApi).apiSysAuthUserConfigGet();
  58. if (configRes.data.result == null) return;
  59. const configData = configRes.data.result;
  60. const storesThemeConfig = useThemeConfig();
  61. // 是否设置水印
  62. storesThemeConfig.themeConfig.isWatermark = configData.watermarkEnabled;
  63. if (storesThemeConfig.themeConfig.isWatermark) Watermark.set(storesThemeConfig.themeConfig.watermarkText);
  64. else Watermark.del();
  65. Local.remove('themeConfig');
  66. Local.set('themeConfig', storesThemeConfig.themeConfig);
  67. resolve(userInfos);
  68. });
  69. });
  70. },
  71. },
  72. });