store.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { reactive } from "vue";
  2. type IUser = {
  3. username?: string;
  4. nickname?: string;
  5. /** 真实姓名 */
  6. realName?: string;
  7. /** 会员结束时间 */
  8. membershipEndTime?: string;
  9. tenantId?: number;
  10. /** 声部名称 */
  11. subjectId?: any;
  12. subjectNames?: string;
  13. subjectName?: string;
  14. /** 头像 */
  15. avatar?: string;
  16. memberRankSettingId?: number;
  17. id?: string | number;
  18. clientType?: "BACKEND" | "SCHOOL" | "TEACHER" | "STUDENT";
  19. /** 是否是VIP */
  20. vipMember?: boolean;
  21. };
  22. type IStatus = "init" | "login" | "logout" | "error";
  23. type IPlatformType = "STUDENT" | "TEACHER" | "WEB" | "";
  24. type IPlatformApi = "/api-student" | "/api-teacher" | "/api-web" | "/api-backend" | "/edu-app" | "/cbs-app";
  25. type IProxy = "" | "/gym" | "/colexiu" | "/orchestra" | "/instrument";
  26. export interface IStoreData {
  27. platformType: IPlatformType;
  28. platformApi: IPlatformApi;
  29. proxy: IProxy;
  30. isApp: boolean;
  31. }
  32. export const storeData = reactive({
  33. status: "init" as IStatus,
  34. /** 用户信息 */
  35. user: {} as IUser,
  36. /** 端口 */
  37. platformType: "STUDENT" as IPlatformType,
  38. /** api地址前缀 */
  39. platformApi: "/api-student" as IPlatformApi,
  40. /** 开发模式api前缀 */
  41. proxy: "" as IProxy,
  42. /** 是否在APP中 */
  43. isApp: false,
  44. });
  45. /** 初始化 */
  46. export const setStoreData = (data: IStoreData) => {
  47. Object.assign(storeData, data);
  48. };
  49. /** 设置用户信息 */
  50. export const setUserInfo = (user: IUser) => {
  51. storeData.status = "login";
  52. storeData.user = user || {};
  53. };
  54. export const setLogout = () => {
  55. storeData.status = "logout";
  56. storeData.user = {};
  57. };
  58. export const setLoginError = () => {
  59. storeData.status = "error";
  60. storeData.user = {};
  61. };