/**
* @author chuzhixin 1204505056@qq.com (不想保留author可删除)
* @description all模式渲染后端返回路由
* @param constantRoutes
* @returns {*}
*/
export function convertRouter(asyncRoutes) {
return asyncRoutes.map((route) => {
if (route.component) {
if (route.component === 'Layout') {
route.component = (resolve) => require(['@/layouts'], resolve)
} else if (route.component === 'EmptyLayout') {
route.component = (resolve) =>
require(['@/layouts/EmptyLayout'], resolve)
} else {
const index = route.component.indexOf('views')
const path =
index > 0 ? route.component.slice(index) : `views/${route.component}`
route.component = (resolve) => require([`@/${path}`], resolve)
}
}
if (route.children && route.children.length)
route.children = convertRouter(route.children)
if (route.children && route.children.length === 0) delete route.children
return route
})
}
/**
* @author chuzhixin 1204505056@qq.com (不想保留author可删除)
* @description 判断当前路由是否包含权限
* @param permissions
* @param route
* @returns {boolean|*}
*/
function hasPermission(permissions, route) {
if (route.meta && route.meta.permissions) {
return permissions.some((role) => route.meta.permissions.includes(role))
} else {
return true
}
}
/**
* @author chuzhixin 1204505056@qq.com (不想保留author可删除)
* @description intelligence模式根据permissions数组拦截路由
* @param routes
* @param permissions
* @returns {[]}
*/
export function filterAsyncRoutes(routes, permissions) {
const finallyRoutes = []
routes.forEach((route) => {
const item = { ...route }
if (hasPermission(permissions, item)) {
if (item.children) {
item.children = filterAsyncRoutes(item.children, permissions)
}
finallyRoutes.push(item)
}
})
return finallyRoutes
}