state.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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. authVisibleShow: false, // 授权搜索徐跑完图
  13. loginPopupStatus: false, // 登录弹窗状态
  14. loginPopupTimer: null as any // 登录弹窗定时器
  15. })
  16. export const getUserInfo = async () => {
  17. const token = getAuth()
  18. const userType = getUserType()
  19. // 判断是否有token,token和userType 判断是否登录
  20. if (!token) {
  21. return
  22. }
  23. try {
  24. const url =
  25. userType === 'TEACHER'
  26. ? '/api-website/teacher/queryUserInfo'
  27. : '/api-website/student/queryUserInfo'
  28. const res = await request.get(url)
  29. state.user.data = res.data || {}
  30. // 存储登录人信息
  31. setUserInfo(JSON.stringify(state.user.data))
  32. // 登录状态
  33. mitt.emit('mittFn')
  34. state.user.status = 'login'
  35. } catch {
  36. state.user.status = 'init'
  37. }
  38. }