uview2.0实现picker省市区选择以及默认选择

news/2024/7/9 23:54:24 标签: notepad++, vue, uniapp, uview, 省市区, picker

vue文件

<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" :defaultIndex="defaultIndex"></u-picker>
	</view>
</template>

<script>
	import {
		address
	} from '@/static/js/address.js';
	// const address = []
	export default {
		data() {
			return {
				show: false,
				columns: [],
				origiData: address, //获取到的原始数据
				value: "", //
				defaultIndex: []
			};
		},
		mounted() {
			this.handelData();
		},
		methods: {
			change() {
				this.show = true;
			},
			//初始化开始数据
			handelData() {
				let sheng_s = '130000'; // 后端返回省市区编号 110000 北京市 130000 河北省
				let shi_s = '131000'; // 后端返回省市区编号   110100 北京市 131000 廊坊市
				let qu_s = '131082'; // 后端返回省市区编号    110101 东城区 131082 三河市

				let sheng = [];
				let shi = [];
				let qu = [];
				this.origiData.forEach((sheng_item, sheng_index) => {
					if (sheng_item.code === sheng_s) {
						this.defaultIndex[0] = sheng_index
						sheng_item.children.forEach((shi_item, shi_index) => {
							if (shi_item.code === shi_s) {
								this.defaultIndex[1] = shi_index
								shi_item.children.forEach((qu_item, qu_index) => {
									if (qu_item.code === qu_s) {
										this.defaultIndex[2] = qu_index
									}
									qu.push(qu_item.value);
								})
							}
							shi.push(shi_item.value);
						})
					}
					sheng.push(sheng_item.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(e.indexs)
				let shen = this.origiData[e.indexs[0]]
				console.log(shen.value, shen.code)
				let shi = shen.children[e.indexs[1]]
				console.log(shi.value, shi.code)
				let qu = shi.children[e.indexs[2]]
				console.log(qu.value, qu.code)
				this.value = e.value[0] + e.value[1] + e.value[2]
				this.show = false;
			}
		}
	};
</script>

<style></style>

在这里插入图片描述


http://www.niftyadmin.cn/n/4968309.html

相关文章

JetBrains 2023.2全新发布!IDEA、PyCharm等支持AI辅助

日前JetBrains官方正式宣布旗下IDE系列今年第二个重要版本——v2023.2全新发布&#xff0c;涵盖了 IntelliJ IDEA、PyCharm、WebStorm等一众知名产品&#xff0c;接下来我们一起详细了解一下他们的更新重点吧~ IntelliJ IDEA v2023.2——引入AI辅助开发 IntelliJ IDEA 2023.2…

Python实现企业微信群告警

Python实现企业微信告警 1. 创建企业微信群机器人 1-1. 什么是企业微信群机器人&#xff1f; 企业微信群机器人是企业微信平台提供的一种功能&#xff0c;可以通过Webhook方式将消息发送到指定的企业微信群中。它可以用于自动化发送通知、告警等信息&#xff0c;实现监控和信…

微信小程序|步骤条

步骤条是现代用户界面设计中常见的元素之一,它能够引导用户按照预定顺序完成一系列任务或步骤。在小程序中,实现步骤条可以为用户提供更好的导航和引导,使用户体验更加流畅和直观。本文将介绍如何在小程序中实现步骤条,并逐步展示实现的过程和关键技巧 目录 步骤条的作用及…

【Python爬虫】使用代理ip进行网站爬取

前言 使用代理IP进行网站爬取可以有效地隐藏你的真实IP地址&#xff0c;让网站难以追踪你的访问行为。本文将介绍Python如何使用代理IP进行网站爬取的实现&#xff0c;包括代理IP的获取、代理IP的验证、以及如何把代理IP应用到爬虫代码中。 1. 使用代理IP的好处 在进行网站爬…

【GeoDa实用技巧100例】023:geoda探索性空间数据分析

文章目录 全局空间关联性指标局部空间关联性指标探索性空间数据分析是一种具有识别功能的空间数据分析方法,主要用于探测一些变量的空间关联性和集聚现象。某一变量在空间上发生集聚,意味着在一定区域内,这一变量在各个地域单元之间具有自相关性:某一地域单元该变量较高,其…

iOS脱壳技术(二):深入探讨dumpdecrypted工具的高级使用方法

前言 应用程序脱壳是指从iOS应用程序中提取其未加密的二进制可执行文件&#xff0c;通常是Mach-O格式。这可以帮助我们深入研究应用程序的底层代码、算法、逻辑以及数据结构。这在逆向工程、性能优化、安全性分析等方面都有着重要的应用。 在上一篇内容中我们已经介绍了Clutc…

Mybatis (3)-----分页的运用

目录 一、分页查询 二&#xff0c;特殊的字符处理 三、总结 前言&#xff1a;在我们上篇已经学的动态sql的基础上&#xff0c;今天继续讲解关于maybatis的分页&#xff0c;特殊的字符处理。希望这篇博客可以帮助到大家哦&#xff01; 一、分页查询 为什么要重写mybatis的分…

基于java客户信息管理系统设计与实现

摘 要 信息化的价值让社会变得一次又一次的更加进步&#xff0c;那么在于传统制造行业来说&#xff0c;信息化更能够改变其业务逻辑、生产成本&#xff0c;实现降本增效的企业效果。企业资源计划可以说从传统的手工作业以及人为预测&#xff0c;最后到了信息化软件的价值方面&a…