You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.0 KiB
38 lines
1.0 KiB
import {areaList} from '@vant/area-data'
|
|
import {freezeDeep} from "@/utils/common/compUtils";
|
|
|
|
// 扁平化的省市区数据
|
|
export const pcaa = freezeDeep(usePlatPcaaData())
|
|
|
|
/**
|
|
* 获取扁平化的省市区数据
|
|
*/
|
|
function usePlatPcaaData() {
|
|
const {city_list: city, county_list: county, province_list: province} = areaList;
|
|
const dataMap = new Map<string, Recordable>()
|
|
const flatData: Recordable = {'86': province}
|
|
// 省
|
|
Object.keys(province).forEach((code) => {
|
|
flatData[code] = {}
|
|
dataMap.set(code.slice(0, 2), flatData[code])
|
|
})
|
|
// 市区
|
|
Object.keys(city).forEach((code) => {
|
|
flatData[code] = {}
|
|
dataMap.set(code.slice(0, 4), flatData[code])
|
|
// 填充上一级
|
|
const getProvince = dataMap.get(code.slice(0, 2))
|
|
if (getProvince) {
|
|
getProvince[code] = city[code]
|
|
}
|
|
});
|
|
// 县
|
|
Object.keys(county).forEach((code) => {
|
|
// 填充上一级
|
|
const getCity = dataMap.get(code.slice(0, 4))
|
|
if (getCity) {
|
|
getCity[code] = county[code]
|
|
}
|
|
});
|
|
return flatData
|
|
} |