ebike-plus-ui/src/router/route-output.ts

30 lines
962 B
TypeScript
Raw Normal View History

2024-04-11 00:15:57 +08:00
import { dynamicRoutes } from "@/router/route";
2024-04-11 13:07:43 +08:00
import pinia from "@/store/index";
import { storeToRefs } from "pinia";
import { useUserInfoStore } from "@/store/user-info";
// import { useRoutesListStore } from "@/store/route-list";
2024-04-08 00:13:27 +08:00
export function initSetRouter() {
2024-04-11 00:15:57 +08:00
// 过滤后的结果
let filteredData = filterByRole(dynamicRoutes[0].children);
console.log("路由处理完", filteredData);
2024-04-08 00:13:27 +08:00
}
2024-04-11 00:15:57 +08:00
// 过滤路由树,返回有权限的树
export const filterByRole = (nodes: any) => {
return nodes.filter((item: any) => {
if (item.meta && item.meta.roles) {
if (!roleBase(item.meta.roles)) return false;
}
if (item.children) item.children = filterByRole(item.children);
return true;
});
};
// 校验角色权限
export const roleBase = (roles: Array<string>) => {
2024-04-11 13:07:43 +08:00
const store = useUserInfoStore(pinia);
const { account } = storeToRefs(store);
return account.value.roles.some((item: string) => roles.includes(item));
2024-04-11 00:15:57 +08:00
};