<template>
	<view class="container">
		<orderInfoAfter ref="orderInfoAfter" :listinfo="listinfo" v-if="listinfo.useType == 'dine-in-after'"></orderInfoAfter>
		<orderInfoBefore ref="orderInfoBefore" :listinfo="listinfo" v-else></orderInfoBefore>
		
		
		<paymentMethod ref="paymentMethod" v-if="amountVIP&&listinfo.status == 'unpaid' ||  listinfo.status == 'paying'" :amountVIP="amountVIP" @groupChange="groupChange"></paymentMethod>
		
		<view class="fixedview">
			<view class="flex-between" v-if="listinfo.status == 'unpaid' ||  listinfo.status == 'paying'">
				<view class="fixedview_one flex-start">
					<view class="fixedview_oneone"> 实付金额： </view>
					<view class="fixedview_onetow">
						<text>¥</text>{{listinfo.payAmount}}
					</view>
				</view>
				<view class="fixedview_tow" @tap="$u.debounce(goToPay,1000)">
					{{paymentBtnText}}
				</view>
			</view>
		</view>
		
		<u-popup :show="ispws" :round="20" mode="bottom" @close="ispws = false" height="500" :safeAreaInsetBottom="false">
			<view class="pay-info-wrap">
				<view class="info-wrap flex-between">
					<view class="close" @click="ispws = false">
						<u-icon name="close" color="#999999" size="40"></u-icon>
					</view>
					<text class="title">请输入支付密码</text>
					<view></view>
				</view>
				<view class="info-content">
					<payPasswordtwo ref="payPwd" :payAmount="listinfo.payAmount" @accountPayevent="accountPayevent" v-if="ispws"></payPasswordtwo>
				</view>
			
			</view>
		</u-popup>
	</view>
</template>

<script>
	import payPasswordtwo from '@/components/payPasswordtwo.vue'
	import orderInfoAfter from '../components/orderInfoAfter.vue'
	import orderInfoBefore from '../components/orderInfoBefore.vue'
	import paymentMethod from '../components/paymentMethod.vue'
	export default {
		components: {
			payPasswordtwo,
			orderInfoAfter,
			orderInfoBefore,
			paymentMethod,
		},
		data() {
			return {
				ispws: false,  		// 输入支付密码
				pay_type: 1,
				radiovalue: 1,
				paymentBtnText: "余额支付",
				orderId: '',
				listinfo: {},
				listinfoid: null,
				status: [],
				amountVIP: null,
				srcimge: 'https://czg-qr-order.oss-cn-beijing.aliyuncs.com/wx.jpg'
			};
		},
		async onLoad(e) {
			console.log(e)
			this.orderId = e.orderId
		},
		onShow() {
			this.orderorderInfo()
			this.getAount();
		},
		onUnload() {
			this.ispws = false
			uni.switchTab({
				url: '/pages/order/order'
			})
		},
		methods: {
			
			/**
			 * 获取会员信息
			 */
			async getAount() {
				let res = await this.api.shopUserInfo({
					"shopId": uni.cache.get('shopId'),
					"userId": uni.cache.get('userInfo').id,
				})
				if (res.code == 0) {
					console.log("会员信息===",res)
					this.amountVIP = res.data;
				}
			},
			
			groupChange (e) {
				this.radiovalue = e.type;
				this.paymentBtnText = e.name;
			},
			/**
			 * 获取订单信息
			 */
			async orderorderInfo() {
				let res = await this.api.orderorderInfo({
					orderId: this.orderId
				})
				if (res.code == 0) {
					this.listinfo = res.data;
					this.listinfoid = res.data.orderId;
					uni.cache.set('shopId',res.data.shopId)
					if (this.listinfo.useType == "	") {
						//堂食先付费
					}
				}
			},
			
			/**
			 * 去充值
			 */
			goRecharge() {
				uni.pro.navigateTo('/pages/member/index', {
					shopId: this.shopId
				})
			},
			
		
			
			
			
			/**
			 * 去支付
			 */
			goToPay(){
				if ( this.radiovalue == 2 || this.radiovalue == 3 && this.listinfo.payAmount <= 0 ) {
					uni.showToast({
						title: "支付金额必须大于0",
						icon: 'none'
					})
					return;
				}
				if (this.radiovalue == 2 || this.radiovalue == 3) {
					this.wechatPay() //微信支付
				} else {
					// 先判断是否设置支付密码。0是没设置。没设置的情况下跳转到设置页面。有的话输入支付密码
					// console.log(isPwd,'是否设置了支付密码')
					if ( this.amountVIP.isVip == 0 ) {//非会员情况
						
						this.goRecharge();
					} else {
						if (uni.cache.get('userInfo').isPwd == 0) {
							uni.navigateTo({
								url: '/pages/member/setPassword?shopUserInfo=' + JSON.stringify(this.amountVIP)
							})
						} else {
							uni.hideLoading()
							// this.payPasswordShow = false;
							this.ispws = true
							
						}
					}
					
				}
			},
			
			/**
			 * 余额支付
			 * @param {Object} pwd
			 */
			async accountPayevent(pwd) {
				this.ispws = false;
				console.log(pwd)
				let res = await this.api.accountPay({
					orderId: this.listinfoid,
					memberId: this.amountVIP.id,
					pwd: pwd
				})
				if (res.code == 0) {
					// data ->1 支付成功
					// ->2 余额不足
					// ->3 未设置支付密码，
					// ->4 不是会员，
					if (res.data == 1) {
						uni.showToast({ title: "支付成功",icon:'none'})
						let _this = this
				
						uni.requestSubscribeMessage({
							tmplIds:["z0fUG7-jhSfYCrw6poOvSRzh4_hgnPkm_5C7E5s5bCQ","AV-KybUHaK3KtFVLqpy6PHccHBS7XeX__mOM4RbufnQ"],
							complete() {
								uni.redirectTo({
									url: '/pagesOrder/order_detail/index?orderId=' + _this.listinfoid
								});
							},
						})
			
					} else if (res.data == 2) {
						uni.showToast({ title: "余额不足",icon:'none'})
						setTimeout(() => {
							// 去充值
							this.goRecharge()
						}, 1500)
					} else if (res.data == 3) {
						uni.showToast({ title: "未设置支付密码",icon:'none'})
						setTimeout(() => {
							uni.navigateTo({
								url: '/pages/member/setPassword?shopUserInfo=' + JSON.stringify(this.amountVIP)
							})
						}, 1500)
			
					} else if (res.data == 4) {
						uni.showToast({ title: "非会员请充值",icon:'none'})
						setTimeout(() => {
							// 去充值
							this.goRecharge()
						}, 1500)
					}
			
				}
			
			},
			
			/**
			 * 微信支付
			 */
			async wechatPay() {
				let res = await this.api.payorderPay({
					orderId: this.orderId,
					// #ifdef MP-WEIXIN
					payType: 'wechatPay',
					// #endif
					// #ifdef MP-ALIPAY
					payType: 'aliPay',
					// #endif
				}) //判断是否支付成功
				if (res.code == 0) {
					uni.showLoading({
						title: '加载中',
						mask: true
					})
					// #ifdef MP-WEIXIN
					uni.requestPayment({
						provider: 'wxpay', //支付类型-固定值
						partnerid: res.data.appId, // 微信支付商户号
						timeStamp: res.data.timeStamp, // 时间戳（单位：秒）
						nonceStr: res.data.nonceStr, // 随机字符串
						package: res.data.package, // 固定值
						signType: res.data.signType, //固定值
						paySign: res.data.paySign, //签名
						success: (res) => {
							let _this = this
							uni.requestSubscribeMessage({
								tmplIds: ['z0fUG7-jhSfYCrw6poOvSRzh4_hgnPkm_5C7E5s5bCQ'],
								complete() {
									uni.showToast({
										title: "支付成功"
									})
									this.paymodfiyOrderInfo()
									setTimeout(res => {
										uni.hideLoading()
										uni.switchTab({
											url: '/pages/order/order'
										});
									}, 500)
								},
							})
						},
						fail: (err) => {
							uni.showToast({
								icon: 'none',
								title: '支付失败'
							})
							setTimeout(res => {
								uni.hideLoading()
								uni.switchTab({
									url: '/pages/order/order'
								});
							}, 500)

						}
					});
					// #endif	
					
					// #ifdef MP-ALIPAY
					uni.requestPayment({
						provider: 'alipay', //支付类型-固定值
						orderInfo: res.data.tradeNo, // 微信支付商户号
					
						success: (res) => {
							let _this = this
							// uni.requestSubscribeMessage({
							// 	tmplIds: ['z0fUG7-jhSfYCrw6poOvSRzh4_hgnPkm_5C7E5s5bCQ'],
							// 	complete() {
							// 		uni.showToast({
							// 			title: "支付成功"
							// 		})
							// 		// uni.cache.set('shopUser', '') //删除shopUser
									
							// 	},
							// })
							_this.paymodfiyOrderInfo()
							uni.redirectTo({
								url: '/pagesOrder/order_detail/index?orderId=' + _this.listinfoid
							});
						},
						fail: () => {
							uni.hideLoading()
						}
					});
					// #endif
				}
			},
			
			/**
			 * 支付完成后请求
			 */
			async paymodfiyOrderInfo() {
				let res = await this.api.paymodfiyOrderInfo({
					orderId: this.listinfo.orderId,
				})
			},
			
			/**
			 * 复制订单号
			 * @param {Object} e
			 */
			copyHandle(e) {
				uni.setClipboardData({
					data: e,
					success() {
						uni.showToast({
							title: '复制成功',
							icon: 'none'
						});
					}
				});
			},
			
		},
	};
</script>

<style scoped lang="scss">
	::v-deep page{
		background-color: #F7F7F7;
	}
	
	.container {
		padding: 32rpx 28rpx 224rpx 28rpx;
	}
	
	.card_box{
		background-color: #fff;
		// box-shadow: 0rpx 8rpx 12rpx 2rpx rgba(87,86,86,0.35);
		position: relative;
		width: 100%;
		height: 100%;
		box-shadow: 0rpx 4rpx 12rpx 2rpx rgba(87,86,86,0.35);
		border-radius: 18rpx;
		.card_head_box{
			width: 100%;
			display: flex;
			justify-content: space-between;
			position: absolute;
			top: -22.5rpx;
			padding: 0 44rpx;
			.card_head_item{
				width: 45rpx;
				height: 45rpx;
				background-color: #f9f9f9;
				border-radius: 50%;
				box-shadow: inset 0rpx -13rpx 18rpx -16rpx rgba(87, 86, 86, 0.35);
			}
		
		}
	}
	
	.card {
		// background-color: #fff;
		border-radius: 20upx;
		margin-bottom: 28upx;
		position: relative;
		.head {
			display: flex;
			justify-content: space-between;
			padding: 50rpx 34rpx 32rpx 34rpx;
			border-bottom: 2rpx dashed #E3E3E3;
			.head_left{
				.shopName{
					font-weight: bold;
					font-size: 32rpx;
					color: #333333;
				}
				.tableName{
					font-weight: 400;
					font-size: 28rpx;
					color: #333333;
				}
			}

			.status {
				text{
					font-weight: 500;
					font-size: 28rpx;
					color: #333333;
				}
			}
		}
		
		.number-wrap {
			display: flex;
			flex-direction: column;
			align-items: center;
			margin-top: 32rpx;
			.t{
				font-weight: 400;
				font-size: 28rpx;
				color: #333333;
			}
			.number {
				font-weight: bold;
				font-size: 56rpx;
				color: #333333;
			}
		}
		

		.price {
			.i {
				font-size: 20upx;
			}

			.num {
				font-size: 38upx;
			}
		}
		
		.shop-box{
			padding: 36rpx 34rpx 30rpx 34rpx;
			border-bottom: 2rpx dashed #E3E3E3;
			.shop-head{
				display: flex;
				justify-content: space-between;
				align-items: center;
				.shop-head-left{
					display: flex;
					align-items: center;
					.tag-wrap{
						width: 80rpx;
						height: 48rpx;
						background: #FFFFFF;
						border-radius: 10rpx 10rpx 10rpx 10rpx;
						border: 2rpx solid #E3AD7F;
						margin-right: 18rpx;
						display: flex;
						align-items: center;
						justify-content: center;
						.tag{
							font-weight: 400;
							font-size: 24rpx;
							color: #E3AD7F;
						}
					}
					.title{
						font-weight: bold;
						font-size: 28rpx;
						color: #333333;
					}
					
				}
			}
			.shop-info {
				margin-top: 32rpx;
				.item:nth-child(1) {
					margin-top: 0;
				}
			
				.item {
					margin-bottom: 32rpx;
					display: flex;
					.cover{
						
					}
					.info {
						flex: 1;
						display: flex;
						flex-direction: column;
						padding-left: 16upx;
						.productName{
							font-weight: bold;
							font-size: 28rpx;
							color: #333333;
							margin-top: 20rpx;
						}
						.productSkuName{
							font-weight: 400;
							font-size: 24rpx;
							color: #999999;
							  display: -webkit-box;
							  -webkit-box-orient: vertical;
							  -webkit-line-clamp: 3;
							  overflow: hidden;
							  text-overflow: ellipsis;
						}
						.n {
							font-size: 24upx;
							color: #999;
						}
					}
					.price{
						display: flex;
						flex-direction: column;
						align-items: flex-end;
						padding-left: 68rpx;
						.priceAmount{
							font-weight: 500;
							font-size: 28rpx;
							color: #333333;
							margin-top: 26rpx;
						}
						.num{
							font-weight: 400;
							font-size: 24rpx;
							color: #999999;
							margin-top: 22rpx;
						}
					}
				}
			}
			.total-wrap {
				width: 100%;
				display: flex;
				justify-content: space-between;
				font-weight: 500;
				font-size: 28rpx;
				.price{
					font-weight: bold;
					font-size: 32rpx;
				}
			}
		}

		

		.order_footer{
			display: flex;
			flex-direction: column;
			padding: 34rpx;
			position: relative;
			.order_footer_icon{
				width: 100%;
				position: absolute;
				top: -22.5rpx;
				left: 0;
				display: flex;
				justify-content: space-between;
				.order_footer_left_icon{
					width: 45rpx;
					height: 45rpx;
					margin-left: -22.5rpx;
					background-color: #f9f9f9;
					border-radius: 50%;
					box-shadow: inset -20rpx 0rpx 22rpx -20rpx rgba(87, 86, 86, 0.35);
					
				}
				.order_footer_right_icon{
					width: 45rpx;
					height: 45rpx;
					margin-right: -22.5rpx;
					background-color: #f9f9f9;
					border-radius: 50%;
					box-shadow: inset 13rpx 0rpx 16rpx -9rpx rgba(87, 86, 86, 0.35);
				
				}
			}
			.title{
				font-weight: bold;
				font-size: 28rpx;
				color: #333333;
			}
			.order-info {
				.row {
					display: flex;
					justify-content: space-between;
					padding-top: 32upx;
			
					.t {
						font-weight: normal;
						font-size: 28rpx;
						color: #333333;
					}
			
					.info {
						font-weight: 400;
						font-size: 24rpx;
						color: #666666;
					}
				}
			}
		}

		
	}
	
	.pay-info-wrap{
		padding: 0;
		box-sizing: border-box;
		.info-wrap{
			padding: 64rpx 30rpx 30rpx 30rpx;
			box-sizing: border-box;
			.title{
				align-self: center;
				font-size: 32rpx;
				color: #333;
				font-weight: bold;
			}
		}
		
		.info-content{
			.pay-title {
				display: flex;
				align-items: flex-end;
				justify-content: center;
				font-weight: bold;
				width: 100%;
				font-size: 48rpx;
				color: #333;
				margin-top: 48rpx;
				text {
					font-size: 60rpx;
					color: #333;
				}
			}
			
			.pay-password {
				display: flex;
				justify-content: space-between;
				align-items: center;
				margin-top: 64rpx;
			
				.list {
					width: 88rpx;
					height: 88rpx;
					display: flex;
					align-items: center;
					justify-content: center;
					border: 2rpx solid #999;
					border-radius: 8rpx;
					text {
						font-size: 32rpx;
					}
				}
			
			}
			
			.hint {
				display: flex;
				align-items: center;
				justify-content: center;
				width: 100%;
				height: 100rpx;
			
				text {
					font-size: 28rpx;
					color: #ccc;
				}
			}
		}
		
	}

	.fixedview {
		position: fixed;
		bottom: 0;
		left: 0;
		width: 100%;
		
		.flex-between {
			width: 100%;
			padding: 36rpx 54rpx 102rpx 54rpx;
			background: #FFFFFF;

			.fixedview_one {
				display: flex;
				align-items: flex-end;
				.fixedview_oneone {
					font-weight: 400;
					font-size: 28rpx;
					color: #666666;
				}

				.fixedview_onetow {
					font-weight: bold;
					font-size: 32rpx;
					color: #333333;

					text {
						font-size: 24rpx;
					}
				}
			}

			.fixedview_tow {
				width: 140rpx;
				height: 56rpx;
				line-height: 56rpx;
				text-align: center;
				background: #E3AD7F;
				border-radius: 12rpx 12rpx 12rpx 12rpx;
				font-weight: 400;
				font-size: 28rpx;
				color: #FFFFFF;
			}
		}
	}
</style>