user.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. import { login, logout, getInfo, getRouter } from '@/api/user'
  2. import { getToken, setToken, removeToken, getUserid, setUserid, removeUserid } from '@/utils/auth'
  3. import { resetRouter } from '@/router'
  4. const getDefaultState = () => {
  5. return {
  6. token: getToken(), // token
  7. userid: getUserid(), // 用户id
  8. name: '', // 用户名称
  9. phone: '', // 用户手机
  10. menus: "", // 菜单
  11. }
  12. }
  13. const state = getDefaultState()
  14. const mutations = {
  15. RESET_STATE: (state) => {
  16. Object.assign(state, getDefaultState())
  17. },
  18. SET_USERID: (state, userid) => {
  19. state.userid = userid
  20. },
  21. SET_TOKEN: (state, token) => {
  22. state.token = token
  23. },
  24. SET_NAME: (state, name) => {
  25. state.name = name
  26. },
  27. SET_PHONE: (state, phone) => {
  28. state.phone = phone
  29. },
  30. SET_MENUS: (state, menus) => {
  31. state.menus = menus
  32. }
  33. }
  34. const actions = {
  35. // user login
  36. login({ commit }, userInfo) {
  37. const { username, password, code, codeValue } = userInfo
  38. return new Promise((resolve, reject) => {
  39. login({ userName: username.trim(), password: password, code: code, codeValue: codeValue }).then(response => {
  40. const { data } = response
  41. commit('SET_TOKEN', data.token)
  42. commit('SET_USERID', data.adminUserId)
  43. setToken(data.token)
  44. setUserid(data.adminUserId)
  45. resolve()
  46. }).catch(error => {
  47. reject(error)
  48. })
  49. })
  50. },
  51. // get user info
  52. getInfo({ commit, state }) {
  53. return new Promise((resolve, reject) => {
  54. console.log(state);
  55. getInfo(state.userid).then(response => {
  56. const { data } = response
  57. console.log(1111111,data);
  58. if (!data) {
  59. return reject('Verification failed, please Login again.')
  60. }
  61. console.log(data);
  62. const { nickName, userName } = data
  63. // 模拟请求数据
  64. // const menus = [
  65. // {
  66. // 'path': '/example',
  67. // 'component': 'Layout',
  68. // 'redirect': '/example/table',
  69. // 'name': 'Example',
  70. // 'meta': { 'title': 'Example', 'icon': 'el-icon-s-help', 'roles': ['admin'] },
  71. // 'children': [
  72. // {
  73. // 'path': 'table',
  74. // 'name': 'Table',
  75. // 'component': 'table/index',
  76. // 'meta': { 'title': 'Table', 'icon': 'table' }
  77. // },
  78. // {
  79. // 'path': 'tree',
  80. // 'name': 'Tree',
  81. // 'component': 'tree/index',
  82. // 'meta': { 'title': 'Tree', 'icon': 'tree' }
  83. // }
  84. // ]
  85. // },
  86. // ]
  87. // menus.push({ path: '*', redirect: '/404', hidden: true })
  88. commit('SET_NAME', nickName)
  89. commit('SET_PHONE', userName)
  90. // commit("SET_MENUS", menus) // 触发vuex SET_MENUS 保存路由表到vuex
  91. localStorage.setItem("supply_user", JSON.stringify(data));
  92. resolve(data)
  93. }).catch(error => {
  94. reject(error)
  95. })
  96. })
  97. },
  98. getRouter({ commit, state }) {
  99. return new Promise((resolve, reject) => {
  100. getRouter({adminUserId: state.userid}).then(response => {
  101. const menus = response.data;
  102. // 模拟请求数据
  103. // const menus = [
  104. // {
  105. // 'path': '/example',
  106. // 'component': 'Layout',
  107. // 'redirect': '/example/table',
  108. // 'name': 'Example',
  109. // 'meta': { 'title': 'Example', 'icon': 'el-icon-s-help' },
  110. // 'children': [
  111. // {
  112. // 'path': 'table',
  113. // 'name': 'Table',
  114. // 'component': 'table/index',
  115. // 'meta': { 'title': 'Table', 'icon': 'table' }
  116. // },
  117. // {
  118. // 'path': 'tree',
  119. // 'name': 'Tree',
  120. // 'component': 'tree/index',
  121. // 'meta': { 'title': 'Tree', 'icon': 'tree' }
  122. // }
  123. // ]
  124. // },
  125. // ]
  126. // menus.push({ path: '*', redirect: '/404', hidden: true })
  127. commit("SET_MENUS", menus)
  128. resolve()
  129. }).catch(error => {
  130. reject(error)
  131. })
  132. })
  133. },
  134. // user logout
  135. logout({ commit, state }) {
  136. return new Promise((resolve, reject) => {
  137. logout(state.token).then(() => {
  138. removeToken() // must remove token first
  139. removeUserid()
  140. resetRouter()
  141. commit('RESET_STATE')
  142. resolve()
  143. }).catch(error => {
  144. reject(error)
  145. })
  146. })
  147. },
  148. // remove token
  149. resetToken({ commit }) {
  150. return new Promise(resolve => {
  151. removeToken() // must remove token first
  152. removeUserid()
  153. commit('RESET_STATE')
  154. resolve()
  155. })
  156. }
  157. }
  158. export default {
  159. namespaced: true,
  160. state,
  161. mutations,
  162. actions
  163. }