user.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { login } from '@/api/user'
  2. import router, { resetRouter } from '@/router'
  3. import { setToken, deleteToken } from '@/utils/auth'
  4. import Base from '@/utils/base64ToPassword'
  5. // import Vue from 'vue'
  6. // import { checkToken } from '@/api/system'
  7. const SET_SINGLE_SIGN_ON = localStorage.getItem('SET_SINGLE_SIGN_ON')
  8. const USERINFO = localStorage.getItem('userInfo')
  9. const state = {
  10. singleSignOn: SET_SINGLE_SIGN_ON !== '0', // 单点登录
  11. userInfo: !USERINFO ? {} : JSON.parse(USERINFO)
  12. }
  13. const mutations = {
  14. SET_SINGLE_SIGN_ON (state, loginType) {
  15. state.singleSignOn = loginType === 1
  16. localStorage.setItem('SET_SINGLE_SIGN_ON', loginType)
  17. },
  18. SET_USERINFO: (state, userInfo) => {
  19. state.userInfo = userInfo
  20. localStorage.setItem('userInfo', JSON.stringify(userInfo))
  21. }
  22. }
  23. const actions = {
  24. login ({ commit, dispatch }, params) {
  25. const { username, password, ...query } = params
  26. const newBase = new Base()
  27. const newParams = {
  28. username: username.trim(),
  29. password: newBase.encode(password.trim() + (Math.random()).toString().slice(2, 8)),
  30. ...query
  31. }
  32. // 账号密码处理
  33. return new Promise((resolve, reject) => {
  34. login(newParams).then(res => {
  35. // 登录成功返回对应的信息 包括token 用户信息 权限等等
  36. const { data } = res
  37. commit('SET_SINGLE_SIGN_ON', 0)
  38. commit('menu/SET_REFRESH', true, { root: true })
  39. setToken(data.token)
  40. // const { username, name, id, employeeCode } = data.user
  41. commit('SET_USERINFO', data.user)
  42. resolve()
  43. }).catch(reject)
  44. })
  45. },
  46. // 退出登录
  47. /**
  48. *
  49. * @param {*} param
  50. * @param { Boolean } isLogin 是否调用回到登录页方法
  51. */
  52. userLogout ({ commit }) {
  53. // 清空token
  54. deleteToken()
  55. // 清除路由
  56. resetRouter()
  57. if (!state.singleSignOn) {
  58. // 普通退出
  59. router.push({ path: '/login-local' })
  60. commit('SET_SINGLE_SIGN_ON', 1) // 重置为单点登录
  61. return
  62. }
  63. router.push({ path: '/reminder' })
  64. }
  65. }
  66. export default {
  67. namespaced: true,
  68. state,
  69. mutations,
  70. actions
  71. }