useMainStore.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { Canceler } from 'axios';
  2. import { defineStore } from 'pinia';
  3. import {
  4. getMessage,
  5. getUserInfo,
  6. NoticeInfo,
  7. NoticeInfoParams,
  8. UserInfo,
  9. } from '@/api/common';
  10. import { BaseLoginUrl } from '@/constants/constants';
  11. export interface MainStateType {
  12. cancelReqToken: Canceler[];
  13. userInfo: Omit<UserInfo, 'accessToken'>;
  14. isshoweventlist:Boolean;
  15. }
  16. export interface MainActionsType {
  17. pushReqToken(cancelToken: Canceler): void;
  18. clearReqToken(): void;
  19. getUserInfo(ticket: string): Promise<true | undefined>;
  20. getMessage(params: NoticeInfoParams): Promise<NoticeInfo[] | undefined>;
  21. setEventListshow(isshow:boolean):void;
  22. }
  23. export default defineStore<'main', MainStateType, {}, MainActionsType>('main', {
  24. state: () => ({
  25. cancelReqToken: [],
  26. userInfo: {},
  27. isshoweventlist:false,
  28. }),
  29. actions: {
  30. async getMessage(params) {
  31. try {
  32. const { rows } = await getMessage(params);
  33. return rows;
  34. } catch (err) {
  35. console.log(err);
  36. }
  37. },
  38. setEventListshow(isshow) {
  39. this.isshoweventlist = isshow;
  40. },
  41. async getUserInfo(ticket) {
  42. try {
  43. const {
  44. data: { accessToken, ...userInfo },
  45. } = await getUserInfo(ticket);
  46. if (accessToken) {
  47. // window.localStorage.setItem('Authorization', accessToken);
  48. }
  49. this.userInfo = userInfo;
  50. return true;
  51. } catch (err) {
  52. window.location.href = BaseLoginUrl;
  53. console.log(err);
  54. }
  55. },
  56. pushReqToken(cancelToken) {
  57. this.cancelReqToken.push(cancelToken);
  58. },
  59. clearReqToken() {
  60. this.cancelReqToken.forEach((cancel) => {
  61. cancel('axios cancel by router change');
  62. });
  63. this.cancelReqToken = [];
  64. },
  65. },
  66. });