/**
|
* @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
|
}
|