|  |  |  | 
|---|
|  |  |  | import { AreaType } from '@12333/constants'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export interface AreaTreeNode extends API.AreaInfo { | 
|---|
|  |  |  | children?: AreaTreeNode[]; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export function formatAreaListToTree( | 
|---|
|  |  |  | areaDataList: API.AreaInfo[], | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 
|---|
|  |  |  | return treeNodeList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export function flattenAreaTree(tree: API.AreaInfo[]) { | 
|---|
|  |  |  | let result = [] as API.AreaInfo[]; | 
|---|
|  |  |  | export function flattenAreaTree(tree: API.AreaDto[]) { | 
|---|
|  |  |  | let result = [] as API.AreaDto[]; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 递归函数,用于遍历子节点 | 
|---|
|  |  |  | function flatten(node: API.AreaInfo) { | 
|---|
|  |  |  | function flatten(node: API.AreaDto) { | 
|---|
|  |  |  | result.push(node); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (node.children && node.children.length > 0) { | 
|---|