index.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { timerTask } from '@/utils/timer'
  2. import { commonStore, accountStore, futuresStore, sessionData } from '@/stores'
  3. import { tokenCheck } from '@/services/api/account'
  4. import eventBus from '@/services/bus'
  5. import socket from '@/services/socket'
  6. /**
  7. * 退出登录
  8. */
  9. export function logout(callback?: () => void) {
  10. socket.closeAll()
  11. timerTask.clearAll()
  12. sessionData.reset()
  13. accountStore.reset()
  14. callback && callback()
  15. }
  16. /**
  17. * 初始化业务数据
  18. * @param callback
  19. */
  20. export async function initBaseData(callback?: () => void) {
  21. if (sessionData.getLoginInfo('Token')) {
  22. checkTokenLoop()
  23. const asyncTask = [
  24. commonStore.getLoginData(),
  25. futuresStore.getGoodsList(),
  26. sessionData.getUserMenuList(),
  27. //sessionData.getTableColumnList(),
  28. ]
  29. await Promise.all(asyncTask).then(() => {
  30. accountStore.getAccountList()
  31. callback && callback()
  32. }).catch(() => {
  33. return Promise.reject('初始化失败')
  34. })
  35. } else {
  36. callback && callback()
  37. }
  38. }
  39. /**
  40. * 令牌效验
  41. */
  42. export function checkToken() {
  43. const { LoginID, Token } = sessionData.getValue('loginInfo')
  44. return tokenCheck({
  45. data: {
  46. LoginID,
  47. Token,
  48. },
  49. fail: () => eventBus.$emit('LogoutNotify')
  50. })
  51. }
  52. /**
  53. * 轮询效验令牌
  54. */
  55. export function checkTokenLoop() {
  56. const delay = 1 * 60 * 1000 // 每1分钟效验一次令牌
  57. timerTask.setTimeout(() => {
  58. checkToken().then(() => checkTokenLoop())
  59. }, delay, 'checkToken')
  60. }
  61. /**
  62. * 停止令牌效验
  63. */
  64. export function stopCheckToken() {
  65. timerTask.clearTimeout('checkToken')
  66. }