/**
|
* ChinaLocations For Normal
|
* @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,
|
area: children1[code2].area, // 电话区码
|
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 (!code || !tempLocationData[code]) {
|
address.push('');
|
tempLocationData = [];
|
} else {
|
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 (!code || !tempLocationData[code]) {
|
address.push('');
|
tempLocationData = [];
|
} else {
|
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;
|
},
|
// 电话区码
|
getRegionsArea(regions) {
|
if (typeof regions === 'string') {
|
regions = regions.split(',');
|
}
|
if (!regions || regions.length === 0 || !regions[0]) {
|
return '';
|
}
|
let area = '';
|
// 省
|
for (let provinceCode in ChinaLocationData) {
|
if (ChinaLocationData.hasOwnProperty(provinceCode)) {
|
if (provinceCode === regions[0]) {
|
// 市
|
const provinceChildren = ChinaLocationData[provinceCode].children;
|
for (let cityCode in provinceChildren) {
|
if (provinceChildren.hasOwnProperty(cityCode)) {
|
if (cityCode === regions[1]) {
|
area = provinceChildren[cityCode].area;
|
break;
|
}
|
}
|
}
|
break;
|
}
|
}
|
}
|
return area;
|
},
|
};
|