import { get, cloneDeep } from 'lodash' import { AddressItemType, TreeItem } from '@/types' let stashAddressData: TreeItem[] = [] export const toTree = ( data: AddressItemType[] = [], parId: number ): TreeItem[] => { const list = cloneDeep(data) const len = list?.length function loop(parId: number) { const res = [] for (let i = 0; i < len; i++) { const item = list[i] if (item.parentId === Number(parId)) { item.children = loop(item.id) || [] res.push({ ...item, label: item.name, value: item.id }) } } return res } return loop(parId) as TreeItem[] } export const transformAddressOptions = (data: AddressItemType[]) => { stashAddressData = stashAddressData.length ? stashAddressData : get(toTree(data, 0), '0.children', []) return stashAddressData } export const addressNameMap = (list: AddressItemType[]) => { const obj: Record = {} list.forEach(item => { obj[item.id] = item.name }) return obj } //根据省市区名字获取对应的code export const getCodeByName = ( addrName: string, addrData: AddressItemType[] ): string => { for (const { id, name } of addrData) { if (name === addrName) { return String(id) } } return '' }