routes.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /**
  2. * @author https://gitee.com/chu1204505056/vue-admin-better (不想保留author可删除)
  3. * @description 路由拦截状态管理,目前两种模式:all模式与intelligence模式,其中partialRoutes是菜单暂未使用
  4. */
  5. import { asyncRoutes, constantRoutes } from '@/router'
  6. import { getRouterList } from '@/api/router'
  7. import { convertRouter, filterAsyncRoutes } from '@/utils/handleRoutes'
  8. const state = () => ({
  9. routes: [],
  10. partialRoutes: [],
  11. })
  12. const getters = {
  13. routes: (state) => state.routes,
  14. partialRoutes: (state) => state.partialRoutes,
  15. }
  16. const mutations = {
  17. setRoutes(state, routes) {
  18. state.routes = constantRoutes.concat(routes)
  19. },
  20. setAllRoutes(state, routes) {
  21. state.routes = constantRoutes.concat(routes)
  22. },
  23. setPartialRoutes(state, routes) {
  24. state.partialRoutes = constantRoutes.concat(routes)
  25. },
  26. }
  27. const actions = {
  28. async setRoutes({ commit }, permissions) {
  29. //开源版只过滤动态路由permissions,admin不再默认拥有全部权限
  30. const finallyAsyncRoutes = await filterAsyncRoutes(
  31. [...asyncRoutes],
  32. permissions
  33. )
  34. commit('setRoutes', finallyAsyncRoutes)
  35. return finallyAsyncRoutes
  36. },
  37. async setAllRoutes({ commit }) {
  38. let { data } = await getRouterList()
  39. data.push({ path: '*', redirect: '/404', hidden: true })
  40. let accessRoutes = convertRouter(data)
  41. commit('setAllRoutes', accessRoutes)
  42. return accessRoutes
  43. },
  44. setPartialRoutes({ commit }, accessRoutes) {
  45. commit('setPartialRoutes', accessRoutes)
  46. return accessRoutes
  47. },
  48. }
  49. export default { state, getters, mutations, actions }