student-register-store.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import { defineStore } from 'pinia';
  2. import { createStorage } from '@/helpers/storage';
  3. import { ACCESS_TOKEN } from '../mutation-types';
  4. const storage = createStorage({ prefixKey: '', storage: sessionStorage });
  5. import router from '../../router/index';
  6. export interface IUserState {
  7. token: string;
  8. selectGoods: any[];
  9. selectVip: any[];
  10. schoolId: string;
  11. }
  12. export const useStudentRegisterStore = defineStore('student-register-store', {
  13. state: (): IUserState => ({
  14. token: storage.get(ACCESS_TOKEN, ''),
  15. selectGoods: [] as any,
  16. selectVip: [] as any,
  17. schoolId: storage.get('register_school_id', '')
  18. }),
  19. getters: {
  20. getToken(): string {
  21. return this.token;
  22. },
  23. getGoods(): any[] {
  24. return this.selectGoods;
  25. },
  26. getVip(): any {
  27. return this.selectVip;
  28. },
  29. getSchoolId(): string {
  30. return this.schoolId;
  31. }
  32. },
  33. actions: {
  34. /**
  35. * 设置token
  36. * @param token
  37. */
  38. setToken(token: string) {
  39. this.token = token;
  40. storage.set(ACCESS_TOKEN, token);
  41. },
  42. /**
  43. * 删除token
  44. */
  45. deleteToken() {
  46. this.token = '';
  47. storage.remove(ACCESS_TOKEN);
  48. },
  49. /**
  50. * 设置选择的商品
  51. * @param goods 商品
  52. */
  53. setGoods(goods: any) {
  54. this.selectGoods.push(goods);
  55. },
  56. /**
  57. * 删除商品
  58. * @param goodsId 商品编号
  59. */
  60. deleteGoods(goodsId: string | number): void {
  61. const index = this.selectGoods.findIndex(
  62. (goods: any) => goods.goodsId === goodsId
  63. );
  64. this.selectGoods.splice(index, 1);
  65. },
  66. /**
  67. * 设置选中的AI学练工具
  68. * @param vip 小酷商品
  69. */
  70. setVip(vip: any) {
  71. this.selectVip = vip;
  72. },
  73. /**
  74. * 删除选中AI学练工具
  75. * @param goodsId 商品编号
  76. */
  77. deleteVip(goodsId: string | number): void {
  78. const index = this.selectVip.findIndex(
  79. (goods: any) => goods.goodsId === goodsId
  80. );
  81. this.selectVip.splice(index, 1);
  82. },
  83. /**
  84. * 判断vip是否选中
  85. * @param goodsId 商品编号
  86. * @returns boolean
  87. */
  88. selectedVip(goodsId: string | number): Boolean {
  89. const index = this.selectVip.findIndex(
  90. (goods: any) => goods.goodsId === goodsId
  91. );
  92. return index >= 0 ? true : false;
  93. },
  94. /**
  95. * 初始化学校编号
  96. * @param token
  97. */
  98. setShoolId(schoolId: string) {
  99. this.schoolId = schoolId;
  100. storage.set('register_school_id', schoolId);
  101. },
  102. /**
  103. * 退出登录
  104. */
  105. studentLoutOut(): void {
  106. this.deleteToken();
  107. router.replace({
  108. path: '/student-register',
  109. query: {
  110. sId: this.schoolId
  111. }
  112. });
  113. }
  114. }
  115. });
  116. // Need to be used outside the setup
  117. // export function useUserStoreWidthOut() {
  118. // return useUserStore(store);
  119. // }