store.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. subjectNames?: string;
  12. subjectName?: string;
  13. /** 头像 */
  14. avatar?: string;
  15. memberRankSettingId?: number;
  16. id?: string | number;
  17. clientType?: "BACKEND" | "SCHOOL" | "TEACHER" | "STUDENT";
  18. };
  19. type IStatus = "init" | "login" | "logout" | "error";
  20. type IPlatformType = "STUDENT" | "TEACHER" | "WEB" | "";
  21. type IPlatformApi = "/api-student" | "/api-teacher" | "/api-web" | "/api-backend" | "/edu-app";
  22. type IProxy = "" | "/gym" | "/colexiu" | "/orchestra" | "/instrument";
  23. export interface IStoreData {
  24. platformType: IPlatformType;
  25. platformApi: IPlatformApi;
  26. proxy: IProxy;
  27. isApp: boolean;
  28. }
  29. export const storeData = reactive({
  30. status: "init" as IStatus,
  31. /** 用户信息 */
  32. user: {} as IUser,
  33. /** 端口 */
  34. platformType: "TEACHER" as IPlatformType,
  35. /** api地址前缀 */
  36. platformApi: "/edu-app" as IPlatformApi,
  37. /** 开发模式api前缀 */
  38. proxy: "" as IProxy,
  39. /** 是否在APP中 */
  40. isApp: false,
  41. });
  42. /** 初始化 */
  43. export const setStoreData = (data: IStoreData) => {
  44. Object.assign(storeData, data);
  45. };
  46. /** 设置用户信息 */
  47. export const setUserInfo = (user: IUser) => {
  48. storeData.status = "login";
  49. storeData.user = user || {};
  50. };
  51. export const setLogout = () => {
  52. storeData.status = "logout";
  53. storeData.user = {};
  54. };
  55. export const setLoginError = () => {
  56. storeData.status = "error";
  57. storeData.user = {};
  58. };