state.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { reactive } from 'vue'
  2. import request from './helpers/request'
  3. import { getAuth, getUserType, setUserInfo } from './helpers/utils'
  4. import mitt from '@/helpers/mitt'
  5. type status = 'init' | 'login' | 'logout' | 'error'
  6. export const state = reactive({
  7. user: {
  8. status: 'init' as status,
  9. data: {} as any
  10. },
  11. openLiveStatus: false,
  12. loginPopupStatus: false, // 登录弹窗状态
  13. loginPopupTimer: null as any // 登录弹窗定时器
  14. })
  15. export const getUserInfo = async () => {
  16. const token = getAuth()
  17. const userType = getUserType()
  18. // 判断是否有token,token和userType 判断是否登录
  19. if (!token) {
  20. return
  21. }
  22. try {
  23. const url =
  24. userType === 'TEACHER'
  25. ? '/api-website/teacher/queryUserInfo'
  26. : '/api-website/student/queryUserInfo'
  27. const res = await request.get(url)
  28. state.user.data = res.data || {}
  29. // 存储登录人信息
  30. setUserInfo(JSON.stringify(state.user.data))
  31. // 登录状态
  32. mitt.emit('mittFn')
  33. state.user.status = 'login'
  34. } catch {
  35. state.user.status = 'init'
  36. }
  37. }