<template>
	<view>
		<view class="inner-box">
			<!-- 收货人 -->
			<view class="address-box" v-if="address==null" @click="openAddress()">
				<view class="left">
					<view class="name-box">
						<text class="text name">添加收货地址</text>
					</view>
				</view>
				<view class="arrow-box">
					<image src="/static/images/arrow_gray.png" mode=""></image>
				</view>
			</view>
			<view class="address-box" v-if="address!=null" @click="openAddress()">
				<view class="left">
					<view class="name-box">
						<text class="text name">{{address.realName}}</text>
						<text class="text" v-if="address.phone!=null">{{address.phone}}</text>
					</view>
					<view class="address">
						{{address.province}}{{address.city}}{{address.district}}{{address.detail}}
					</view>
				</view>
				<view class="arrow-box">
					<image src="/static/images/arrow_gray.png" mode=""></image>
				</view>
			</view>

			<!-- 积分 -->
			<view class="price-info">
				<view class="price-info-title">价格明细</view>
				<view class="points">
					<view class="left">
						<text class="text">商品总价</text>
					</view>
					<view class="right" style="align-items: baseline;">
						<text class="price-info-unit">¥</text>
						<text class="price-info-num">{{(orderData.totalPrice||0).toFixed(2)}}</text>
					</view>
				</view>
				<view class="points" @click="openCoupon()">
					<view class="left">
						<text class="text">优惠券</text>
					</view>
					<view class="right">
						<text class="text">{{couponText}}</text>
						<image src="/static/images/arrow4.png" mode=""></image>
					</view>
				</view>
				<view class="points">
					<view class="left">
						<text class="text">运费</text>
					</view>
					<view class="right">
						<text class="text"
							v-if="address!=null">{{orderData.payDelivery==null||orderData.payDelivery==0?'免运费':orderData.payDelivery.toFixed(2)}}</text>
						<text class="text" v-if="address==null">--</text>
					</view>
				</view>
				<view class="points">
					<view class="left">
						<text class="text">合计</text>
					</view>
					<view class="right" style="align-items: baseline;">
						<text class="price-info-unit">¥</text>
						<text class="price-info-num">{{(orderData.payPrice||0).toFixed(2)}}</text>
					</view>
				</view>
			</view>

		</view>
		<view class="btn-foot">
			<view class="right">
				<view class="total">
					<text class="label">合计：</text>
					<view class="price">
						<text class="unit">¥</text>
						<text class="num">{{(orderData.payPrice||0).toFixed(2)}}</text>
					</view>
				</view>
				<view class="btn" @click="submitOrder">提交订单</view>
			</view>
		</view>

		<popupBottom ref="popup" :visible.sync="couponVisible" title=" " bgColor="#f5f5f5" radius="30" maxHeight="60%">
			<view class="coupon" style="height:650rpx;">
				<div class="coupon-list" v-if="couponsList.length > 0">
					<div class="item acea-row row-center-wrapper" v-for="(item, index) in couponsList" :key="index">
						<div class="money">
							<image v-if="item.status==0&&item.useMinPrice<=orderData.totalPrice" class="img"
								src="../../static/images/coupon1.png" mode="widthFix"></image>
							<image v-if="item.status!=0||item.useMinPrice>orderData.totalPrice" class="img"
								src="../../static/images/coupon2.png" mode="widthFix"></image>
							<div style="z-index: 999;">
								￥<span class="num">{{ item.couponPrice }}</span>
							</div>
							<div class="pic-num">满{{ item.useMinPrice }}元可用</div>
						</div>
						<div class="text">
							<div class="condition line1">
								{{ item.couponTitle }}
							</div>
							<div class="data acea-row row-between-wrapper">
								<div>{{ item.limitTime }}到期</div>
								<div v-if=" item.status==0&&item.useMinPrice<=orderData.totalPrice"
									class="bnt bg-color-red" @click="couponSelect(item)">选择</div>
								<div v-else-if="item.status!=0" class="bnt " style="background-color: #878787;">已失效
								</div>
								<div v-else-if="item.useMinPrice>orderData.totalPrice" class="bnt "
									style="background-color: #878787;">未达门槛</div>
							</div>
						</div>
					</div>
				</div>
				<view v-if="couponsList.length == 0" class="no-data-box">
					<image src="/static/images/no_data.png" mode="aspectFit"></image>
					<view class="empty-title">暂无数据</view>
				</view>
			</view>
		</popupBottom>
	</view>
</template>

<script>
	import {
		createliveOrder, // 创建订单
		createReward, // 创建中奖订单
		userAddr, // 获取用户收货地址
		computed,
		computedReward
	} from "@/api/order.js"
	import {
		curCoupon
	} from "@/api/living.js"
	import popupBottom from '@/components/px-popup-bottom/px-popup-bottom.vue'
	export default {
		components: {
			popupBottom
		},
		data() {
			return {
				orderData: {},
				cityId: null,
				address: null,
				addressId: null,
				totalNum: null,
				orderKey: null,
				goodsId: null,
				liveId: null,
				orderList: [],
				temps: [],
				couponUserId: null,
				couponText: "请选择",
				couponsList: [],
				couponVisible: false,
				carts: [],
				checked: false,
				cartIds: null,
				confirmParam: [],
				type:'',

			}
		},

		onLoad(options) {
			// uni.$on('updateAddress', this.handleAddressUpdate);
			console.log("确认订单", options)
			this.orderKey = options.orderKey;
			this.liveId = options.liveId
			this.goodsId = options.goodsId
			this.productId = options.productId
			this.totalNum = Number(options.totalNum) || 0
			
			this.type=options.type
		},
		onShow() {
			this.getUserAddr()
			uni.$on('updateAddress', (e) => {
				this.address = e;
				this.addressId = e.addressId;
				this.cityId = e.cityId;
			});
		},
		mounted() {
			// uni.$on('updateAddress', (e) => {
			// 	this.address = e;
			// 	this.addressId = e.addressId;
			// });
		},
		onUnload() {
			// 页面卸载时移除监听，避免内存泄漏
			uni.$off('updateAddress', this.handleAddressUpdate);
		},
		beforeDestroy() {
			// 移除事件监听，避免内存泄漏
			uni.$off('updateAddress');
		},
		methods: {
			handleAddressUpdate(item) {
				console.log('接收到地址数据:', item);
				// 在这里处理地址数据
				this.cityId = item.cityId;
				this.address = item;
				this.addressId = item.addressId;
				if (this.type == 'win') {
					this.computedRewardOrder()
				} else {
					this.computedOrder()
				}
				// 更新页面显示或其他操作
			},
			// 获取用户收货地址
			getUserAddr() {
				userAddr().then(res => {
						if (res.code == 200) {
							console.log("用户收货地址>>>>", res.data)
							if (res.data && !this.address) {
								this.address = res.data;
							}
							if (res.data && res.data.cityId) {
								this.cityId = res.data.cityId;
							}
							if (this.type == 'win') {
								this.computedRewardOrder()
							} else {
								this.computedOrder()
							}
						} else {
							uni.showToast({
								title: res.msg,
								icon: 'none'
							});
						}
					},
					rej => {}
				);
			},

			// 查询创建订单信息
			computedOrder() {
				let data = {
					cityId: this.cityId || '',
					totalNum: this.totalNum,
					productId: this.productId,
					orderKey: this.orderKey,
					couponUserId: this.couponUserId || ''
				}

				computed(data).then(res => {
						if (res.code == 200) {
							console.log("查询创建订单信息>>>>", res.data)
							this.orderData = res.data
						} else {
							uni.showToast({
								title: res.msg,
								icon: 'none'
							});
						}
					},
					rej => {}
				);
			},
			// 查询中奖创建订单信息
			computedRewardOrder() {
				let data = {
					cityId: this.cityId || '',
					productId: this.productId,
					orderKey: this.orderKey,
					totalNum: 1,
				}
				computedReward(data).then(res => {
						if (res.code == 200) {
							console.log("查询创建订单信息>>>>", res.data)
							this.orderData = res.data
						} else {
							uni.showToast({
								title: res.msg,
								icon: 'none'
							});
						}
					},
					rej => {}
				);
			},


			// 创建订单
			createLiveOrder() {

				let data = {
					cityId: this.cityId,
					liveId: this.liveId,
					orderKey: this.orderKey,
					userName: this.address.realName,
					userPhone: this.address.phone,
					userAddress: this.address.province + ' ' + this.address.city + ' ' + this.address.district + ' ' +
						this.address
						.detail,
					cartId: "5",
					productId: this.productId,
					totalNum: this.totalNum,
					couponUserId: this.couponUserId

				}

				return createliveOrder(data).then(res => { // 添加 return
					if (res.code == 200) {
						this.orderList = res.order;
						return res.order; // 返回订单数据供后续使用
					} else {
						uni.showToast({
							title: res.msg,
							icon: 'none'
						});
						throw new Error(res.msg); // 抛出错误以便 submitOrder 捕获
					}
				});
			},

			couponSelect(item) {
				this.couponText = "-¥" + (item.couponPrice || 0).toFixed(2);
				this.couponUserId = item.id;
				this.couponVisible = false;
				if (this.type == 'win') {
					this.computedRewardOrder()
				} else {
					this.computedOrder()
				}

			},
			openCoupon() {
				console.log("点了优惠券列表")
				const data = {
					liveId: this.liveId,
					goodsId: this.goodsId
				};
				curCoupon(data).then(res => {
					this.couponVisible = true;
					this.couponsList = res.data
				})
			},
			openAddress() {
				uni.navigateTo({
					url: '/pages_user/user/address'
				})
			},
			// 提交订单
			async submitOrder() {
				try {
					if (this.orderKey == null) {
						uni.showToast({
							icon: 'none',
							title: '订单KEY不存在',
						});
						return;
					}
					if (this.address == null) {
						uni.showToast({
							icon: 'none',
							title: '收货地址不能为空',
						});
						return;
					}
					let orderList;
					orderList = await this.createLiveOrder(); // 等待订单数据返回
					console.log("orderList>>", orderList)
					const orderListStr = encodeURIComponent(JSON.stringify(orderList));
					uni.navigateTo({
						url: `/pages_shopping/live/paymentOrder?orderList=${orderListStr}&couponUserId=${this.couponUserId}`
					});
				} catch (error) {
					uni.showToast({
						title: res.msg,
						icon: 'none'
					});
				}
			},
		}
	}
</script>

<style lang="scss">
	.inner-box {
		padding: 20rpx 20rpx 140rpx;

		.address-box {
			margin-bottom: 20rpx;
			box-sizing: border-box;
			min-height: 171rpx;
			background: #FFFFFF;
			border-radius: 16rpx;
			background-repeat: no-repeat;
			background-size: 100% 30rpx;
			background-position: left bottom;
			padding: 38rpx 30rpx 36rpx;
			display: flex;
			align-items: center;
			justify-content: space-between;

			.left {
				width: 92%;

				.name-box {
					display: flex;
					align-items: center;

					.text {
						font-size: 32rpx;
						font-family: PingFang SC;
						font-weight: bold;
						color: #111111;
						line-height: 1;

						&.name {
							margin-right: 30rpx;
						}
					}
				}

				.address {
					font-size: 28rpx;
					font-family: PingFang SC;
					font-weight: 500;
					color: #666666;
					line-height: 42rpx;
					text-align: left;
					margin-top: 23rpx;
				}
			}

			.arrow-box {
				width: 12rpx;
				height: 23rpx;
				display: flex;
				align-items: cenetr;
				justify-content: cenetr;

				image {
					width: 100%;
					height: 100%;
				}
			}
		}

		.price-info {
			background: #FFFFFF;
			border-radius: 16rpx;

			&-title {
				padding: 30rpx 30rpx 20rpx 30rpx;
				font-family: PingFang SC, PingFang SC;
				font-weight: 500;
				font-size: 30rpx;
				color: #111;
			}

			&-unit {
				font-size: 24rpx;
			}

			&-num {
				font-size: 28rpx;
			}
		}

		.points {
			height: 88rpx;
			padding: 0 30rpx;
			background: #FFFFFF;
			border-radius: 16rpx;

			display: flex;
			align-items: center;
			justify-content: space-between;

			.left {
				display: flex;
				align-items: center;

				image {
					width: 28rpx;
					height: 28rpx;
					margin-right: 20rpx;
				}

				.text {
					font-size: 28rpx;
					font-family: PingFang SC;
					font-weight: 500;
					color: #666666;
				}
			}

			.right {
				display: flex;
				align-items: center;

				.text {
					font-size: 28rpx;
					font-family: PingFang SC;
					font-weight: 500;
					color: #111111;

				}

				image {
					margin-left: 15rpx;
					width: 14rpx;
					height: 24rpx;
				}
			}
		}
	}


	.btn-foot {
		box-sizing: border-box;
		width: 100%;
		height: 121rpx;
		background: #FFFFFF;
		padding: 16rpx 30rpx 16rpx 60rpx;
		display: flex;
		align-items: center;
		justify-content: flex-end;
		position: fixed;
		left: 0;
		bottom: 0;
		z-index: 99;

		.right {
			display: flex;
			align-items: center;

			.total {
				display: flex;
				align-items: flex-end;
				margin-right: 36rpx;

				.label {
					font-size: 26rpx;
					font-family: PingFang SC;
					font-weight: 500;
					color: #999999;
					line-height: 1.5;
				}

				.price {
					display: flex;
					align-items: flex-end;

					.unit {
						font-size: 32rpx;
						font-family: PingFang SC;
						font-weight: bold;
						color: #FF6633;
						line-height: 1.2;
						margin-right: 10rpx;
					}

					.num {
						font-size: 50rpx;
						font-family: PingFang SC;
						font-weight: bold;
						color: #FF6633;
						line-height: 1;
					}
				}
			}

			.btn {
				width: 200rpx;
				height: 88rpx;
				line-height: 88rpx;
				text-align: center;
				font-size: 30rpx;
				font-family: PingFang SC;
				font-weight: bold;
				color: #FFFFFF;
				background: #2BC7B9;
				border-radius: 44rpx;
			}
		}
	}

	.coupon {
		height: 100%;
	}

	/*优惠券列表公共*/
	.coupon-list {}

	.coupon-list .item {
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;
		width: 100%;
		height: 1.7 * 100rpx;
		margin-bottom: 0.16 * 100rpx;
	}

	.coupon-list .item .money {
		background-size: 100% 100%;
		width: 2.4 * 100rpx;
		height: 100%;
		color: #fff;
		font-size: 0.36 * 100rpx;
		font-weight: bold;
		text-align: center;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		position: relative;

	}

	.coupon-list .item .money .img {
		position: absolute;
		width: 2.4 * 100rpx;
		height: 100%;
		color: #fff;

	}

	.coupon-list .item .money .num {
		font-size: 0.6 * 100rpx;
	}

	.coupon-list .item .money .pic-num {
		font-size: 20rpx;
		z-index: 99;
	}


	.coupon-list .item .text {
		width: 4.5 * 100rpx;
		padding: 0 0.17 * 100rpx 0 0.24 * 100rpx;
		background-color: #fff;
		box-sizing: border-box;
	}

	.coupon-list .item .text .condition {
		font-size: 0.3 * 100rpx;
		color: #282828;
		height: 0.93 * 100rpx;
		line-height: 0.93 * 100rpx;
		border-bottom: 1px solid #f0f0f0;
	}

	.coupon-list .item .text .data {
		font-size: 0.2 * 100rpx;
		color: #999;
		height: 0.76 * 100rpx;
	}

	.coupon-list .item .text .data .bnt {
		width: 1.36 * 100rpx;
		height: 0.44 * 100rpx;
		border-radius: 0.22 * 100rpx;
		font-size: 0.22 * 100rpx;
		color: #fff;
		text-align: center;
		line-height: 0.44 * 100rpx;
		background-color: red;
	}
</style>