赞
踩
<template> <view class="invite"> <u-cell title="点击选则" isLink :value="value" @click="change()"></u-cell> <u-picker :show="show" ref="uPicker" :columns="columns" @confirm="confirm" @cancel="show=false" @change="changeHandler" ></u-picker> </view> </template> <script> // import { address } from '@/static/address.js'; export default { data() { return { show: false, columns: [], origiData: [{ "code": "110000", "value": "北京市", "children": [{ "code": "110100", "value": "北京市", "children": [{ "code": "110101", "value": "东城区" }, { "code": "110102", "value": "西城区" }, { "code": "110105", "value": "朝阳区" }, { "code": "110106", "value": "丰台区" }, { "code": "110107", "value": "石景山区" }, { "code": "110108", "value": "海淀区" }, { "code": "110109", "value": "门头沟区" }, { "code": "110111", "value": "房山区" }, { "code": "110112", "value": "通州区" }, { "code": "110113", "value": "顺义区" }, { "code": "110114", "value": "昌平区" }, { "code": "110115", "value": "大兴区" }, { "code": "110116", "value": "怀柔区" }, { "code": "110117", "value": "平谷区" }, { "code": "110118", "value": "密云区" }, { "code": "110119", "value": "延庆区" }] }] }, { "code": "120000", "value": "天津市", "children": [{ "code": "120100", "value": "天津市", "children": [{ "code": "120101", "value": "和平区" }, { "code": "120102", "value": "河东区" }, { "code": "120103", "value": "河西区" }, { "code": "120104", "value": "南开区" }, { "code": "120105", "value": "河北区" }, { "code": "120106", "value": "红桥区" }, { "code": "120110", "value": "东丽区" }, { "code": "120111", "value": "西青区" }, { "code": "120112", "value": "津南区" }, { "code": "120113", "value": "北辰区" }, { "code": "120114", "value": "武清区" }, { "code": "120115", "value": "宝坻区" }, { "code": "120116", "value": "滨海新区" }, { "code": "120117", "value": "宁河区" }, { "code": "120118", "value": "静海区" }, { "code": "120119", "value": "蓟州区" }] }] }, { "code": "130000", "value": "河北省", "children": [{ "code": "130100", "value": "石家庄市", "children": [{ "code": "130102", "value": "长安区" }, { "code": "130104", "value": "桥西区" }, { "code": "130105", "value": "新华区" }, { "code": "130107", "value": "井陉矿区" }, { "code": "130108", "value": "裕华区" }, { "code": "130109", "value": "藁城区" }, { "code": "130110", "value": "鹿泉区" }, { "code": "130111", "value": "栾城区" }, { "code": "130121", "value": "井陉县" }, { "code": "130123", "value": "正定县" }, { "code": "130125", "value": "行唐县" }, { "code": "130126", "value": "灵寿县" }, { "code": "130127", "value": "高邑县" }, { "code": "130128", "value": "深泽县" }, { "code": "130129", "value": "赞皇县" }, { "code": "130130", "value": "无极县" }, { "code": "130131", "value": "平山县" }, { "code": "130132", "value": "元氏县" }, { "code": "130133", "value": "赵县" }, { "code": "130181", "value": "辛集市" }, { "code": "130183", "value": "晋州市" }, { "code": "130184", "value": "新乐市" }] }], }], //获取到的原始数据 value:"", // }; }, mounted() { this.handelData(); }, methods: { change(){ this.show=true; }, //初始化开始数据 handelData() { // console.log(this.origiData.value)) let sheng = []; let shi = []; let qu = []; this.origiData.forEach(item => { sheng.push(item.value); // 设置出初始化的数据 if (item.value == '北京市') { item.children.forEach(child => { shi.push(child.value); if (child.value == '北京市') { child.children.forEach(el => { qu.push(el.value); }); } }); } }); this.columns.push( JSON.parse(JSON.stringify(sheng)), JSON.parse(JSON.stringify(shi)), JSON.parse(JSON.stringify(qu)) ); }, changeHandler(e) { const { columnIndex, value, values, // values为当前变化列的数组内容 index, // 微信小程序无法将picker实例传出来,只能通过ref操作 picker = this.$refs.uPicker } = e; // console.log('测试数据', e); // 当第一列值发生变化时,变化第二列(后一列)对应的选项 if (columnIndex === 0) { // console.log(value) // picker为选择器this实例,变化第二列对应的选项 this.origiData.forEach(item => { if (value[0] == item.value) { let shi = []; let flag = item.children[0].value; item.children.forEach((val, ol) => { shi.push(val.value); if (shi[0] == flag) { //设置默认开关(选择省份后设置默认城市) flag = ''; let qu = []; val.children.forEach(vol => { qu.push(vol.value); }); picker.setColumnValues(2, qu); } }); picker.setColumnValues(1, shi); } }); } //当第二列变化时,第三列对应变化 if (columnIndex === 1) { this.origiData.forEach(item => { if (value[0] == item.value) { let shi = []; item.children.forEach((val, ol) => { shi.push(val.value); if (value[1] == val.value) { let qu = []; val.children.forEach(vol => { qu.push(vol.value); }); picker.setColumnValues(2, qu); } }); } }); } }, // 确认选中的数据 confirm(e) { // console.log('confirm', JSON.stringify(e)); this.value=e.value[0]+e.value[1]+e.value[2] this.show = false; } } }; </script> <style></style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。