<template>
	<view class="order-pages">
		<view class="order-info">
			<!-- 订单状态 -->
			<view class="order-status">
				<view class="status-title">{{orderInfo.orderStateDictValue}}</view>
				<view v-if="orderInfo.orderState=='WAIT_PAY'" class="status-care">
					请在 <text>29</text>分钟内付款，过期系统将自动取消订单
				</view>
				<view v-if="orderInfo.orderState=='CANCEL'" class="status-care">
					超时未支付，系统已自动取消订单
				</view>
			</view>
			<u-gap height="10" bg-color="#f8f8f8"></u-gap>
			<!-- 地址 -->
			<view class="order-address">
				<view>
					<text class="address-title">{{orderInfo.receiveAddress}}</text>
				</view>
				<view>
					<text style="margin-right: 30upx;">{{orderInfo.receiverName}}</text>
					<text>{{orderInfo.receiverPhone}}</text>
				</view>
			</view>
			<u-gap height="10" bg-color="#f8f8f8"></u-gap>
			<!-- 商品列表 -->
			<view class="bundle-list" v-for="item in orderInfo.orderGoodsList" :key="item.id">
				<view class="img-cont">
					<image :src="item.goodsImages"></image>
				</view>
				<view>
					<view class="ellipsis-two">{{item.goodsName}}</view>
					<view class="bundle-num">
						<view><text class="price-num">{{item.payGold}}</text> <text class="price-text">乐豆</text></view>
						<view>X {{item.buyQty}}</view>
					</view>
				</view>
			</view>
			<u-gap height="10" bg-color="#f8f8f8"></u-gap>
			<!-- 订单信息 -->
			<u-cell-group>
				<u-cell-item title="订单编号" :value-style="{color: '#000',fontSize: '28upx'}" :arrow="false">
					{{orderInfo.orderSn}}
				</u-cell-item>
				<u-cell-item title="下单时间" :value-style="{color: '#000',fontSize: '28upx'}" :arrow="false">
					{{orderInfo.orderTime}}
				</u-cell-item>
				<u-cell-item v-if="orderInfo.payTime" title="支付时间" :value-style="{color: '#000',fontSize: '28upx'}" :arrow="false">
					{{orderInfo.payTime}}
				</u-cell-item>
				<u-gap height="10" bg-color="#f8f8f8"></u-gap>
				<u-cell-item title="商品合计" :value-style="{color: '#000',fontSize: '28upx'}" :arrow="false">
					<text class="price-num">{{orderInfo.originalGold}}</text> <text class="price-text">乐豆</text>
				</u-cell-item>
				<u-cell-item title="运费" :value-style="{color: '#000',fontSize: '28upx'}" :arrow="false">
					免运费
				</u-cell-item>
				<u-cell-item :title="(orderInfo.orderState=='WAIT_PAY'||orderInfo.orderState=='CANCEL') ? '待支付':'实际支付'" :value-style="{color: '#000',fontSize: '28upx'}"
				 :arrow="false">
					<text class="price-num">{{orderInfo.originalGold}}</text> <text class="price-text">乐豆</text>
				</u-cell-item>
			</u-cell-group>
		</view>
		<view v-if="orderInfo.orderState=='WAIT_PAY'" class="footer">
			<u-button @click="toPay" type="error">去支付</u-button>
		</view>
		<!-- 提示用户设置支付密码 -->
		<u-modal v-model="showSetPswModal" 
		content="请先设置支付密码,才能使用乐豆" 
		show-cancel-button 
		confirm-text="去设置" 
		cancel-text="暂时放弃"
		@confirm="toSetPwd"
		@cancel="showSetPswModal=false"
		></u-modal>
		<!-- 确认取消弹窗 -->
		<u-modal v-model="showLeavePsw" 
		title="确认放弃支付吗？"
		content="您的订单在30分钟内未支付将被取消" 
		show-cancel-button 
		confirm-text="确认放弃" 
		cancel-text="继续支付"
		@confirm="canclePay"
		@cancel="payAgain"
		></u-modal>
		<!-- 确认支付弹窗 -->
		 <u-popup mode="center" closeable @close="showLeavePsw=true" v-model="showInputPsw" width="500rpx" >
			<view class="slot-content">
				<view>确认支付</view>
				<view class="text-cont">
					<text class="num-big">{{totalPrice}}</text>乐豆
				</view>
				<view class="footer">
					<u-input v-model="password" 
					@confirm="toPayOrder" 
					maxlength="30" input-align="center" type="password" 
					placeholder="请输入支付密码" />
				</view>
				<view class="fot-btn">
					<u-button  @click="toPayOrder" type="error" >确认支付</u-button>
				</view>
			</view>
		</u-popup>
	</view>
</template>

<script>
	import {
		orderDetail,
		signPay,
		existPayPwd
	} from '@/api/order.js'
	import {
		getLookUpDatas
	} from '@/api/data.js'
	export default {
		data() {
			return {
				orderInfo: {},
				totalPrice: 0, // 支付合计
				password: '', // 支付密码
				showSetPswModal: false,  // 设置支付密码弹窗
				showInputPsw: false, // 打开输入密码弹窗
				showLeavePsw: false, // 打开确定放弃弹窗
				orderStatusList: []
			}
		},
		onLoad(options) {
			// 监听设置密码是否成功
			uni.$once('setPswSuccess', this.setPsw)
			if (options.id) {
				console.log(options.id)
				this.getOrderDetail(options.id)
				this.orderStatusList = this.$store.state.vuex_payStatus
			}
		},
		methods: {
			// 获取订单详情
			getOrderDetail(id) {
				let payTypeList = this.$store.state.vuex_payType
				orderDetail({
					id: id
				}).then(res => {
					if (res.status == 200) {
						this.orderInfo = res.data
					} else {
						uni.showToast({
							title: res.message,
							icon: 'none'
						})
					}
				})
			},
			// 跳转到设置支付密码页
			toSetPwd () {
				uni.navigateTo({
					url:"/pages/userCenter/userInfo/paymentPwd"
				})
			},
			// 设置密码成功, 打开输入密码弹窗
			setPsw (e) {
				if (e.success) {
					this.showInputPsw = true
				}
			},
			//确认放弃
			canclePay() {
				this.showLeavePsw = false
				this.showInputPsw = false
			},
			// 继续支付
			payAgain () {
				this.showLeavePsw = false
				this.showInputPsw = true
			},
			// 支付 判断用户是否设置过支付密码
			toPay() {
				this.totalPrice = this.orderInfo.originalGold
				// 判断用户是否设置过支付密码
				existPayPwd().then(res=>{
					console.log(res,'rrrrrr')
					if(res.status == 200) {
						// 设置过支付密码,输入密码
						if(res.data) {
							this.showInputPsw = true
						} else {
							// 没设置过支付密码,提示设置密码
							 this.showSetPswModal = true
						}
					} else {
						uni.showToast({
							title: res.message,
							icon: 'none'
						})
					}
				})
			},
			// 支付
			toPayOrder() {
				let id = this.orderInfo.id
				let params = {
					payPwd: this.password,
					id: id
				}
				signPay(params).then(res=>{
					this.btnLoading = false
					if(res.status == 200) {
						// 跳转到支付完成界面
						uni.navigateTo({
							url:"/pages/toOrder/payFinish?id=" + id
						})
					} else{
						uni.showToast({
							title: res.message,
							icon: 'none'
						})
					}
				})
			},
		},
	}
</script>

<style lang="scss">
	page {
		height: 100%;
		background-color: #fff;
	}

	.order-pages {
		width: 100%;
		height: 100%;
		padding: 0 24upx;
		display: flex;
		flex-direction: column;

		.order-info {
			width: 100%;
			flex: 1;
			overflow-y: scroll;

			// 状态
			.order-status {
				padding: 30upx 0;
				text-align: center;

				.status-title {
					font-size: 36upx;
					color: #000;
				}

				.status-care {
					font-size: 24upx;
					margin-top: 10upx;
					color: #a9aaac;

					>text {
						color: red;
					}
				}
			}

			// 地址
			.order-address {
				font-size: 32upx;
				padding: 20upx 0;

				>view {
					line-height: 60upx;
				}

				.address-title {
					color: #000;
				}
			}

			// 订单中商品列表
			.bundle-list {
				display: flex;
				padding: 20upx 10upx;
				font-size: 28upx;
				border-bottom: 1px solid #F8F8F8;

				.img-cont {
					width: 158rpx;
					height: 140upx;
					border-radius: 15upx;
					overflow: hidden;

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

				>view {
					&:last-child {
						flex: 1;
						margin-left: 20upx;
						padding: 10upx 0;
						display: flex;
						flex-direction: column;
						justify-content: space-between;
					}
				}

				.bundle-num {
					display: flex;
					justify-content: space-between;
				}
			}

			.price-text {
				font-size: 20upx;
				margin-left: 10upx;
			}

			.price-num {
				font-size: 32upx;
				color: red;
			}

			.u-cell {
				padding: 10rpx 32rpx;
			}
		}

		.footer {
			padding: 20rpx;
		}
		// 支付密码弹窗
		.slot-content{
			padding: 30upx 0;
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: space-between;
			.text-cont{
				width: 100%;
				padding: 60upx 0;
				text-align: center;
				.num-big{
					font-size: 40upx;
					color: red;
				}
			}
			.footer{
				width: 80%;
				border-bottom: 1px solid #b1b1b1;
				margin-bottom: 30upx;
			}
		}

	}
</style>
