mirror of
https://gitee.com/chu1204505056/vue-admin-beautiful.git
synced 2025-04-26 19:06:35 +08:00
64 lines
1.9 KiB
Vue
64 lines
1.9 KiB
Vue
/**
|
||
* @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
|
||
}
|