user.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import { login, fetchUserInfo, fetchUserVipInfo } from '@/api/user'
  2. import { resetRouter } from '@/router'
  3. import { getToken, getUserInfo, removeToken, removeUserInfo, setToken, setUserInfo } from '@/utils/auth'
  4. // 用户信息
  5. const state = {
  6. token: getToken(),
  7. userInfo: null,
  8. name: '',
  9. shopStatus: '',
  10. authUserId: '',
  11. userIdentity: '',
  12. shopType: '',
  13. brandId: '',
  14. loginAccount: '',
  15. mobile: '',
  16. vipStatus: '',
  17. roles: [],
  18. menusList: [],
  19. permissions: [],
  20. vipInfo: {}
  21. }
  22. const mutations = {
  23. // 重置用户信息
  24. SAVE_USER_INOF: (state, playload) => {
  25. const userInfo = playload
  26. state.name = userInfo.name || ''
  27. state.shopStatus = userInfo.shopStatus || ''
  28. state.authUserId = userInfo.authUserId || ''
  29. state.userIdentity = userInfo.userIdentity || ''
  30. state.shopType = userInfo.shopType || ''
  31. state.brandId = userInfo.brandId || ''
  32. state.loginAccount = userInfo.loginAccount || ''
  33. state.mobile = userInfo.mobile || ''
  34. state.vipStatus = userInfo.vipStatus || ''
  35. },
  36. // 设置token
  37. SET_TOKEN: (state, token) => {
  38. state.token = token
  39. },
  40. // 设置用户角色
  41. SET_ROLES: (state, roles) => {
  42. state.roles = roles
  43. },
  44. // 保存菜单列表
  45. SET_MENUS: (state, menus) => {
  46. state.menusList = menus
  47. },
  48. // 保存权限列表
  49. SET_PERMISSIONS: (state, permissions) => {
  50. state.permissions = permissions
  51. },
  52. // 保存会员信息
  53. SET_VIPINFO: (state, info) => {
  54. state.vipInfo = info
  55. }
  56. }
  57. const actions = {
  58. // 登录操作
  59. login({ commit }, userInfo) {
  60. const { username, password } = userInfo
  61. return login({ mobileOrName: username.trim(), password: password })
  62. .then(res => {
  63. // 保存token及用户信息
  64. setToken(res.data.token)
  65. setUserInfo(res.data)
  66. commit('SAVE_USER_INOF', res.data)
  67. commit('SET_TOKEN', res.data.token)
  68. })
  69. .catch(() => {
  70. commit('SAVE_USER_INOF', {})
  71. commit('SET_TOKEN', '')
  72. commit('SET_ROLES', [])
  73. })
  74. },
  75. // 获取用户菜单列表
  76. fetchUserInfo({ commit, state }) {
  77. return fetchUserInfo({ authUserId: state.authUserId }).then(res => {
  78. console.log(res)
  79. commit('SET_ROLES', res.data.roles)
  80. commit('SET_MENUS', res.data.menus)
  81. commit('SET_PERMISSIONS', res.data.permissions)
  82. })
  83. },
  84. // 获取用户会员信息
  85. fetchUserVipInfo({ commit, state }) {
  86. if (state.userIdentity === 1) return
  87. fetchUserVipInfo({ authUserId: state.authUserId }).then(res => {
  88. commit('SET_VIPINFO', res.data)
  89. })
  90. },
  91. // 退出登录
  92. logout({ commit }) {
  93. removeToken()
  94. removeUserInfo()
  95. resetRouter()
  96. commit('SAVE_USER_INOF', {})
  97. commit('SET_TOKEN', '')
  98. commit('SET_ROLES', [])
  99. },
  100. // 代理登录
  101. proxyLogin({ commit, rootGetters }) {
  102. commit('SET_ROLES', [])
  103. commit('SAVE_USER_INOF', rootGetters.proxyInfo)
  104. },
  105. // 代理登出
  106. proxyLogout({ commit }) {
  107. commit('SET_ROLES', [])
  108. commit('SAVE_USER_INOF', getUserInfo())
  109. }
  110. }
  111. export default {
  112. namespaced: true,
  113. state,
  114. mutations,
  115. actions
  116. }