| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /*
- * @Author: your name
- * @Date: 2024-05-17 16:09:03
- * @LastEditTime: 2024-05-18 18:40:13
- * @LastEditors: bogon
- * @Description: In User Settings Edit
- * @FilePath: /performance-test/src/utils/getAuth.js
- */
- import { orgList } from "@/views/home/components/mockData";
- //返回可动态添加的路由
- export const getAuthRouterFn = (list) => {
- // 将list 转成一维数组,按钮级别权限拿到 返回为[]格式
- const { result, anthBtnList } = flattenTree(list);
- const arr = filterTreeByPermissions(result, orgList);
- return { authRouterList: arr, anthBtnList };
- };
- const flattenTree = (tree) => {
- let result = [];
- let anthBtnList = [];
- const flattenRecursive = (nodes) => {
- nodes.forEach((node) => {
- result.push(node);
- if (node.children && node.children.length > 0) {
- flattenRecursive(node.children);
- }
- if (node.permissionDepth === 2) {
- anthBtnList.push(node);
- }
- });
- };
- flattenRecursive(tree);
- return { result, anthBtnList };
- };
- const filterTreeByPermissions = (permissions, tree) => {
- const permissionSet = new Set(permissions.map((item) => item.permissionName));
- const filterTreeRecursive = (nodes) => {
- return nodes.reduce((filteredNodes, node) => {
- const newNode = { ...node };
- if (newNode.children && newNode.children.length > 0) {
- newNode.children = filterTreeRecursive(newNode.children);
- }
- if (
- permissionSet.has(newNode.name) ||
- (newNode.children && newNode.children.length > 0)
- ) {
- filteredNodes.push(newNode);
- }
- return filteredNodes;
- }, []);
- };
- return filterTreeRecursive(tree);
- };
|