store.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { reactive } from "vue";
  2. type IUser = {
  3. username?: string
  4. /** 会员结束时间 */
  5. membershipEndTime?: string
  6. tenantId?: number
  7. /** 声部名称 */
  8. subjectNames?: string
  9. /** 头像 */
  10. avatar?: string
  11. };
  12. type IStatus = "init" | "login" | "logout" | "error";
  13. type IPlatformType = "STUDENT" | "TEACHER" | "WEB";
  14. type IPlatformApi = "/api-student" | "/api-teacher" | "/api-web";
  15. type IProxy = "/gym" | "/colexiu" | "/orchestra";
  16. export const storeData = reactive({
  17. status: "init" as IStatus,
  18. /** 用户信息 */
  19. user: {} as IUser,
  20. /** 端口 */
  21. platformType: "STUDENT" as IPlatformType,
  22. /** api地址前缀 */
  23. platformApi: "/api-student" as IPlatformApi,
  24. /** 开发模式api前缀 */
  25. proxy: "" as IProxy,
  26. });
  27. /** 初始化 */
  28. export const initStore = <storeData>(data: storeData) => {
  29. Object.assign(storeData, data);
  30. };
  31. /** 设置用户信息 */
  32. export const setUserInfo = (user: IUser) => {
  33. storeData.status = "login";
  34. storeData.user = user || {};
  35. };
  36. export const setLogout = () => {
  37. storeData.status = "logout";
  38. storeData.user = {};
  39. };
  40. export const setLoginError = () => {
  41. storeData.status = "error";
  42. storeData.user = {};
  43. };