| | |
| | | |
| | | import { |
| | | getArea |
| | | } from '../../api/index' |
| | |
| | | // observer监听value的变化,如果有值则调用setLabel方法设置选择器的label |
| | | observer(selectedValues) { |
| | | if (selectedValues && selectedValues.length) { |
| | | this.resetValus(selectedValues) |
| | | console.log("--------------------",this.data.value) |
| | | this.setLabel(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | data: { |
| | | // label为选择器的显示值 |
| | |
| | | }, |
| | | // 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(); |
| | |
| | | } |
| | | 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) { |
| | |
| | | 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] || {}]; |
| | | }, |
| | |
| | | }); |
| | | this.setData({ |
| | | label:label |
| | | }); |
| | | console.log("label1", label) |
| | | console.log("label",this.data.label) |
| | | }); |
| | | }, |
| | | // columnChange方法为选择器的columnchange事件处理函数,用于设置range和pickerValue |
| | | columnChange(e) { |
| | |
| | | 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 |
| | |
| | | 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) { |
| | |
| | | pickerValue |
| | | }); |
| | | } |
| | | } else { |
| | | |
| | | } |
| | | } |
| | | }, |
| | | // initRange方法用于初始化range |
| | | initRange() { |
| | |
| | | <picker mode="multiSelector" model:value="{{pickerValue}}" range-key="label" range="{{range}}" bindchange="onChange" |
| | | bindcolumnchange="columnChange"> |
| | | <view> |
| | | <view style="width:400rpx;padding-left: 30rpx;white-space: nowrap;text-overflow: ellipsis; overflow:hidden;"> |
| | | <!-- 如果已经选择了选项,则显示选项的label属性,否则显示placeholder属性。 --> |
| | | <text wx:if="{{label}}"> {{ label }} </text> |
| | | <text wx:if="{{label}}"> {{ label }} </text> |
| | | <text style="color: #999" wx:else> {{ placeholder }}</text> |
| | | </view> |
| | | </picker> |
| | |
| | | */ |
| | | data: { |
| | | name: '', |
| | | phone: '', |
| | | |
| | | phone: '', |
| | | showAreaList: false, |
| | | areaList: [], |
| | | addr: {}, |
| | | addrValues:[], |
| | | fieldNames: { |
| | | text: 'name', |
| | | value: 'id', |
| | |
| | | areaCode: res.result.ad_info.adcode + '00', |
| | | areaName: res.result.ad_info.district, |
| | | } |
| | | this.setData({ addr }) |
| | | |
| | | this.setData({ addr,addrValues: |
| | | [res.result.ad_info.adcode.slice(0,2) + '0000', |
| | | res.result.ad_info.adcode.slice(0,4) + '00', |
| | | res.result.ad_info.adcode] }) |
| | | } |
| | | }) |
| | | }, |
| | |
| | | // getArea({ |
| | | // "level": "", |
| | | // "pid": "" |
| | | // }).then(res => { |
| | | // var tl = [] |
| | | // if(res && res.data && res.data.length){ |
| | | // res.data.forEach(element => { |
| | | // let tc = [] |
| | | // if(element.children &&element.children.length){ |
| | | // element.children.forEach(c => { |
| | | // let ta = [] |
| | | // if(c.children &&c.children.length){ |
| | | // c.children.forEach(a => { |
| | | // ta.push({ |
| | | // name: a.name, |
| | | // id: a.id |
| | | // }) |
| | | // }) |
| | | // } |
| | | // tc.push({ |
| | | // name: c.name, |
| | | // id: c.id, |
| | | // children:ta, |
| | | // }) |
| | | // }) |
| | | // } |
| | | // tl.push({ |
| | | // name: element.name, |
| | | // id: element.id, |
| | | // children: tc, |
| | | // }) |
| | | // }); |
| | | // } |
| | | // this.setData({areaList: tl}) |
| | | // }).then(res => { |
| | | // this.setData({areaList: res.data}) |
| | | // console.log(this.data.areaList) |
| | | // }) |
| | | getDictData({ |
| | |
| | | {{ addr.provinceName }}{{ addr.cityName }}{{ addr.areaName }} |
| | | </view> |
| | | </picker> --> |
| | | <areaSel bindchange="regionChange" placeholder="请选择所在区域" value="{{['210000000','210500000','210501000']}}" /> |
| | | <areaSel bindchange="regionChange" placeholder="请选择所在区域" value="{{ addrValues }}" /> |
| | | <image class="arrow_right" src="../../static/icon/arrow_right.png" mode="widthFix"></image> |
| | | </view> |
| | | <view class="btn" bindtap="onSubmit">立即报名</view> |
| | |
| | | }) |
| | | }, |
| | | onLoad(options) { |
| | | console.log(options) |
| | | this.initDictData() |
| | | this.initData() |
| | | }, |