|  |  |  | 
|---|
|  |  |  | import { AreaType } from '@12333/constants'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export interface AreaTreeNode extends API.AreaDto { | 
|---|
|  |  |  | children?: AreaTreeNode[]; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export function formatAreaListToTree( | 
|---|
|  |  |  | areaDataList: API.AreaDto[], | 
|---|
|  |  |  | parentId: number, | 
|---|
|  |  |  | areaDataList: API.AreaTreeNode[], | 
|---|
|  |  |  | parentId = null, | 
|---|
|  |  |  | maxLayer = AreaType.Area | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | const treeNodeList: API.AreaTreeNode[] = []; | 
|---|
|  |  |  | if (areaDataList.length > 0) { | 
|---|
|  |  |  | areaDataList.forEach((areaData) => { | 
|---|
|  |  |  | const areaTreeNode: API.AreaTreeNode = { ...areaData }; | 
|---|
|  |  |  | if (areaData.parentId === parentId && areaData.layer <= maxLayer) { | 
|---|
|  |  |  | if (areaData.parentCode === parentId && areaData.layer <= maxLayer) { | 
|---|
|  |  |  | const children = formatAreaListToTree(areaDataList, areaData.areaCode, maxLayer); | 
|---|
|  |  |  | areaTreeNode.children = children; | 
|---|
|  |  |  | if (children.length > 0) { | 
|---|
|  |  |  | areaTreeNode.children = children; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | treeNodeList.push(areaTreeNode); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|