store.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { reactive } from "vue";
  2. type IUser = {
  3. username?: string;
  4. nickname?: string;
  5. /** 真实姓名 */
  6. realName?: string;
  7. tenantId?: number;
  8. /** 声部名称 */
  9. subjectId?: any;
  10. subjectNames?: string;
  11. subjectName?: string;
  12. /** 头像 */
  13. avatar?: string;
  14. memberRankSettingId?: number;
  15. id?: string | number;
  16. clientType?: "BACKEND" | "SCHOOL" | "TEACHER" | "STUDENT";
  17. phone?: string;
  18. schoolInfos?: any[];
  19. // 当前用户 绑定 的乐器
  20. instrumentId?: string;
  21. // 如果学生的声部是打击乐,打击乐可能会有多个乐器id,
  22. specialInstrumentIds?: any[];
  23. // 性别
  24. gender?: 1|0;
  25. };
  26. type IStatus = "init" | "login" | "logout" | "error";
  27. type IPlatformType = "STUDENT" | "TEACHER" | "WEB" | "";
  28. type IPlatformApi = "/api-student" | "/api-teacher" | "/api-web" | "/api-backend" | "/edu-app" | "/cbs-app";
  29. type IProxy = "" | "/gym" | "/colexiu" | "/orchestra" | "/instrument";
  30. export interface IStoreData {
  31. platformType: IPlatformType;
  32. platformApi: IPlatformApi;
  33. proxy: IProxy;
  34. isApp: boolean;
  35. isTeacher: boolean;
  36. }
  37. export const storeData = reactive({
  38. status: "init" as IStatus,
  39. /** 用户信息 */
  40. user: {} as IUser,
  41. /** 端口 */
  42. platformType: "STUDENT" as IPlatformType,
  43. /** api地址前缀 */
  44. platformApi: "/api-student" as IPlatformApi,
  45. /** 开发模式api前缀 */
  46. proxy: "" as IProxy,
  47. /** 是否在APP中 */
  48. isApp: false,
  49. /** 是否是老师端 */
  50. isTeacher: false,
  51. });
  52. /** 初始化 */
  53. export const setStoreData = (data: IStoreData) => {
  54. Object.assign(storeData, data);
  55. };
  56. /** 设置用户信息 */
  57. export const setUserInfo = (user: IUser) => {
  58. storeData.status = "login";
  59. storeData.user = user || {};
  60. };
  61. export const setLogout = () => {
  62. storeData.status = "logout";
  63. storeData.user = {};
  64. };
  65. export const setLoginError = () => {
  66. storeData.status = "error";
  67. storeData.user = {};
  68. };