import { constantRoutes, asyncRoutes } from '@/router' function hasPermission(roles, route) { if (route.meta && route.meta.roles) { return route.meta.roles.includes(roles) } else { return true } } function filterAsyncRoutes(routes, roles) { const res = [] routes.forEach(route => { const temp = { ...route } if (hasPermission(roles, temp)) { if (temp.children) { temp.children = filterAsyncRoutes(temp.children, roles) } res.push(temp) } }) return res } const state = { routes: [], addRoutes: [] } const mutations = { SET_ROUTES: (state, payload) => { state.addRoutes = filterAsyncRoutes(asyncRoutes, payload.roles) state.routes = constantRoutes.concat(state.addRoutes) } } export default { namespaced: true, state, mutations }