33 lines
1016 B
TypeScript
33 lines
1016 B
TypeScript
|
|
import { componentMap } from "./routeMap";
|
|
/**
|
|
* 组装函数:将后端原始嵌套树重组为前端要求的骨架结构
|
|
* @param backendTree 后端返回的原始数据 (包含 backend, business 等顶层节点的树)
|
|
*/
|
|
export const transformBackendTree = (backendTree: any[]): any[] => {
|
|
if (!backendTree || !Array.isArray(backendTree)) return [];
|
|
|
|
// 排序操作
|
|
const sortedTree = [...backendTree].sort((a, b) => {
|
|
const sortA = a.sort ?? 999; // 兜底值,防止没有 sort 字段
|
|
const sortB = b.sort ?? 999;
|
|
return sortA - sortB;
|
|
});
|
|
return sortedTree.map(item => {
|
|
// 2. 构造当前节点
|
|
const newNode: any = {
|
|
...item,
|
|
code: componentMap[item.code],
|
|
originalCode: item.code, // 保留一份原始 code 备用
|
|
};
|
|
|
|
// 3. 递归处理 children
|
|
if (item.children && item.children.length > 0) {
|
|
newNode.children = transformBackendTree(item.children);
|
|
} else {
|
|
newNode.children = null;
|
|
}
|
|
|
|
return newNode;
|
|
});
|
|
}; |