| | |
| | | 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) { |