store.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. phone?: string;
  22. schoolInfos?: any[];
  23. // 当前用户 绑定 的乐器
  24. instrumentId?: string;
  25. // 性别
  26. gender?: 1|0;
  27. };
  28. type IStatus = "init" | "login" | "logout" | "error";
  29. type IPlatformType = "STUDENT" | "TEACHER" | "WEB" | "";
  30. type IPlatformApi = "/api-student" | "/api-teacher" | "/api-web" | "/api-backend" | "/edu-app" | "/cbs-app";
  31. type IProxy = "" | "/gym" | "/colexiu" | "/orchestra" | "/instrument";
  32. export interface IStoreData {
  33. platformType: IPlatformType;
  34. platformApi: IPlatformApi;
  35. proxy: IProxy;
  36. isApp: boolean;
  37. isTeacher: boolean;
  38. }
  39. export const storeData = reactive({
  40. status: "init" as IStatus,
  41. /** 用户信息 */
  42. user: {} as IUser,
  43. /** 端口 */
  44. platformType: "STUDENT" as IPlatformType,
  45. /** api地址前缀 */
  46. platformApi: "/api-student" as IPlatformApi,
  47. /** 开发模式api前缀 */
  48. proxy: "" as IProxy,
  49. /** 是否在APP中 */
  50. isApp: false,
  51. /** 是否是老师端 */
  52. isTeacher: false,
  53. });
  54. /** 初始化 */
  55. export const setStoreData = (data: IStoreData) => {
  56. Object.assign(storeData, data);
  57. };
  58. /** 设置用户信息 */
  59. export const setUserInfo = (user: IUser) => {
  60. storeData.status = "login";
  61. storeData.user = user || {};
  62. };
  63. export const setLogout = () => {
  64. storeData.status = "logout";
  65. storeData.user = {};
  66. };
  67. export const setLoginError = () => {
  68. storeData.status = "error";
  69. storeData.user = {};
  70. };