|
|
@@ -11,7 +11,6 @@ export class AreaService {
|
|
|
async getAreaTree(): Promise<AreaEntity[]> {
|
|
|
const areas = await this.areaRepository.find({
|
|
|
where: { isDeleted: 0 },
|
|
|
- relations: ['children'],
|
|
|
order: {
|
|
|
level: 'ASC',
|
|
|
name: 'ASC'
|
|
|
@@ -88,19 +87,22 @@ export class AreaService {
|
|
|
const areaMap = new Map<number, AreaEntity>();
|
|
|
const tree: AreaEntity[] = [];
|
|
|
|
|
|
- // 创建映射
|
|
|
+ // 创建映射并初始化children数组
|
|
|
areas.forEach(area => {
|
|
|
- areaMap.set(area.id, area);
|
|
|
+ const node = new AreaEntity({ ...area });
|
|
|
+ node.children = [];
|
|
|
+ areaMap.set(area.id, node);
|
|
|
});
|
|
|
|
|
|
- // 构建树
|
|
|
+ // 构建树形结构
|
|
|
areas.forEach(area => {
|
|
|
+ const node = areaMap.get(area.id)!;
|
|
|
if (area.parentId === null || area.parentId === 0) {
|
|
|
- tree.push(area);
|
|
|
+ tree.push(node);
|
|
|
} else {
|
|
|
const parent = areaMap.get(area.parentId);
|
|
|
if (parent && parent.children) {
|
|
|
- parent.children.push(area);
|
|
|
+ parent.children.push(node);
|
|
|
}
|
|
|
}
|
|
|
});
|