import twData from './taiwan.json' import { formatCity } from './filterCity' export default { /** * 按省的城市编码排序 */ orderByCityCode(a, b) { return parseInt(a.value) - parseInt(b.value) }, /** * 自定义app数据格式 * @param {Array} addressList 高德地图api返回的城市数据 * @param {boolean} noFilter 是否过滤省市区 * @param {boolean} allProvice 是否显示全省 * @param {boolean} allCity 是否显示全市 * @param {boolean} allCountry 是否显示全国 */ buildAppJSONData({ addressList, noFilter = false, allProvince = false, allCity = false, allCountry = false, }) { let array = [] get(addressList, array, noFilter) array.forEach(item => { if (item.value === '710000') { if (item.children.length === 0) { item.children = twData } } }) array.sort(this.orderByCityCode) // 加入台湾区域,并按省份城市代码排序 const specialCitys = ['北京', '上海', '天津', '重庆', '香港', '澳门'] if (array.length > 0) { array.forEach(item => { if (allCity) { item.children.forEach(city => { city.children.unshift({ value: '0', label: '全市', children: [] }) }) } if (allProvince) { if (specialCitys.indexOf(item.label) === -1) { item.children.unshift({ value: '0', label: '全省', children: [ {value: '0', label: '全省', children: []} ] }) } } }) if (allCountry) { array.unshift({ value: '0', label: '全国', children: [ {value: '0', label: '全国', children: [ {value: '0', label: '全国', children: []} ]} ] }) } } return array function get(districts, children, noFilter) { districts.forEach((item, index) => { children.push({ value: noFilter === true ? item.adcode : item.name, label: noFilter === true ? formatCity(item.name) : item.name }) if (item.districts.length != 0) { children[children.length - 1].children = [] if (item.adcode === item.districts[0].adcode) { children[children.length - 1].children = [ { value: noFilter === true ? item.adcode : item.name, label: noFilter === true ? formatCity(item.name) : item.name } ] } else { get(item.districts, children[children.length - 1].children, noFilter) } } else { // 特别处理香港,市区统一 if (parseInt(item.adcode) > 810000 && parseInt(item.adcode) < 820000) { children[children.length - 1].children = [ { value: noFilter === true ? item.adcode : item.name, label: noFilter === true ? formatCity(item.name) : item.name } ] } // 特别处理澳门,市区统一 if (parseInt(item.adcode) > 820000 && parseInt(item.adcode) < 830000) { children[children.length - 1].children = [ { value: noFilter === true ? item.adcode : item.name, label: noFilter === true ? formatCity(item.name) : item.name } ] } // 特别处理台湾 if (parseInt(item.adcode) === 710000) { children[children.length - 1].children = [] } } }) } }, getGaoDeData(key) { if (key) { return new Promise((resolve, reject) => { uni.request({ method: 'get', url: `https://restapi.amap.com/v3/config/district?subdistrict=3&key=${key}`, success: res => { if (res.statusCode === 200) { // 构造匹配app,otms框架的城市JSON文件 // const data = this.buildAppJSONData(, false, false) resolve(res.data.districts[0].districts) } else { reject(res) } }, fail: res => { reject(res) } }) }) } else { uni.showModal({ title: '提示', content: '请输入高德key' }) } } }