index.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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: 'parent',
  9. familyId: '',
  10. nickname: '',
  11. currentChildId: '',
  12. children: []
  13. },
  14. mutations: {
  15. setToken(state, token) {
  16. state.token = token
  17. uni.setStorageSync('token', token)
  18. },
  19. setUserInfo(state, userInfo) {
  20. state.userId = userInfo.userId
  21. state.role = userInfo.role
  22. state.familyId = userInfo.familyId
  23. state.nickname = userInfo.nickname
  24. },
  25. setChildren(state, children) {
  26. state.children = children
  27. if (children.length > 0 && !state.currentChildId) {
  28. state.currentChildId = children[0].id
  29. }
  30. },
  31. setCurrentChild(state, childId) {
  32. state.currentChildId = childId
  33. uni.setStorageSync('currentChildId', childId)
  34. },
  35. switchRole(state, role) {
  36. state.role = role
  37. uni.setStorageSync('role', role)
  38. },
  39. logout(state) {
  40. state.token = ''
  41. state.userId = ''
  42. state.role = 'parent'
  43. state.familyId = ''
  44. state.nickname = ''
  45. state.currentChildId = ''
  46. state.children = []
  47. uni.removeStorageSync('token')
  48. }
  49. },
  50. actions: {
  51. login({ commit }, userInfo) {
  52. commit('setToken', userInfo.token)
  53. commit('setUserInfo', userInfo)
  54. },
  55. updateChildren({ commit }, children) {
  56. commit('setChildren', children)
  57. }
  58. }
  59. })
  60. export default store