4
0
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
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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