Vant_根据已有地址获取code
arealist
在AddressEdit我们已经引入 :area-list="areaList"
这是arealist:
city_list:市列表
province_list:省列表
county_list:区列表
获取默认地址省市区的code
// 获取默认的省市区
this.defaultProvince = this.AddressInfo.province;//山东省
this.defaultCity = this.AddressInfo.city;//德州市
this.defaultArea = this.AddressInfo.country;//德城区
// 省 resultProvince
let resultProvince = Object.entries(areaList.province_list);
// console.log(resultProvince)
resultProvince.forEach((item) => {
if (item[1] == this.defaultProvince) {
// console.log(item[0]);
// console.log(item[1]);
this.result.provinceCode = item[0];
this.result.province = item[1];
}
});
// 市 resultCity
let resultCity = Object.entries(areaList.city_list);
resultCity.forEach((item) => {
if (item[1] == this.defaultCity) {
// console.log(item[0]);
// console.log(item[1]);
this.result.cityCode = item[0];
this.result.city = item[1];
}
});
// 区 resultArea
let resultArea = Object.entries(areaList.county_list);
resultArea.forEach((item) => {
if (item[1] == this.defaultArea) {
// console.log(item[0]);
// console.log(item[1]);
this.result.areaCode = item[0];
this.result.area = item[1];
}
打印resultProvince:
resultProvince中的console.log(item[0]);console.log(item[1]);
打印结果
这里我们就获取到了省的code,市和区的获取方法也如上。
最后省的code放到了provinceCode
,
市的code放到了cityCode
区的code放到了areaCode
更改
---------------------------2023.8.24更新---------------------------------------
最近把之前的项目重新跑了一遍,发现我当初的获取code存在问题现在进行更改:
问题:当某省某个区的区名与其他省的某个区名重复的时候,获取的code有可能会存在错误
例子:北京市北京市朝阳区与吉林省长春市朝阳区
- 北京市北京市朝阳区的areaCode为:
- 吉林省长春市朝阳区areaCode为:
但是当我的默认地址设置为北京市北京市朝阳区时,我获取的code却是:
解决方法:
// 获取默认的省市区
this.defaultProvince = this.AddressInfo.province;
this.defaultCity = this.AddressInfo.city;
this.defaultArea = this.AddressInfo.country;
// 省 resultProvince
let resultProvince = Object.entries(areaList.province_list);
// console.log(resultProvince)
resultProvince.forEach((item) => {
if (item[1] == this.defaultProvince) {
this.result.provinceCode = item[0];
this.result.province = item[1];
}
});
// 将获取的省code转换成数组
let arrProvince = this.result.provinceCode.split("");
// console.log(arrProvince);
// 市 resultCity
let resultCity = Object.entries(areaList.city_list);
resultCity.forEach((item) => {
let arrCity = item[0].split("");
// console.log(arrCity);
if (
item[1] == this.defaultCity &&
arrProvince[0] == arrCity[0] &&
arrProvince[0] == arrCity[0]
) {
this.result.cityCode = item[0];
this.result.city = item[1];
// console.log(this.result);
}
});
// console.log(this.result);
let arrCity1 = this.result.cityCode.split("");
// console.log(arrCity1);
// 区 resultArea
let resultArea = Object.entries(areaList.county_list);
// console.log(resultArea);
// console.log(this.defaultArea);
resultArea.forEach((item) => {
let arrArea = item[0].split("");
if (
item[1] == this.defaultArea &&
arrArea[0] == arrCity1[0] &&
arrArea[1] == arrCity1[1] &&
arrArea[2] == arrCity1[2] &&
arrArea[3] == arrCity1[3]
) {
this.result.areaCode = item[0];
this.result.area = item[1];
console.log(item);
}
});
// console.log(this.result);
// 把获取到的省市区以及对应的code放到result中
// 拿取默认地址的code 在组件上设置默认的省市区
// this.AddressInfo.areaCode = this.result.provinceCode;
// this.AddressInfo.areaCode = this.result.cityCode;
this.AddressInfo.areaCode = this.result.areaCode;