/** * ChinaLocations * @author Tevin */ import ChinaLocationData from './ChinaLocationData.json'; const locationTree = []; Object.keys(ChinaLocationData).forEach((code1) => { const province = { label: ChinaLocationData[code1].name, value: code1, children: [], }; const children1 = ChinaLocationData[code1].children; Object.keys(children1).forEach((code2) => { const city = { label: children1[code2].name, value: code2, children: [], }; if (typeof children1[code2].children !== 'undefined') { const children2 = children1[code2].children; Object.keys(children2).forEach((code3) => { city.children.push({ label: children2[code3], value: code3, }); }); } province.children.push(city); }); locationTree.push(province); }); export default { onReady(callback) { callback(); }, getLocationTree() { return locationTree; }, // 获取省市区拼合文本 getRegionText(regions) { if (regions.length === 0) { return ''; } let address = ''; let tempLocationData = ChinaLocationData; regions.forEach((code) => { if (typeof tempLocationData[code].name === 'string') { address += tempLocationData[code].name; } else { address += tempLocationData[code]; } tempLocationData = tempLocationData[code].children; }); return address; }, // 省市区名称 getRegionNames(regions) { if (typeof regions === 'string') { regions = regions.split(','); } if (!regions || regions.length === 0 || !regions[0]) { return []; } let address = []; let tempLocationData = ChinaLocationData; regions.forEach((code) => { if (!tempLocationData[code]) { return; } if (typeof tempLocationData[code].name === 'string') { address.push(tempLocationData[code].name); } else { address.push(tempLocationData[code]); } tempLocationData = tempLocationData[code].children; }); return address; }, // 省市区文本转code getRegionCodes(regions) { if (typeof regions === 'string') { regions = regions.split(','); } if (!regions || regions.length === 0 || !regions[0]) { return ''; } const codes = []; // 省 for (let provinceCode in ChinaLocationData) { if (ChinaLocationData.hasOwnProperty(provinceCode)) { if (ChinaLocationData[provinceCode].name === regions[0]) { codes[0] = provinceCode; // 市 const provinceChildren = ChinaLocationData[provinceCode].children; for (let cityCode in provinceChildren) { if (provinceChildren.hasOwnProperty(cityCode)) { if (provinceChildren[cityCode].name === regions[1]) { codes[1] = cityCode; // 区 const areaChildren = provinceChildren[cityCode].children; for (let areaCode in areaChildren) { if (areaChildren.hasOwnProperty(areaCode)) { if (areaChildren[areaCode] === regions[2]) { codes[2] = areaCode; break; } } } break; } } } break; } } } return codes; }, };