| <template> | |
| 	<uv-popup ref="popup"  | |
| 	:round="30"  | |
| 	bgColor="#f7f7f7"> | |
| 		<view class="content"> | |
| 			 | |
| 			<!-- 地址 --> | |
| 			<view class="address" | |
| 			@click="openAddress"> | |
| 				<image src="../../static/address/selectIcon.png" mode=""></image> | |
| 				<view class=""> | |
| 					{{ address.name }} | |
| 				</view> | |
| 				<view class=""> | |
| 					{{ address.addressDetail }} | |
| 				</view> | |
| 				<view class="icon"> | |
| 					<uv-icon | |
| 					size="30rpx" | |
| 					name="arrow-right"></uv-icon> | |
| 				</view> | |
| 			</view> | |
| 			 | |
| 			<!-- 商品信息和数量 --> | |
| 			<view class="submit-info"> | |
| 				<view class="title"> | |
| 					桌布租赁 | |
| 				</view> | |
| 				<view class="box"> | |
| 					<image | |
| 					class="image" | |
| 					:src="unit.pic"  | |
| 					mode=""></image> | |
| 					 | |
| 					<view class="info"> | |
| 						<view class="price"> | |
| 							¥<text>{{ unit.depositPrice }}</text>元 | |
| 						</view> | |
| 						<view class="unit"> | |
| 							请选择规格 | |
| 						</view> | |
| 						<view class=""> | |
| 							<uv-number-box v-model="num"></uv-number-box> | |
| 						</view> | |
| 					</view> | |
| 				</view> | |
| 			</view> | |
| 			 | |
| 			<!-- 规格 --> | |
| 			<!-- <view class="submit-unit"> | |
| 				<view class="title"> | |
| 					规格选择 | |
| 				</view> | |
| 				<view class="list"> | |
| 					<view :class="{act : unitIndex == index}"  | |
| 					v-for="(item, index) in detail.hotelGoodsSkuList" | |
| 					@click="selectUnit(item, index)" | |
| 					:key="index"> | |
| 						{{ item.title }} | |
| 					</view> | |
| 				</view> | |
| 			</view> --> | |
| 			 | |
| 			 | |
| 			 | |
| 			<!-- 费用明细 --> | |
| 			<view class="expense-detail"> | |
| 				<view class="title"> | |
| 					费用明细 | |
| 				</view> | |
| 				<view class="detail"> | |
| 					押金:¥{{ unit.depositPrice }} | |
| 				</view> | |
| 			</view> | |
| 			 | |
| 			<!-- 提交按钮 --> | |
| 			<view class="submit-btn"> | |
| 				<view class="l" | |
| 				@click="addCart"> | |
| 					加入购物车 | |
| 				</view> | |
| 				<view class="r" | |
| 				@click="orderPay"> | |
| 					{{ submiitTitle }} | |
| 				</view> | |
| 			</view> | |
| 			 | |
| 		</view> | |
| 		 | |
| 		<uv-popup ref="addressPopup" :round="30"> | |
| 			<addressList | |
| 			ref="addressList" | |
| 			height="60vh" | |
| 			@select="selectAddress" | |
| 			/> | |
| 		</uv-popup> | |
| 	</uv-popup> | |
| </template> | |
| 
 | |
| <script> | |
| 	import addressList from '../address/addressList.vue' | |
| 	export default { | |
| 		components : { | |
| 			addressList, | |
| 		}, | |
| 		props : { | |
| 			submiitTitle : { | |
| 				default : '立即购买', | |
| 				type : String, | |
| 			}, | |
| 			detail : { | |
| 				default : {} | |
| 			} | |
| 		}, | |
| 		data() { | |
| 			return { | |
| 				unitIndex : 0, | |
| 				address : { | |
| 					name : '请选择联系人', | |
| 					addressDetail : '', | |
| 				}, | |
| 				num : 1, | |
| 				unit : {}, | |
| 				addressTotal : 0, | |
| 			} | |
| 		}, | |
| 		methods: { | |
| 			// 打开 | |
| 			open(){ | |
| 				this.$refs.popup.open('bottom') | |
| 				if(!this.unit.id){ | |
| 					this.selectUnit(this.detail.hotelGoodsSkuList[0], 0) | |
| 				} | |
| 				 | |
| 				// 获取地址列表 | |
| 				this.$refs.addressList.getAddressList().then(res => { | |
| 					this.addressTotal = res.total | |
| 					if(this.addressTotal != 0){ | |
| 						this.address = res.records[0] | |
| 					} | |
| 				}) | |
| 			}, | |
| 			// 关闭 | |
| 			close(){ | |
| 				this.$refs.popup.close() | |
| 			}, | |
| 			// 打开选择地址 | |
| 			openAddress(){ | |
| 				if (this.addressTotal == 0) { | |
| 					this.$refs.popup.close() | |
| 					return uni.navigateTo({ | |
| 						url: '/pages_order/mine/address?type=back' | |
| 					}) | |
| 				} | |
| 				this.$refs.addressPopup.open('bottom') | |
| 			}, | |
| 			// 选择地址 | |
| 			selectAddress(e){ | |
| 				this.address = e | |
| 				this.$refs.addressPopup.close() | |
| 			}, | |
| 			// 选择规格 | |
| 			selectUnit(item, index){ | |
| 				this.unit = item | |
| 				this.unitIndex = index | |
| 			}, | |
| 			addCart(){ | |
| 				this.$api('cartAdd', { | |
| 					id : this.detail.id, | |
| 					skuId : this.unit.id, | |
| 				}, res => { | |
| 					if(res.code == 200){ | |
| 						uni.showToast({ | |
| 							title: '添加成功', | |
| 						}); | |
| 						this.$refs.popup.close() | |
| 					} | |
| 				}) | |
| 			}, | |
| 			orderPay(){ | |
| 				 | |
| 				let data = { | |
| 					id : this.detail.id,//商品id | |
| 					skuId : this.unit.id,//规格id | |
| 					addressId : this.address.id,//地址id | |
| 					sku : this.unit.title,//规格 | |
| 					num : this.num, | |
| 				} | |
| 				 | |
| 				 | |
| 				if(this.$utils.verificationAll(data, { | |
| 					skuId : '请选择规格', | |
| 					addressId : '请选择地址', | |
| 				})){ | |
| 					return | |
| 				} | |
| 				 | |
| 				this.$api('orderPay', data, res => { | |
| 					if(res.code == 200){ | |
| 						 | |
| 						uni.redirectTo({ | |
| 							url: '/pages/index/order' | |
| 						}) | |
| 						 | |
| 						// uni.requestPayment({ | |
| 						// 	provider: 'wxpay', // 服务提提供商 | |
| 						// 	timeStamp: res.result.timeStamp, // 时间戳 | |
| 						// 	nonceStr: res.result.nonceStr, // 随机字符串 | |
| 						// 	package: res.result.packageValue, | |
| 						// 	signType: res.result.signType, // 签名算法 | |
| 						// 	paySign: res.result.paySign, // 签名 | |
| 						// 	success: function (res) { | |
| 						// 		console.log('支付成功',res); | |
| 						// 		uni.redirectTo({ | |
| 						// 			url: '/pages/index/order' | |
| 						// 		}) | |
| 						// 	}, | |
| 						// 	fail: function (err) { | |
| 						// 		console.log('支付失败',err); | |
| 						// 		uni.showToast({ | |
| 						// 			icon:'none', | |
| 						// 			title:"支付失败" | |
| 						// 		}) | |
| 						// 	} | |
| 						// }); | |
| 					} | |
| 				}) | |
| 			}, | |
| 		} | |
| 	} | |
| </script> | |
| 
 | |
| <style scoped lang="scss"> | |
| .content{ | |
| 	max-height: 80vh; | |
| 	overflow: hidden; | |
| 	overflow-y: auto; | |
| 	.address{ | |
| 		display: flex; | |
| 		padding: 20rpx; | |
| 		background-color: #fff; | |
| 		image{ | |
| 			width: 30rpx; | |
| 			height: 30rpx; | |
| 			margin: 20rpx; | |
| 		} | |
| 		view{ | |
| 			margin: 20rpx; | |
| 			overflow:hidden; //超出的文本隐藏 | |
| 			text-overflow:ellipsis; //溢出用省略号显示 | |
| 			white-space:nowrap; //溢出不换行 | |
| 		} | |
| 		.icon{ | |
| 			margin-left: auto; | |
| 		} | |
| 	} | |
| 	.submit-info{ | |
| 		background-color: #fff; | |
| 		padding: 30rpx; | |
| 		margin-top: 20rpx; | |
| 		.title{ | |
| 			font-size: 30rpx; | |
| 			padding: 10rpx; | |
| 			font-weight: 600; | |
| 		} | |
| 		.box{ | |
| 			display: flex; | |
| 			margin-top: 10rpx; | |
| 			.image{ | |
| 				width: 200rpx; | |
| 				height: 200rpx; | |
| 				border-radius: 20rpx; | |
| 				margin-right: 20rpx; | |
| 			} | |
| 			.info{ | |
| 				flex: 1; | |
| 				.unit{ | |
| 					font-size: 24rpx; | |
| 					padding: 10rpx 20rpx; | |
| 					color: #717171; | |
| 					display: flex; | |
| 					align-items: center; | |
| 				} | |
| 				.price{ | |
| 					color: $uni-color; | |
| 					font-size: 28rpx; | |
| 					padding: 10rpx 20rpx; | |
| 					text{ | |
| 						font-size: 36rpx; | |
| 						font-weight: 900; | |
| 					} | |
| 				} | |
| 			} | |
| 		} | |
| 	} | |
| 	.submit-unit{ | |
| 		padding: 30rpx; | |
| 		background-color: #fff; | |
| 		.title{ | |
| 			font-size: 28rpx; | |
| 			font-weight: 600; | |
| 		} | |
| 		.list{ | |
| 			display: flex; | |
| 			flex-wrap: wrap; | |
| 			font-size: 22rpx; | |
| 			.act{ | |
| 				color: $uni-color; | |
| 				border: 1px solid $uni-color; | |
| 				background-color: #F9E7DE; | |
| 			} | |
| 			view{ | |
| 				border-radius: 15rpx; | |
| 				width: 320rpx; | |
| 				background-color: #F3F3F3; | |
| 				border: 1px solid #F3F3F3; | |
| 				margin: 10rpx; | |
| 				display: flex; | |
| 				justify-content: center; | |
| 				padding: 15rpx 0; | |
| 			} | |
| 		} | |
| 	} | |
| 	.expense-detail{ | |
| 		padding: 30rpx; | |
| 		background-color: #fff; | |
| 		font-size: 28rpx; | |
| 		.title{ | |
| 			font-weight: 600; | |
| 		} | |
| 		.detail{ | |
| 			background-color: #F6F6F6; | |
| 			color: #717171; | |
| 			margin: 10rpx 0; | |
| 			padding: 10rpx 20rpx; | |
| 		} | |
| 	} | |
| 	.submit-btn{ | |
| 		width: 600rpx; | |
| 		height: 80rpx; | |
| 		color: #fff; | |
| 		border-radius: 40rpx; | |
| 		font-size: 28rpx; | |
| 		margin: 20rpx auto; | |
| 		display: flex; | |
| 		justify-content: center; | |
| 		align-items: center; | |
| 		border: 1rpx solid $uni-color; | |
| 		overflow: hidden; | |
| 		.l{ | |
| 			flex: 1; | |
| 			display: flex; | |
| 			justify-content: center; | |
| 			align-items: center; | |
| 			color: $uni-color; | |
| 		} | |
| 		.r{ | |
| 			background: $uni-color; | |
| 			flex: 1; | |
| 			height: 100%; | |
| 			display: flex; | |
| 			justify-content: center; | |
| 			align-items: center; | |
| 		} | |
| 	} | |
| } | |
| </style>
 |