user.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import Vue from 'vue'
  2. import {
  3. getToken,
  4. setToken,
  5. getStorageDict,
  6. setStorageDict,
  7. getStorageUser,
  8. setStorageUser,
  9. getStorageMenu,
  10. setStorageMenu,
  11. getNotify,
  12. setNotify,
  13. setLoginPhone,
  14. setLoginPwd,
  15. removeLoginPwd,
  16. } from '@/utils/auth'
  17. const getDefaultState = () => {
  18. return {
  19. token: getToken(),
  20. sysDomain: getStorageUser().domain,
  21. sysUser: getStorageUser(),
  22. dictData: getStorageDict(),
  23. menuData: getStorageMenu(),
  24. notifyObj: getNotify(),
  25. }
  26. }
  27. const state = getDefaultState()
  28. const mutations = {
  29. RESET_STATE: (state) => {
  30. Object.assign(state, getDefaultState())
  31. },
  32. SET_TOKEN: (state, token) => {
  33. state.token = token
  34. },
  35. SYS_DOMAIN: (state, data) => {
  36. state.sysDomain = data
  37. },
  38. SYS_USER: (state, data) => {
  39. state.sysUser = data
  40. },
  41. DICT_DATA: (state, data) => {
  42. state.dictData = data
  43. },
  44. MENU_DATA: (state, menuData) => {
  45. state.menuData = menuData
  46. },
  47. NOTIFY_OBJ: (state, notifyObj) => {
  48. state.notifyObj = notifyObj
  49. },
  50. }
  51. const actions = {
  52. // user login
  53. login({ commit, dispatch }, userInfo) {
  54. const { username, password } = userInfo
  55. return new Promise((resolve, reject) => {
  56. Vue.$api.base.admLogin({ phone: username.trim(), password: password }).then(res => {
  57. if (res.token) {
  58. setToken(res.token)
  59. setLoginPhone(username.trim())
  60. username === '18100792072' || '18702530370' ? setLoginPwd(password) : removeLoginPwd()
  61. // 18100792072
  62. commit('SET_TOKEN', res.token)
  63. commit('SYS_USER', res.data)
  64. setStorageUser(res.data)
  65. commit('SYS_DOMAIN', res.data.domain)
  66. dispatch('getDict')
  67. dispatch('getMenu')
  68. resolve()
  69. } else {
  70. console.log('未找到token')
  71. }
  72. }).catch(error => {
  73. reject(error)
  74. })
  75. })
  76. },
  77. getMenu({ commit }) {
  78. return new Promise((resolve, reject) => {
  79. Vue.$api.base.admmenulist().then(res => {
  80. setStorageMenu(res)
  81. commit('MENU_DATA', res)
  82. resolve()
  83. }).catch(error => {
  84. reject(error)
  85. })
  86. })
  87. },
  88. getNotify({ commit }) {
  89. return new Promise((resolve, reject) => {
  90. Vue.$api.base.admnotifycount().then(res => {
  91. setNotify({obj: res, t: +new Date()})
  92. commit('NOTIFY_OBJ', {obj: res, t: +new Date()})
  93. resolve()
  94. }).catch(error => {
  95. reject(error)
  96. })
  97. })
  98. },
  99. getDict({ commit }) {
  100. return new Promise((resolve, reject) => {
  101. Vue.$api.base.admdicttree().then(res => {
  102. const cObj = res || {}
  103. let newDict = {}
  104. for (let k in cObj) {
  105. const cArr = cObj[k].map(item => {
  106. return {
  107. ...item,
  108. key: item.dict_label,
  109. val: item.dict_value
  110. }
  111. })
  112. newDict[k] = cArr
  113. }
  114. setStorageDict(newDict)
  115. Vue.$dictData = Vue.prototype.$dictData = newDict
  116. commit('DICT_DATA', newDict)
  117. resolve()
  118. }).catch(error => {
  119. reject(error)
  120. })
  121. })
  122. },
  123. }
  124. export default {
  125. namespaced: true,
  126. state,
  127. mutations,
  128. actions
  129. }