省市區選擇器的做法


這里是界面
<view class='value'>
    <text class='area_text' bindtap='areaOnShow'>{{areaText}}</text>   // 點擊是為了打開下面省市區組件的彈出框
</view>


// 省市區組件彈出框
<van-popup show="{{ popupShow }}" position="bottom" bind:close="areaOnClose"> <van-area area-list="{{ areaList }}" bind:confirm="changeArea" bind:cancel="areaOnClose"/> </van-popup>

 

data:{
    areaText: '選擇省/市/區',  //這里是placehold的樣式
    popupShow: false,  // 這里是開關省市區的組件
    areaList: '',        
    city_id: null, //
    district_id: null, //
    province_id: null, //
}

// 數據 data的 areaList

 

  //獲取省市區
  getAreaList: function () {    =============先從接口獲取省市區
    const that = this;
    var postData = {};
    let header = getApp().header;
    let datainfo = requestSign.requestSign(postData);
    header.sign = datainfo;
    wx.request({
      url: api.get_area,
      data: postData,
      header: header,
      method: 'POST',
      dataType: 'json',
      responseType: 'text',
      success: (res) => {
        console.log(res);
        let areaList = {            ================================data上的areaList給用戶看的
          province_list: res.data.data.province_list,
          city_list: res.data.data.city_list,
          county_list: res.data.data.county_list,
        }
        let areaIdList = {      ================================選擇的地址去匹配省市區的id
          province_id_list: res.data.data.province_id_list,
          city_id_list: res.data.data.city_id_list,
          county_id_list: res.data.data.county_id_list,
        }
        that.setData({
          areaList: areaList,
          areaIdList: areaIdList
        })
      },
      fail: (res) => {},
    })
  },
 1   //獲取選擇的省市區
 2   changeArea: function (event) {
 3     const that = this;
 4     console.log(event);
 5     let areaArray = event.detail.values;
 6     let area = [];
 7     let provinceCode = '';
 8     let cityCode = '';
 9     let countyCode = '';
10     let provinceId = '';
11     let cityId = '';
12     let countyId = '';
13     // 遍歷這個數組
14     for (var i = 0; i < areaArray.length; i++) {
15       area.push(areaArray[i].name); // 把每一項的省市區的name去出來
16       // 把選擇的省市區的code取出來
17       provinceCode = areaArray[0].code;
18       cityCode = areaArray[1].code;
19       countyCode = areaArray[2].code;
20     }
21     //  這個areaIdList是接口里獲取的最大的areaIDList
22     let areaIdList = that.data.areaIdList;
23     //  分別把省市區遍歷一次
24     for (var key in areaIdList.province_id_list) {
25       // 遍歷如果省市區的code 和 用戶選擇的code相等了 就取出當前的id
26       if (key == provinceCode) {
27         provinceId = areaIdList.province_id_list[key];
28       }
29     }
30     for (var key in areaIdList.city_id_list) {
31       if (key == cityCode) {
32         cityId = areaIdList.city_id_list[key];
33       }
34     }
35     for (var key in areaIdList.county_id_list) {
36       if (key == countyCode) {
37         countyId = areaIdList.county_id_list[key];
38       }
39     }
40     let areaText = area.join("/");
41     that.setData({
42       areaText: areaText,
43       province_id: provinceId,
44       city_id: cityId,
45       district_id: countyId
46     })
47     that.areaOnClose();
48   },

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM