index.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import { createStore } from 'vuex'
  2. import { reportVisitPage } from '@/api.js'
  3. const loginStatusEnum = {
  4. notLogin: 'not-login',
  5. visitor: 'visitor',
  6. wxUser: 'wxUser',
  7. }
  8. export default createStore({
  9. state: {
  10. haveShownStartUp: true, // 暂定不使用加载页
  11. loginStatus: loginStatusEnum.notLogin,
  12. token: '',
  13. userInfo: {
  14. userName: '',
  15. userId: null,
  16. },
  17. pageVisitRecord: {},
  18. },
  19. getters: {
  20. loginStatusEnum() {
  21. return loginStatusEnum
  22. }
  23. },
  24. mutations: {
  25. recordShowStartUp(state) {
  26. state.haveShownStartUp = true
  27. },
  28. setLoginStatus(state, value) {
  29. state.loginStatus = value
  30. },
  31. setUserName(state, value) {
  32. state.userInfo.userName = value
  33. },
  34. setToken(state, value) {
  35. state.token = value
  36. localStorage.setItem('token', value)
  37. },
  38. setUserInfo(state, value) {
  39. state.userInfo = value
  40. localStorage.setItem('userInfo', JSON.stringify(value))
  41. if (state.userInfo.score === null) {
  42. state.userInfo.score = 0
  43. }
  44. },
  45. logoutCallback(state) {
  46. state.loginStatus = loginStatusEnum.notLogin
  47. state.token = ''
  48. localStorage.removeItem('token')
  49. state.userInfo = {}
  50. localStorage.removeItem('userInfo')
  51. },
  52. getPageVisitRecordFromStorage(state) {
  53. let pageVisitRecordStr = localStorage.getItem('pageVisitRecord')
  54. if (pageVisitRecordStr) {
  55. state.pageVisitRecord = JSON.parse(pageVisitRecordStr)
  56. }
  57. },
  58. setPageVisitRecord(state, value) {
  59. state.pageVisitRecord = value
  60. }
  61. },
  62. actions: {
  63. recordPageVisitIfNeeded({ state, commit }, { pageId }) {
  64. let needUpdateStorage = false
  65. let userId = undefined
  66. if (state.loginStatus !== loginStatusEnum.wxLogin) {
  67. userId = 'visitor'
  68. } else {
  69. userId = state.userInfo.userId
  70. }
  71. if (!state.pageVisitRecord[userId]) {
  72. state.pageVisitRecord[userId] = {}
  73. needUpdateStorage = true
  74. }
  75. let lastVisitTime = undefined
  76. lastVisitTime = state.pageVisitRecord[userId][pageId]
  77. if (lastVisitTime === undefined) {
  78. state.pageVisitRecord[userId][pageId] = 0
  79. needUpdateStorage = true
  80. }
  81. let lastVisitTimeObj = new Date(lastVisitTime)
  82. let thisVisitTimeObj = new Date()
  83. if (!(lastVisitTimeObj.getFullYear() === thisVisitTimeObj.getFullYear() && lastVisitTimeObj.getMonth() === thisVisitTimeObj.getMonth() && lastVisitTimeObj.getDay() === thisVisitTimeObj.getDay())) {
  84. state.pageVisitRecord[userId][pageId] = thisVisitTimeObj.getTime()
  85. needUpdateStorage = true
  86. reportVisitPage(pageId)
  87. }
  88. if (needUpdateStorage) {
  89. localStorage.setItem('pageVisitRecord', JSON.stringify(state.pageVisitRecord))
  90. }
  91. }
  92. },
  93. modules: {
  94. }
  95. })