This commit is contained in:
2021-09-13 14:56:28 +08:00
commit ac0d6e9083
777 changed files with 90286 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
import { dynamicRoutes, constantRoutes } from '@/router'
import { getListItems } from '@/utils/tree'
/**
* Use meta.role to determine if the current user has permission
* @param roles
* @param route
*/
function hasPermission(menuList, route) {
// if (route.meta && route.meta.roles) {
// return roles.some(role => route.meta.roles.includes(role))
// } else {
// return true
// }
if (route.hidden) {
return true
}
return menuList.some(m => route.path === m.h)
}
/**
* Filter asynchronous routing tables by recursion
* @param routes asyncRoutes
* @param menuList
*/
export function filterAsyncRoutes(routes, menuList) {
const res = []
routes.forEach(route => {
const tmp = { ...route }
if (hasPermission(menuList, tmp)) {
if (tmp.children) {
tmp.children = filterAsyncRoutes(tmp.children, menuList)
}
res.push(tmp)
}
})
return res
}
const state = {
routes: [],
addRoutes: []
}
const mutations = {
SET_ROUTES: (state, routes) => {
state.addRoutes = routes
state.routes = constantRoutes.concat(routes)
}
}
const actions = {
generateRoutes({ commit }, menus) {
return new Promise(resolve => {
let accessedRoutes
console.log(menus)
if (!menus) {
accessedRoutes = []
} else {
const menuList = []
getListItems(menus, node => menuList.push(node))
console.log(menuList)
console.log(dynamicRoutes)
accessedRoutes = filterAsyncRoutes(dynamicRoutes, menuList)
console.log(accessedRoutes)
}
commit('SET_ROUTES', accessedRoutes)
resolve(accessedRoutes)
})
}
}
export default {
namespaced: true,
state,
mutations,
actions
}