k94314517
2024-08-01 9d3e12b88c3b5556a9b186e7afcc813236cc126a
wechat_jiaxuan/components/areaSel/areaSel.js
@@ -1,3 +1,4 @@
import { 
  getArea
} from '../../api/index'
@@ -15,10 +16,12 @@
          // observer监听value的变化,如果有值则调用setLabel方法设置选择器的label
          observer(selectedValues) {
              if (selectedValues && selectedValues.length) {
                  this.resetValus(selectedValues)
                  console.log("--------------------",this.data.value)
                  this.setLabel();
              }
          }
      }
      }
  },
  data: {
      // label为选择器的显示值
@@ -32,15 +35,16 @@
  },
  // attached生命周期函数,在组件实例进入页面节点树时执行
  attached() {
    this.initData()
    this.initData()
  },
  methods: {
    // wx.setStorageSync('addressList', tl)    
    initData(){
      let list = wx.getStorageSync('addressList')
    let list = wx.getStorageSync('addressList')
    if(list && list.length){ 
      this.setData({addressList: list})
      this.resetValus(list)
      this.setLabel();
      if (!this.data.value.length) {
          this.initRange();
@@ -88,13 +92,58 @@
        }
        wx.setStorageSync('addressList', tl)
        this.setData({addressList: tl})
        this.resetValus()
        this.setLabel();
        if (!this.data.value.length) {
            this.initRange();
        }
        console.log(this.data.addressList)
        }
      })
    }
    },
    resetValus(selectedValues){
      selectedValues = selectedValues || this.data.value
      let temVal = []
      let tlable =''
      if (selectedValues.length == 3) {
         var v1  = selectedValues[0]
         var v2  = selectedValues[1]
         var v3= selectedValues[2]
        var t1,t2,t3;
        this.data.addressList.forEach(item =>{
          if(v1 && v1.length ==6
            &&v2 && v2.length ==6
            &&v3  && v3.length ==6){
              if(item.value.indexOf(v1) == 0){
                    t1 = item.value
                    if(item.children){
                      item.children.forEach(item2 =>{
                        if(item2.value.indexOf(v2) == 0){
                            if(item2.children){
                              item2.children.forEach(item3 =>{
                                if(item3.value.indexOf(v3) == 0){
                                    tlable = item.label +"-"+item2.label+'-'+item3.label
                                    t1 = item.value
                                    t2 = item2.value
                                    t3 = item3.value
                                    temVal = [t1,t2,t3]
                                    // this.value = temVal
                                    // this.data.label=tlable
                                    this.triggerEvent("change", {
                                        value: temVal,
                                        label:tlable
                                    });
                                    this.setData({value:temVal,label:tlable})
                                    console.log("--------------------",this.data.value)
                                }
                              })
                            }
                        }
                      })
                    }
              }
            }
        })
      }
    },
      // getAddressItem方法用于将地址信息转换为选择器可用的格式
      getAddressItem(data) {
@@ -108,7 +157,7 @@
          return list.map((v) => this.getAddressItem(v));
      },
      // getAddressByCode方法用于根据value值获取地址信息及其在数组中的下标
      getAddressByCode(list = [], value) {
      getAddressByCode(list = [], value) {
          let index = list.findIndex(item => item.value === value);
          return [index, list[index] || {}];
      },
@@ -144,9 +193,7 @@
          });
          this.setData({
            label:label
          });
          console.log("label1", label)
          console.log("label",this.data.label)
          });
      },
      // columnChange方法为选择器的columnchange事件处理函数,用于设置range和pickerValue
      columnChange(e) {
@@ -182,7 +229,7 @@
      setLabel() {
          let addressList = this.data.addressList;
          if (addressList && addressList.length) {
              const [v1, v2, v3] = this.data.value;
              const [v1, v2, v3] = this.data.value;
              const [s1, {
                  label: t1,
                  children: l1
@@ -195,6 +242,7 @@
                  label: t3
              }] = this.getAddressByCode(l2, v3);
              const label = [t1, t2, t3].filter(v => v).join('-');
              const pickerValue = [s1, s2, s3];
              const range = this.openChildren(addressList, [s1, s2, s3]);
              if (label.length) {
@@ -204,9 +252,7 @@
                      pickerValue
                  });
              }
          } else {
          }
          }
      },
      // initRange方法用于初始化range
      initRange() {