user.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import { fetchMenusApi, getWardsApi, loginApi } from '@/api/login'
  2. import router from '@/router'
  3. const state = () => ({
  4. token: '', // 登录token
  5. sid: '', // 用户websocket id
  6. info: {}, // 用户信息
  7. wards: {}, // 病房列表
  8. menus: [], // 用户菜单
  9. routes: [], // 用户所以可访问路由
  10. ward: '', // 用户当前选择的病房
  11. paths: [], // 装载path的string数组
  12. flatRoutes: [] // 用户可访问路由的扁平列表
  13. })
  14. // getters
  15. const getters = {
  16. token(state) {
  17. return state.token
  18. },
  19. sid(state) {
  20. return state.sid
  21. },
  22. info(state) {
  23. return state.info
  24. },
  25. wards(state) {
  26. return state.wards
  27. },
  28. menus(state) {
  29. return state.menus
  30. },
  31. routes(state) {
  32. return state.routes
  33. },
  34. ward(state) {
  35. return state.ward
  36. },
  37. pahts(state) {
  38. return state.paths
  39. },
  40. }
  41. // mutations
  42. const mutations = {
  43. tokenChange(state, token) {
  44. state.token = token
  45. },
  46. closeSid(state, sid) {
  47. state.sid = ''
  48. },
  49. sidChange(state, sid) {
  50. state.sid = sid
  51. },
  52. infoChange(state, info) {
  53. state.info = info
  54. },
  55. wardsChange(state, wards) {
  56. state.wards = wards
  57. },
  58. menusChange(state, menus) {
  59. state.menus = menus
  60. },
  61. routesChange(state, routes) {
  62. state.routes = routes
  63. },
  64. wardChange(state, ward) {
  65. state.ward = ward
  66. },
  67. pathsChange(state, paths) {
  68. state.paths = paths
  69. },
  70. flatRoutesChange(state, flatRoutes) {
  71. state.flatRoutes = flatRoutes
  72. },
  73. }
  74. // actions
  75. const actions = {
  76. // login by login.vue
  77. login({ commit, dispatch }, params) {
  78. return new Promise((resolve, reject) => {
  79. loginApi(params).then((res) => {
  80. commit('tokenChange', res.token)
  81. commit('sidChange', res.sid)
  82. commit('infoChange', res)
  83. dispatch('getWards').then((infoRes) => {
  84. resolve(res)
  85. })
  86. })
  87. })
  88. },
  89. // get user info after user logined
  90. getWards({ commit, dispatch }) {
  91. return new Promise((resolve, reject) => {
  92. getWardsApi().then((res) => {
  93. commit('wardsChange', res)
  94. dispatch('getMenus').then((menusRes) => {
  95. resolve(res)
  96. })
  97. })
  98. })
  99. },
  100. getMenus({ commit }) {
  101. return new Promise((resolve, reject) => {
  102. fetchMenusApi().then((res) => {
  103. commit('menusChange', res.routes)
  104. commit('routesChange', res.routes)
  105. commit('pathsChange', res.paths)
  106. commit('flatRoutesChange', res.flatRoutes)
  107. resolve(res)
  108. })
  109. })
  110. },
  111. // login out the system after user click the loginOut button
  112. loginOut({ commit }) {
  113. localStorage.clear()
  114. router.push('/login')
  115. },
  116. }
  117. export default {
  118. namespaced: true,
  119. state,
  120. actions,
  121. getters,
  122. mutations,
  123. }