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

news2025/1/15 17:15:43

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.coloradmin.cn/o/926951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

路面病害识别新方法,省时省力又高效!

在日常生活中&#xff0c;我们经常会遇到路面出现各种各样的病害&#xff0c;比如坑洼、龟裂等。这些路面病害不仅给行车带来不便&#xff0c;还会对交通安全造成一定的影响。因此&#xff0c;及时准确地识别路面病害显得尤为重要。 路面病害可以分为多种不同的类型&#xff0…

Slippage-robust Gaze Tracking for Near-eye Display

论文&#xff1a;Slippage-robust Gaze Tracking for Near-eye Display 中文&#xff1a;基于滑动鲁棒的近眼显示器凝视跟踪 地址&#xff1a;2210.11637v1.pdf (arxiv.org)https://arxiv.org/pdf/2210.11637v1.pdf 目录 摘要 1 介绍 2 相关工作 3 系统概述 A 硬件设置 …

用svn上传idea和webstorm代码(有图详解)

本文从以下几个方面讲svn上传及注意事项&#xff1a; 1. 前端项目上传svn 2. 后端项目上传svn 3. 删除之前的svn信息&#xff08;删除svn的小对勾&#xff09; 4. 设置idea中svn的忽略提交文件 5. 设置webstorm的忽略提交文件 svn如何安装&#xff0c;请参考这篇文章&#xf…

Redis常用数据类型及命令

Redis 常用数据类型 常用数据类型 主要是指value类型 key都是字符串类型的 各种数据类型对应的特点 应用场景 哈希&#xff1a;一般来存储一些对象 列表&#xff1a;存一些跟顺序有关系的数据&#xff0c;比如朋友圈点赞 集合&#xff1a;一般用来做运算&#xff0c;交集&a…

揭秘DISC模型:团队协作的神秘力量

DISC模型简介 DISC的起源与发展 DISC模型最初是由美国心理学家William Moulton Marston在20世纪初提出的。他在1928年的著作《情感的正常与异常》中首次描述了这一模型。这一理论的核心思想是&#xff0c;人们的行为可以被归类为四个主要的类型&#xff0c;这四种类型是相互关…

【夏令时】用@JsonFormat(pattern = “yyyy-MM-dd“)注解,出生日期竟然年轻了一天

前言 &#x1f34a;缘由 用JsonFormat(pattern “yyyy-MM-dd”&#xff09;注解&#xff0c;出生日期竟然年轻了一天 艺术源于生活&#xff0c;bug源于开发。 起因是艰苦奋战一个月&#xff0c;测试及验收都顺利通过&#xff0c;上线也稳稳的成功。但是毒奶总是在不经意给你…

基于Jenkins构建生产CICD环境(第三篇)

目录 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 2、阿里云镜像加速器 3、构建tomcat 基础镜像 4、构建一个Maven项目 基于Jenkins自动化部署PHP环境 基于rsync部署 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 在192.168.2.123 机器上&#x…

QT初始学习中的个人基础认知

整体感觉 安装的时候感觉更像python的库安装和编译器版本的配合安装。进入创建工程时&#xff0c;感觉是c语言的创建工程的感觉&#xff0c;而且可以看到main和h的头文件&#xff0c;整体来看是C来编写的程序。完成整个工程个人感觉是C编写功能&#xff0c;使用VB实现界面设计…

没有办公室,种子轮却融了4个亿的开源机器学习框架AI表——MindsDB

近日,一条融资消息引起了我的关注,一家将机器学习(ML)引入数据库的开源机器学习(ML)初创公司,成功获得英伟达旗下NVentures的投资。至此,这家被英伟达、Benchmark,以及Mayfield等众多机构投资的种子轮,总额达到5410万美元(近4亿元)。 这家公司叫MindsDB,成立于2017年,…

C 语言编程规范 -- 华为

1. 代码总体原则 1.1 清晰第一&#xff0c;清晰性是易于维护&#xff0c;易于重构的程序必须具备的特征 代码首先是给人读的&#xff0c;好的代码应当可以像文章一样发生朗诵出来&#xff0c;“程序必须为阅读它的人而编写&#xff0c;只是顺便用于机器执行” – Harold Abel…

js深拷贝三种方法

使用递归函数实现深拷贝 const obj {name: zzz,age: 18,hobby: [篮球, 足球],family: {baby: baby}} // 深拷贝 数组 对象 一定要先筛数组再筛对象,因为万物皆对象function deepcopy(newObj, oldObj) {for (const k in oldObj) {// 判断值是否属于array类if (oldObj[k] i…

linux搭建minIO对象存储服务,springBoot整合

minIO 服务搭建 1. 创建安装目录 mkdir -p /usr/local/minio2. 进入安装目录 cd /usr/local/minio3.下载安装包 (wget 如果下载太慢,可以手动下载并上传安装包) wget https://dl.minio.io/server/minio/release/linux-amd64/minio4.创建数据存储文件夹 mkdir -p /usr/loca…

gradle 环境配置

环境变量 # gradle 构建工具目录 export GRADLE_HOME/Users/tangjianghua5/software/gradle-6.0 export PATH$PATH:$GRADLE_HOME/bin # gradle 本地仓库目录 export GRADLE_USER_HOME/Users/tangjianghua5/.m2/repository export PATH$PATH:$GRADLE_USER_HOME全局配置 init.gr…

【LeetCode】437.路径总和Ⅲ

题目 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff08;只能从父节点到子节…

继承抽象类习题答案

基础题目 第一题&#xff1a;概念辨析 什么叫做类与类的继承&#xff0c;作用是什么&#xff1f; 就是子类继承父类的属性和行为&#xff0c;使得子类对象具有与父类相同的属性、相同的行为。作用是子类复用父类内容。 继承后&#xff0c;父类与子类之间&#xff0c;各成员有…

融合CDN 如何有效的抵抗DDoS攻击

绝大部分对外网站所有者都离不开CDN的支持&#xff0c;据统计&#xff0c;全球高达70%的互联网流量都是通过CDN来进行缓存和加速的&#xff0c;不论是国外知名的CDN厂商&#xff1a;如Cloudflare、AWS、Akamai等&#xff0c;还是国内主流的CDN厂商阿里云华为云腾讯云等&#xf…

vue 实现word文档预览和下载 docx-preview 和 vue-office

1.先下载引入 npm i docx-preview --save import { renderAsync } from docx-preview;2.使用 fetch(url) .then((response) > {let docData response.blob(); //将文件转换成bolb形式//选择要渲染的元素let childRef document.getElementsByClassName("childRef&qu…

【ulimit 命令】LINUX单进程能够打开的最大文件句柄数

Linux系统如何查看修改最大打开文件数,这个问题对于很多刚刚学习linux的小伙伴来说觉得有点奇怪。Linux系统和windows不同之处在于更强的多任务多线程,由于文件系统结构的不同linux针对不同进程不同用户都可以设置最打打开文件数。 查看当前系统最大的文件打开数,如下图 在…

5165. CCC单词搜索

题目链接&#xff1a;https://www.acwing.com/problem/content/5168/ 题目&#xff1a; 给定一个 RC 的大写字母矩阵。 请你在其中寻找目标单词 W。 已知&#xff0c;目标单词 W 由若干个不同的大写字母构成。 目标单词可以遵循以下两种规则&#xff0c;出现在矩阵的水平、…

c++11 标准模板(STL)(std::basic_istringstream)(四)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allo…