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;
|
});
|
}
|
|
function hasPermission(permissions, route) {
|
if (route.meta && route.meta.permissions) {
|
return permissions.some((role) => route.meta.permissions.includes(role));
|
} else {
|
return true;
|
}
|
}
|
|
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;
|
}
|