uniapp选择地址弹窗组件

news2025/2/22 21:21:46

1.效果
在这里插入图片描述
2.子组件在components里面创建组件AddreessWindow

<template>
	<view style="position: relative;z-index: 999999 !important;">
		<view class="address-window" :class="value === true ? 'on' : ''">
			<view class="title">
				<view>选择地址
				</view>
				<view style="position: absolute;right: 20rpx;top: 39rpx;">
					<u-icon name="close" color="#666" size="20" @click="closeAddress"></u-icon>
				</view>
			</view>
			<view class="list" v-if="addressList.length">
				<view class="item acea-row row-between-wrapper" :class="item.id === checked ? 'font-color-green' : ''"
					v-for="(item, addressIndex) in addressList" @click="tapAddress(addressIndex)" :key="addressIndex">
					<u-icon name="map" :color="item.id === checked?'#99CC00':'#000'" size="20"></u-icon>
					<!-- <text class="iconfont icon-ditu" :class="item.id === checked ? 'font-color-green' : ''"></text> -->
					<view class="addressTxt">
						<view class="name" :class="item.id === checked ? 'font-color-green' : ''">
							{{ item.realName }}
							<text class="phone">{{ item.phone }}</text>
						</view>
						<view class="line1"> {{ item.province }}{{ item.city }}{{ item.district }}{{ item.detail }}
						</view>
					</view>
					<!-- <text class="iconfont icon-complete" :class="item.id === checked ? 'font-color-green' : ''"></text> -->
					<u-icon name="checkmark" v-if="item.id === checked" color="#99CC00" size="20"></u-icon>
				</view>
			</view>
			<view class="pictrue" v-if="addressList.length < 1">
				<!-- <image :src="`${$VUE_APP_RESOURCES_URL}/images/noAddress.png`" class="image" /> -->
				<u-empty textSize='36rpx' text="空空如也" textColor='#A8D61E' width='512' height='251' mode="list"
					:icon="`${imgUrl}empty.png`"></u-empty>
			</view>
			<view class="addressBnt bg-color-red"
				style="background-color:#99CC00 !important;color: #FFFFFF !important; font-size: 31rpx !important;"
				@click="goAddressPages">新加地址</view>
		</view>
		<view class="mask" @touchmove.prevent :hidden="value === false" @click="closeAddress"></view>
	</view>
</template>
<script>
	// import { getAddressList } from '@/api/dsIndexApi.js'

	export default {
		name: 'AddressWindow',
		props: {
			value: Boolean,
			checked: Number,
			timer: Number
		},
		data: function() {
			return {
				imgUrl: '',
				addressList: [],
				current: 0,
				cartId: 0,
				pinkId: 0,
				couponId: 0,
			}
		},
		mounted: function() {
			this.imgUrl = this.$VUE_APP_IMG_URL;
		},
		created() {
			// console.
		},
		methods: {
			getAddressList: function() {
				let that = this;
				that.addressList = [{
						id: 1,
						realName: '哈哈嗝',
						phone: '14708291001',
						province: "四川省",
						city: "成都市",
						district: "武侯区",
						detail: "阳光大道",

					},
					{
						id: 2,
						realName: '张三',
						phone: '14708291000',
						province: "四川省",
						city: "成都市",
						district: "武侯区",
						detail: "大悦城",

					}
				]
				//   getAddressList().then(res => {
				// // console.log('获取地址额列表',res)
				//     that.addressList = res.data;
				//   })
			},

			closeAddress() {
				this.$emit('input', false)
			},
			goAddressPages: function() {
				uni.navigateTo({
					url: '/pages/address/address'
				})
				this.$emit('redirect')
			},
			tapAddress: function(index) {
				this.$emit('checked', this.addressList[index])
				this.$emit('input', false)
			},
		},
		watch: {
			timer(e, v) {
				console.log(e, v, '变换了')
				this.getAddressList()
			},
		},
	}
</script>
<style lang="scss">
	.font-color-green {
		color: #99CC00 !important;
	}

	.mask {
		display: flex;
		align-items: flex-end;
		position: fixed;
		left: 0;
		top: 0px;
		bottom: 0;
		width: 100%;
		background: rgba(0, 0, 0, 0.6);
		z-index: 9995;
		transition: .3s;
	}

	/*地址弹窗*/
	.address-window {
		background-color: #fff;
		position: fixed;
		bottom: 0;
		left: 0;
		width: 100%;
		z-index: 10000;
		transform: translate3d(0, 100%, 0);
		transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
	}

	.address-window.on {
		transform: translate3d(0, 0, 0);
	}

	.address-window .title {
		font-size: 0.32 * 100rpx;
		font-weight: bold;
		text-align: center;
		height: 1.23 * 100rpx;
		line-height: 1.23 * 100rpx;
		position: relative;
		color: #333;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.address-window .title .iconfont {
		position: absolute;
		right: 0.3 * 100rpx;
		color: #8a8a8a;
		font-size: 0.35 * 100rpx;
	}

	.address-window .list {
		max-height: 6 * 100rpx;
		overflow-y: auto;
		overflow-x: hidden;
	}

	.address-window .list .item {
		margin-left: 0.3 * 100rpx;
		padding-right: 0.3 * 100rpx;
		border-bottom: 1px solid #eee;
		height: 1.29 * 100rpx;
		font-size: 0.25 * 100rpx;
		color: #333;
		display: flex;
		align-items: center;
	}

	.address-window .list .item .iconfont {
		font-size: 0.37 * 100rpx;
		color: #2c2c2c;
	}

	.address-window .list .item .iconfont.icon-complete {
		font-size: 0.3 * 100rpx;
		color: #fff;
	}

	.address-window .list .item .addressTxt {
		width: 5.6 * 100rpx;
	}

	.address-window .list .item .addressTxt .name {
		font-size: 0.28 * 100rpx;
		font-weight: bold;
		color: #282828;
		margin-bottom: 0.04 * 100rpx;
	}

	.address-window .list .item .addressTxt .name .phone {
		margin-left: 0.18 * 100rpx;
	}

	.address-window .addressBnt {
		font-size: 0.3 * 100rpx;
		font-weight: bold;
		color: #fff;
		width: 6.9 * 100rpx;
		height: 0.86 * 100rpx;
		border-radius: 0.43 * 100rpx;
		text-align: center;
		line-height: 0.86 * 100rpx;
		margin: 0.85 * 100rpx auto;
	}

	.address-window .pictrue {
		width: 4.14 * 100rpx;
		height: 3.36 * 100rpx;
		margin: 0.8 * 100rpx auto;
	}

	.address-window .pictrue .image {
		width: 100%;
		height: 100%;
	}
</style>

3.父组件

<template>
	<view class="container">
	<view @click="skipAddress">选择地址</view>
		<!-- 地址弹框 -->
		<AddressWindow :timer="timer" @checked="changeAddress" @redirect="addressRedirect" v-model="showAddress"
			:checked="addressInfo.id" ref="mychild"></AddressWindow>
   </view>
   </template>
   <script>
	export default {
		data() {
		return {
				addressInfo: {},
				addressLoaded: false,
				timer: '',
				showAddress: false,
				}
		},
		methods:{
		//选地址
			skipAddress() {
					this.timer = new Date().getTime();
					this.showAddress = true;
					if (!this.addressLoaded) {
						this.addressLoaded = true
						this.$refs.mychild.getAddressList()
					}
			},
			// 控制地址弹框
			addressRedirect() {
				// this.addressLoaded = false
				this.showAddress = false;
			},
			// 地址选择
			changeAddress(addressInfo) {
				this.addressInfo = addressInfo
				// this.addressInfo.id = addressInfo.id;
				console.log('地址栏11111', this.addressInfo)
				//计算订单金额
				// this.orderComputedAPi(this.addressInfo.id)
		    	},
			}
		}
		</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1028063.html

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

相关文章

Controller统一异常处理和yaml配置

目录 Controller统一异常处理 url解析 static下静态资源文件的访问 配置类 如何访问static下的资源文件 yaml基础语法 注解赋值 批量注入 单个注入 Controller统一异常处理 Controller统一异常处理ControllerAdvice&#xff1a;统一为Controller进行"增强" …

聊聊Spring中循环依赖与三级缓存

先看几个问题 什么事循环依赖&#xff1f;什么情况下循环依赖可以被处理&#xff1f;spring是如何解决循环依赖的&#xff1f; 什么是循环依赖&#xff1f; 简单理解就是实例 A 依赖实例 B 的同时 B 也依赖了 A Component public class A {// A 中依赖 BAutowiredprivate B b…

【表格插入小计行】el-table表格,数组对象中根据某字段插入小计行计算数据

前言 功能解释&#xff1a;遇到的一个需求&#xff0c;是表格的tabledata数组。里面有科室医生还有很多消费指标等数据。然后需要我排序后把科室放在一起。然后在每个科室下面添加一行数据&#xff0c;是小计行。用于计算上面相同科室的所有数据汇总。然后最下面再来个合计行&…

【深度学习实验】前馈神经网络(四):自定义逻辑回归模型:前向传播、反向传播算法

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 逻辑回归Logistic类 a. 构造函数__init__ b. __call__(self, x)方法 c. 前向传播forward d. 反向传播backward 2. 模型训练 3. 代码整合 一、实验介绍 实现逻…

JavaWeb 学习笔记 5:JSP

JavaWeb 学习笔记 5&#xff1a;JSP 简单的说&#xff0c;JSP 就是 Java Html&#xff0c;JSP 的出现是为了让 Java Web 应用生成动态页面更容易。 1.快速开始 1.1.依赖 添加 JSP 依赖&#xff1a; <dependency><groupId>javax.servlet.jsp</groupId>&…

华为云云耀云服务器L实例评测|使用docker部署禅道系统

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 文章目录 前言准备工作华为云账号注册充值、购买服务器 服务器操作密码修改登录远程工具 禅道部署简介 部署…

【校招VIP】java语言考点之序列化

考点介绍&#xff1a; 将java对象转换为字节序列的过程称为对象的序列化。对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上&#xff0c;通常存放在一个文件中。 2) 在网络上传送对象的字节序列。 java语言考点之序列化-相关题目及解析内容可点击文章末尾链…

PyCharm:No Python interpreter configured for the project

一、问题概述 Your 的 Pycharm 软件创建完项目后&#xff0c;结果无法运行&#xff0c;观察后&#xff0c;在Pycharm代码编辑区上面出现了这样的一个黄色条提示&#xff1a;No Python interpreter configured for the project 【问题】在您的Python项目中无Python解释器…

金融业需要的大模型,是一个系统化工程

今年年初&#xff0c;在AIGC刚刚开始爆火的时候&#xff0c;我们曾经采访过一位AI领域的专家。当我们提问哪个行业将率先落地大模型时&#xff0c;他毫不犹豫地说道&#xff1a;“金融。” 金融行业场景多、数据多、知识多&#xff0c;这样的“三多”特点让其成为AI大模型发挥价…

yarn安装依赖时报错 error An unexpected error occurred:

一切起因是因为前一天安装了volta管理node&#xff0c;第二天启动项目&#xff0c; 显示error An unexpected error occurred: “https://registry.npmmirror.com/webpack-aliyun-oss/-/webpack-aliyun-oss-0.2.6.tgz: Request failed “404 Not Found””. 项目启动时发现报错…

Selenium Grid 的搭建方法

传统 Selenium Grid 的搭建方法 搭建一个具有 1 个 Node 的 Selenium Grid。那么通常来讲我们需要 2 台机器&#xff0c;其中一台作为 Hub&#xff0c;另外一台作为 Node&#xff0c;并要求这两台机器已经具备了 Java 执行环境。 1.通过官网下载 selenium-server-standalone-…

Java 21 发布,新功能助力开发更高效

Java 21 是 Java SE 平台的最新长期支持 (LTS) 版本&#xff0c;于 2023 年 9 月 19 日发布。它包括了一系列新功能和改进&#xff0c;可以让开发人员编写更高效、更可靠、更安全的 Java 应用程序。 新功能亮点 Java 21 的新功能包括&#xff1a; 虚拟线程&#xff1a;虚拟线程…

【 Tkinter界面-练习05】 event和bind

一、说明 事件和动作有关&#xff1b;所有的界面都与运动有关&#xff0c;本篇将对事件、事件触发、绑定回调函数等&#xff0c;其实是一系列部件配合的复杂的过程&#xff0c;这些过程牵扯到系统如何设计&#xff0c;线程、消息队列循环等。本篇将详细介绍各种因素的关系。 二…

BCC源码编译和安装

接前一篇文章&#xff1a;BCC源码下载 1. 进入源码根目录 进入到BCC源码根目录。命令及结果如下&#xff1a; $ cd bcc ~/eBPF/BCC/bcc$ ls cmake CONTRIBUTING-SCRIPTS.md docs images libbpf-tools man scripts src CMakeLists.txt …

Matlab论文插图绘制模板第115期—带Latex公式的图

之前的文章中&#xff0c;分享了Matlab带线标记的图&#xff1a; 带阴影标记的图&#xff1a; 带箭头标记的图&#xff1a; 带图形标记的图&#xff1a; 进一步&#xff0c;分享一下带Latex公式的图&#xff0c;先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『…

http1和http2的主要区别

主要有四个方面&#xff1a; 二进制分帧多路复用服务器主动推送头部压缩 将前两点结合来说&#xff0c;首先 二进制分帧 帧&#xff1a;HTTP/2 数据通信的最小单位&#xff1b; 消息&#xff1a;HTTP/2 中&#xff0c;例如在请求和响应等操作中&#xff0c;消息由一个或多个…

赛宁党支部赴延安开展革命旧址学习主题党日活动

为深入学习贯彻新时代中国特色社会主义思想和中共二十大精神&#xff0c;不断提升党支部成员综合素质和业务能力&#xff0c;2023年9月&#xff0c;赛宁公司党支部组织北京、南京、广州等三地部分党员及入党积极分子开展了“革命旧址学习”主题党日活动&#xff0c;深入寻访延安…

TongWeb8下应用忙碌线程监控

问题 &#xff1a; 在系统运行过程中发现TongWeb进程占用CPU过高&#xff0c;需要分析是应用哪里引起的问题。 分析过程(仅限Linux环境)&#xff1a; 1. 通过top命令查看TongWeb的java进程占用的CPU情况。 查看误区&#xff1a;不要以为java进程CPU占到398%就是高&#xff0…

Java基于微信小程序的青少年健康心理科普平台

第一章 简介 青少年心理健康科普平台为用户提供心理医生咨询服务&#xff0c;系统包括微信小程序端和后台。 微信小程序用户可以先进行注册&#xff0c;填写个人的基本信息提交到服务器&#xff0c;服务器把数据保存到数据库。管理员对青少年的信息进行验证后&#xff0c;青少…

面试官:Javscript数组的常用方法有哪些?

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 一、操作方法 增 push() unshift() splice concat() 删 pop() shift() splice() slice() 改 splice() …