微信小程序 自定义(省市县)数据

index.html

 

<view class="box" wx:if="{{boxShow}}">

    <!-- 阴影 -->

    <view class="black" bindtap="hidebox"></view>

    <!-- 内容 -->

    <view class="nr">

      <view class="item">

        <text bindtap="hidebox">取消</text>

        <text bindtap="confirm">确认</text>

      </view>

      <view style="display:flex;width: 100%;height: 400rpx;">

          <picker-view indicator-style="height: 200rpx;" style="width: 100%;height: 400rpx;text-align: center" value="{{pIndex}}" bindchange="changeProvince2">

              <picker-view-column>

                  <view wx:for="{{placeArray}}" wx:key="name" style="line-height: 68rpx">{{item.label}}</view>

              </picker-view-column>

          </picker-view>

          <picker-view indicator-style="height: 200rpx;" style="width: 100%;height: 400rpx;text-align: center" value="{{cIndex}}" bindchange="changeCity2">

              <picker-view-column>

                  <view wx:for="{{placeArray[pIndex].children}}" wx:key="name" style="line-height: 50rpx">{{item.label}}</view>

              </picker-view-column>

          </picker-view>

          <picker-view indicator-style="height: 200rpx;" style="width: 100%;height: 400rpx;text-align: center" value="{{aIndex}}" bindchange="changeArea2">

              <picker-view-column wx:if="{{placeArray[pIndex].children[cIndex].children.length > 0}}">

                  <view wx:for="{{placeArray[pIndex].children[cIndex].children}}" wx:key="*this" style="line-height: 50rpx">{{item.label}}</view>

              </picker-view-column>

          </picker-view>

      </view>

    </view>

  </view>

index.css

.index{
  width: 100%;
  height: 100vh;
  overflow: hidden;
  position: relative;
  padding-top: 30rpx;
  box-sizing: border-box;
}
.input{
  width: 680rpx;
  height: 80rpx;
  line-height: 80rpx;
  border: 1px solid #999;
  border-radius: 10rpx;
  margin: auto;
  padding: 0 32rpx;
  box-sizing: border-box;
}
.box{
  position: absolute;
  left: 0;
  bottom: 0;
  overflow: hidden;
  width: 100%;
  height: 100vh;
  z-index: 8;
}
.black{
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100vh;
  background: rgba(0, 0, 0, .5);
  z-index: 10;
}
.nr{
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 500rpx;
  z-index: 12;
  background: #FFF;
}
.item{
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  height: 100rpx;
  line-height: 100rpx;
  padding: 0 20rpx;
  box-sizing: border-box;
  border-bottom: 1px solid #EEE;
}

index.js

newArr: [],

    multiIndex: [0,0],

    multiIds: [],

    boxShow: false,

    province:'',

    pVal: '',

    pIndex: 0,

    city:'',

    cVal: '',

    cIndex: 0,

    area: '',

    aVal: '',

    aIndex: 0, 

    placeArray: [] //数据

// 确认按钮

  confirm: function(){

    if(this.data.placeArray[this.data.pIndex].children[this.data.cIndex].children.length> 0){

      this.setData({

        boxShow: false,

        province: this.data.placeArray[this.data.pIndex].label,

        pVal: this.data.placeArray[this.data.pIndex].value,

        city: this.data.placeArray[this.data.pIndex].children[this.data.cIndex].label,

        cVal: this.data.placeArray[this.data.pIndex].children[this.data.cIndex].value,

        area: this.data.placeArray[this.data.pIndex].children[this.data.cIndex].children[this.data.aIndex].label,

        aVal: this.data.placeArray[this.data.pIndex].children[this.data.cIndex].children[this.data.aIndex].value

      })

    }else{

      this.setData({

        boxShow: false,

        province: this.data.placeArray[this.data.pIndex].label,

        pVal: this.data.placeArray[this.data.pIndex].value,

        city: this.data.placeArray[this.data.pIndex].children[this.data.cIndex].label,

        cVal: this.data.placeArray[this.data.pIndex].children[this.data.cIndex].value

      })

    }

  },

  //1111

  changeProvince2(e){

    const val = e.detail.value

    if(this.data.placeArray[val].children[0].children.length > 0){

      this.setData({

        pIndex: val,

        cIndex: 0,

        aIndex: 0,

        province: this.data.placeArray[val].label,

        pVal: this.data.placeArray[val].value,

        city: this.data.placeArray[val].children[0].label,

        cVal:  this.data.placeArray[val].children[0].value,

        area: this.data.placeArray[val].children[0].children[0].label,

        aVal: this.data.placeArray[val].children[0].children[0].value

      })

    }else{

      this.setData({

        pIndex: val,

        cIndex: 0,

        aIndex: 0,

        province: this.data.placeArray[val].label,

        pVal: this.data.placeArray[val].value,

        city: this.data.placeArray[val].children[0].label,

        cVal:  this.data.placeArray[val].children[0].value,

        area: '',

        aVal: ''

      })

    }

  },

 //222222

 changeCity2: function(e){

  const val = e.detail.value

  if(this.data.placeArray[this.data.pIndex].children[val].children.length > 0){

    this.setData({

      cIndex: val,

      aIndex: 0,

      city: this.data.placeArray[this.data.pIndex].children[val].label,

      cVal: this.data.placeArray[this.data.pIndex].children[val].value,

      area: this.data.placeArray[this.data.pIndex].children[val].children[0].label,

      aVal: this.data.placeArray[this.data.pIndex].children[val].children[0].value

    })

  }else{

    this.setData({

      cIndex: val,

      aIndex: 0,

      city: this.data.placeArray[this.data.pIndex].children[val].label,

      cVal: this.data.placeArray[this.data.pIndex].children[val].value,

      area: '',

      aVal: ''

    })

  }

},

//3333

changeArea2: function(e){

  const val = e.detail.value

  this.setData({

    aIndex: val,

    area: this.data.placeArray[this.data.pIndex].children[this.data.cIndex].children[val].label,

    aVal: this.data.placeArray[this.data.pIndex].children[this.data.cIndex].children[val].value

  })

},

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值