UNPKG

press-ui

Version:

简单、易用的跨端组件库,兼容 Vue2 和 Vue3,同时支持 uni-app和普通 Vue 项目

59 lines (48 loc) 1.22 kB
import { getAreaData } from 'press-ui/press-area/computed'; const makeOption = ( text, value, children, ) => ({ text, value, children, }); export function fetchCascaderAreaData() { return new Promise((resolve, reject) => { getAreaData().then((res) => { const result = parseData(res); resolve(result); }) .catch((err) => { reject(err); }); }); } function parseData(areaList) { const { city_list: city, county_list: county, province_list: province, } = areaList; const provinceMap = new Map(); Object.keys(province).forEach((code) => { provinceMap.set(code.slice(0, 2), makeOption(province[code], code, [])); }); const cityMap = new Map(); Object.keys(city).forEach((code) => { const option = makeOption(city[code], code, []); cityMap.set(code.slice(0, 4), option); const province = provinceMap.get(code.slice(0, 2)); if (province) { province.children.push(option); } }); Object.keys(county).forEach((code) => { const city = cityMap.get(code.slice(0, 4)); if (city) { city.children.push(makeOption(county[code], code)); } }); return Array.from(provinceMap.values()); }