vant ui AddressEdit 地址编辑组件初始化需要地址编码areaCode的处理方法
前言:
之前使用微信小程序、uniapp的省市区选择组件,初始数据都可以直接接收省市区名称的,诸如 let addr=['北京市','北京市','东城区'] ,所以,直接根据后端接口返回的省市区数据就能完成组件初始化。
但vant ui就偏不,只能接收areaCode,开发文档上说了,areaCode需要在点击省市区级联组件后获取,但是初始化的时候怎么点击组件呢?这不是妥妥的子项矛盾么?
八成是开发人员偷懒了,所以这个组件用着就不那么顺利了,需要我们自己把areaCode保存到数据库,并通过接口返回前端,或者前端根据vant提供的areaList 数据源进行匹配,自行提取areaCode了。
这里就贴下前端js提取areaCode的代码,希望能给有同样困扰的同学们有所帮助。
示例代码:
1 const areaList = { 2 province_list: { 3 110000: '北京市', 4 120000: '天津市', 5 }, 6 city_list: { 7 110100: '北京市', 8 120100: '天津市', 9 }, 10 county_list: { 11 110101: '东城区', 12 110102: '西城区', 13 // .... 14 }, 15 }; 16 17 let province = '北京市', 18 city = '北京市', 19 county = '东城区'; 20 21 function getFullAreaCode(areaList, province, city, county) { 22 let provinceCodePrefix = null; 23 let cityCodeFirstFour = null; 24 let fullAreaCode = null; 25 26 // 获取省份编码前 2 位 27 for (const code in areaList.province_list) { 28 if (areaList.province_list[code] === province) { 29 provinceCodePrefix = code.slice(0, 2); 30 break; 31 } 32 } 33 34 if (provinceCodePrefix) { 35 // 根据省份编码前 2 位匹配市区编码前 2 位,找到市区名称对应的市区编码,取前 4 位 36 for (const code in areaList.city_list) { 37 if (code.startsWith(provinceCodePrefix) && areaList.city_list[code] === city) { 38 cityCodeFirstFour = code.slice(0, 4); 39 break; 40 } 41 } 42 } 43 44 if (cityCodeFirstFour) { 45 // 根据市区编码前 4 位和地区名称匹配地区编码 46 for (const code in areaList.county_list) { 47 if (code.startsWith(cityCodeFirstFour) && areaList.county_list[code] === county) { 48 fullAreaCode = code; 49 break; 50 } 51 } 52 } 53 54 return fullAreaCode; 55 } 56 57 const result = getFullAreaCode(areaList, province, city, county); 58 console.log('完整地区编码:', result);
    个人原创博客,转载请注明来源地址:https://www.cnblogs.com/xyyt
                
            
        
浙公网安备 33010602011771号