let html = '' $.ajax({ url: 'https://opsiteapi-cn.oneplus.com/api/public/v1/store/getDistrictsByCode?code=cn', type: 'GET', success: function(res) { let provinces = res.data.districts.filter(function(v,k){ return v.pid === 7757 }) let temp = [], arr = [] provinces.forEach(function(province){ let obj = { id: province.id, name: province.name, districts: [] } res.data.districts.forEach(function(district){ if(province.id === district.pid){ obj.districts.push(district) } }) temp.push(obj) }) let provinceLetterSort = [ { letter: 'A', provincesList: ['澳门', '安徽'] }, { letter: 'B', provincesList: ['北京'] }, { letter: 'C', provincesList: ['重庆'] }, { letter: 'F', provincesList: ['福建'] }, { letter: 'G', provincesList: ['甘肃', '广东', '广西', '贵州'] }, { letter: 'H', provincesList: ['海南', '黑龙江', '河北', '河南', '湖北', '湖南'] }, { letter: 'J', provincesList: ['吉林', '江苏', '江西'] }, { letter: 'L', provincesList: ['辽宁'] }, { letter: 'N', provincesList: ['内蒙古', '宁夏'] }, { letter: 'Q', provincesList: ['青海'] }, { letter: 'S', provincesList: ['山东', '山西', '陕西', '上海', '四川'] }, { letter: 'T', provincesList: ['台湾', '天津'] }, { letter: 'X', provincesList: ['西藏', '新疆', '香港'] }, { letter: 'Y', provincesList: ['云南'] }, { letter: 'Z', provincesList: ['浙江'] } ] provinceLetterSort.forEach(function(province){ let flag = province.provincesList.length > 1 province.provincesList.forEach(function(p) { temp.forEach(function(v){ if(v.name.includes(p)){ if(flag || province.provincesList.length === 1){ v.letter = province.letter } flag = false arr.push(v) } }) }) }) arr.forEach(function(k){ let li = '' k.districts.forEach(function(v){ li += `
  • ${v.name}
  • ` }) let svg = k.districts.length > 1 ? '' : '' html += `
  • ${k.letter ? k.letter : ''} ${k.name}${svg}
  • ` }) $('#address-province').html(html) $('#offline-address-search-input').on('focus', function(){ $('.province-city-list').show() $(this).val('') $('#jd-offline .icon-font-close-warp').hide() $('#jd-offline .auto-list-content').hide() $('.offline-address-search').addClass('show-result') }) $('body').on('click', function(e){ if($(e.target).closest('.offline-address-search').length){ return } $('.province-city-list').hide() $('.offline-address-search').removeClass('show-result') }) $('#address-province').on('click', '.address-province-name', function(){ $(this).parent().siblings().removeClass('active') $(this).parent().toggleClass('active') if($(this).hasClass('no-children')){ let obj = { type: 2, data: { name: $(this).data('name'), id: $(this).data('id') } } sessionStorage.setItem('MAP_STORAGE', JSON.stringify(obj)) location.href = 'retail/map' }else{ $(this).siblings('.address-province-city').slideToggle() } }) $('.offline-banner-view').on('click', function(){ location.href = 'retail/map' }) $('#address-province').on('click', '.address-province-city li', function(){ let obj = { type: 2, data: { name: $(this).data('name'), id: $(this).data('id') } } sessionStorage.setItem('MAP_STORAGE', JSON.stringify(obj)) location.href = 'retail/map' }) $('#offline-address-search-input').on('keyup', function(){ if($(this).val().length === 0) { $('#jd-offline .auto-list-content').hide() $('#jd-offline .icon-font-close-warp').hide() return } $('#jd-offline .auto-list-content').show() $('#jd-offline .icon-font-close-warp').show() let html = '' addressSearch($(this).val(), (res) => { let data = formattersearchResult(res.tips) if(data.length === 0){ $('#no-data').html(`

    没有找到相应的结果

    `) $('#address-detail').html('') return } data.forEach(function(v){ html += `
  • ${v.name}

    ${v.address}

  • ` }) $('#no-data').html('') $('#address-detail').html(html) $('#address-detail').on('click', 'li', function(){ let obj = { type: 4, data: $(this).data('obj') } sessionStorage.setItem('MAP_STORAGE', JSON.stringify(obj)) location.href = 'retail/map' }) }) }) $('#jd-offline .icon-font-close-warp').on('click', function(){ $('#offline-address-search-input').val('') $('#jd-offline .auto-list-content').hide() $('#jd-offline .icon-font-close-warp').hide() }) }, error: function(error) { console.log('Error: ' + error); } }) function formattersearchResult(data = []) { const result = [] data.forEach(item => { // typecode 参考 POI分类编码 https://lbs.amap.com/api/webservice/download switch (item.typecode) { case '190102': // 190102 省级地名 item.isProvince = true item.address = '' break case '190103': // 190103 直辖市级地名 case '190104': // 190104 地市级地名 item.isCity = true item.address = '' result.push(item) break default: if (Array.isArray(item.address)) { item.address = '' } if (item.location && item.adcode) { // 具体位置 result.push(item) } break } }) return result }