index.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. Vue.use(Vuex)
  4. const store = new Vuex.Store({
  5. state: {
  6. token: '',
  7. userId: '',
  8. role: 'student',
  9. alumniVerify: 'pending',
  10. classId: '',
  11. name: '',
  12. nickname: '',
  13. phone: '',
  14. newUser: false
  15. },
  16. getters: {
  17. isLoggedIn: function(state) {
  18. return !!state.token
  19. },
  20. isVerified: function(state) {
  21. return state.alumniVerify === 'accepted'
  22. },
  23. hasClass: function(state) {
  24. return state.classId !== '' && state.classId !== null
  25. }
  26. },
  27. mutations: {
  28. setToken(state, token) {
  29. state.token = token
  30. uni.setStorageSync('token', token)
  31. },
  32. setUserInfo(state, userInfo) {
  33. state.userId = userInfo.userId
  34. state.role = userInfo.role || 'student'
  35. state.alumniVerify = userInfo.alumniVerify || 'pending'
  36. state.classId = userInfo.classId || ''
  37. state.name = userInfo.name || ''
  38. state.nickname = userInfo.nickname || ''
  39. state.phone = userInfo.phone || ''
  40. state.newUser = userInfo.newUser || false
  41. uni.setStorageSync('userId', userInfo.userId)
  42. uni.setStorageSync('role', state.role)
  43. uni.setStorageSync('alumniVerify', state.alumniVerify)
  44. uni.setStorageSync('classId', state.classId)
  45. uni.setStorageSync('userInfo', {
  46. userId: userInfo.userId,
  47. role: state.role,
  48. alumniVerify: state.alumniVerify,
  49. classId: state.classId,
  50. name: state.name,
  51. nickname: state.nickname,
  52. phone: state.phone
  53. })
  54. },
  55. setClassId(state, classId) {
  56. state.classId = classId
  57. uni.setStorageSync('classId', classId)
  58. },
  59. setAlumniVerify(state, status) {
  60. state.alumniVerify = status
  61. uni.setStorageSync('alumniVerify', status)
  62. var userInfo = uni.getStorageSync('userInfo') || {}
  63. userInfo.alumniVerify = status
  64. uni.setStorageSync('userInfo', userInfo)
  65. },
  66. logout(state) {
  67. state.token = ''
  68. state.userId = ''
  69. state.role = 'student'
  70. state.alumniVerify = 'pending'
  71. state.classId = ''
  72. state.name = ''
  73. state.nickname = ''
  74. state.phone = ''
  75. state.newUser = false
  76. uni.removeStorageSync('token')
  77. uni.removeStorageSync('userId')
  78. uni.removeStorageSync('role')
  79. uni.removeStorageSync('alumniVerify')
  80. uni.removeStorageSync('classId')
  81. uni.removeStorageSync('userInfo')
  82. }
  83. },
  84. actions: {
  85. login({ commit }, data) {
  86. commit('setToken', data.token)
  87. commit('setUserInfo', {
  88. userId: data.userId,
  89. role: data.role,
  90. alumniVerify: data.alumniVerify,
  91. classId: data.classId,
  92. name: data.name,
  93. nickname: data.nickname,
  94. phone: data.phone,
  95. newUser: data.newUser
  96. })
  97. }
  98. }
  99. })
  100. export default store