<template>
	<view class="order-detail">
			<view class="status-box">
				<view class="text-box">
					<view class="status">
						{{info.orderType | filterType}}
					</view>
					<view class="notice">
<!-- 						{{info.orderType =="CLOSE"||info.orderType =="USED"?"感谢您对慧研学惠生活的信任，期待您再次选择":''}} -->
						感谢您对慧研学惠生活的信任，期待您再次选择
					</view>
				</view>
			</view>
			
			<view class="shop-box">
				<view class="shop-name">
					{{info.shopName}}
				</view>
				<view class="address">
					{{info.shopAddr}}
				</view>
			</view>
			
			<view class="content info">
				<view class="order-info">
					<image class="icon" :src="info.goodsList[0].goodsImg" mode=""></image>
					<view class="shop-info">
						<view class="title">
							{{info.goodsList[0].goodsName}}
						</view>
						<view class="price-box">
							<view class="price">
								￥{{info.goodsAmount}}
							</view>
							<view class="code-btn" v-if="info.orderType == 'WAIT_USE'&&info.goodsList[0].goodsName!='二维码支付'"  @click="checkCode">
								查看券码
							</view>
						</view>
						<!-- 有extend并且不是虚拟商品 -->
						<view class="start-time" v-if="info.extend&&!isVisual">
							出发时间：{{info.extend}}
						</view>
						
					</view>
				</view>
				
				<view class="item">
					<view class="label">
						订单金额
					</view>
					<view class="value black">
						￥{{info.goodsAmount}}
					</view>
				</view>
				
				<view class="item" >
					<view class="label">
						优惠券
					</view>
					<view class="value red">
						-￥{{info.discountAmount}}
					</view>
				</view>
				
				<view class="item">
					<view class="label">
						应付款
					</view>
					<view class="value">
						共{{info.goodsList.length}}件商品 已优惠：<text class="red">￥{{info.discountAmount}}</text>&nbsp; &nbsp; 合计&nbsp; &nbsp;<text class="red fs28">￥{{info.payAmount}}</text>
					</view>
				</view>
				
			</view>
			<view class="input-box" v-if="isVisual">
				<view class="label">
					充值账号
				</view>
				<view class="value">
					{{JSON.parse(info.extend).account}}
				</view>
			</view>
			
			<view class="content">
				<view class="item">
					<view class="label">
						订单编号
					</view>
					<view class="value">
						{{info.orderNo}}
					</view>
				</view>
				
				<view class="item">
					<view class="label">
						支付订单编号
					</view>
					<view class="value">
						{{info.paymentNo || '-'}}
					</view>
				</view>
				<view class="item">
					<view class="label">
						优惠券编号
					</view>
					<view class="value">
						65456464156486
					</view>
				</view>
				<view class="item">
					<view class="label">
						付款方式
					</view>
					<view class="value">
						{{info.paymentWay | filterPay}}
					</view>
				</view>
				<view class="item">
					<view class="label">
						创建时间
					</view>
					<view class="value">
						{{$u.timeFormat(info.createTime,'yyyy-mm-dd hh:MM:ss')}}
					</view>
				</view>
				
				<view class="item">
					<view class="label">
						成交时间
					</view>
					<view class="value">
						{{$u.timeFormat(info.paymentTime,'yyyy-mm-dd hh:MM:ss')}}
					</view>
				</view>
			</view>
			<button type="default" :loading="btnLoading" class="pay-btn" v-if="info.orderType == 'WAIT_PAYMENT'" @click="pay" >立即支付</button>
			<button type="default" :loading="btnLoading" class="pay-btn" v-if="info.orderType == 'APPLY_REFUND'" @click="cancelReply" >取消退款</button>
			<view class="content apply-box" v-else-if="info.orderType == 'WAIT_USE'||info.orderType == 'USED'||info.orderType == 'CLOSE'" @click="apply">
				<view class="label">
					退款申请
				</view>
				<view class="value">
					如引发商品争议，可申请平台介入处理
				</view>
				<image class="jiantou" src="../../static/jiantou-icon.png" mode=""></image>
			</view>
			
			<!-- 二维码 -->
			<u-overlay :show="show" v-if="show" :opacity="0.6">
					<view class="wrap"  @click.stop="close">
						<uqrcode ref="uqrcode" type="2d" auto canvas-id="qrcode" :value="codeData" :loading="loading" :options="{ margin: 20 }">
							 <template v-slot:loading>
								<text style="color: black;">拼命加载中...</text>
							  </template>
						</uqrcode>
					</view>
				</u-overlay>
		
	</view>
</template>

<script>
	import {qrCode} from '@/api/order.js'
	import {payDetails,queryPayOrder,unRefund} from '@/api/payment.js'
	export default {
		data() {
			return {
				isVisual:false,//是否是虚拟商品
				codeData:'123',
				show:false,
				loading:false,
				btnLoading:false,
				oldBright:0,
				info:{
					goodsList:[]
				},
				
			}
		},
		filters: {
			filterType: function(val) {
				if(val == 'APPLY_REFUND'){
					return '退款审核中'
				}else if(val == 'CLOSE'){
					return '关闭订单'
				}else if(val == 'REFUNDED'){
					return '已退款'
				}else if(val == 'REFUSAL_REFUND'){
					return '拒绝退款'
				}else if(val == 'USED'){
					return '订单已完成'
				}else if(val == 'WAIT_PAYMENT'){
					return '待付款'
				}else if(val == 'WAIT_USE'){
					return '待使用'
				}
			},
			filterPay(val){
				if(val == 'wx.unifiedOrder'){
					return '微信支付'
				}else if(val == 'trade.create'){
					return '支付宝支付'
				}else if(val == 'uac.miniOrder'){
					return '云闪付支付'
				}else{
					return '-'
				}
			}
		},
		methods: {
			checkCode() {
				this.codeData = ''
				this.$nextTick(()=>{
					
					this.show = true
					this.loading = true
					let that = this
					// uni.getScreenBrightness({
					// 	success(res) {
					// 		// 获取用户手机亮度 保存起来 
					// 		that.oldBright = res.value
					// 		setTimeout(()=>{
					// 			uni.setScreenBrightness({
					// 				value:1
					// 			})
					// 		},200)
					// 	}
					// })
					qrCode(this.info.orderNo).then(res=>{
						this.loading = false
						if(res.state == 'Success'){
							this.codeData = res.content
						}
					})
				})
			},
			close(){
				this.show = false
				// uni.setScreenBrightness({
				// 	value:this.oldBright
				// })
			},
			apply(){
				let that = this
				uni.navigateTo({
					url:'./refund',
					success: function(res) {
					  // 通过eventChannel向被打开页面传送数据
					  res.eventChannel.emit('orderInfo', that.info)
					}
				})
			},
			// 获取订单详情
			payDetails(orderNo){
				payDetails(orderNo).then(res=>{
					this.info = res.content
					try{
						let extend = JSON.parse(this.info.extend)
						if(extend.account){
							this.isVisual = true
						}
					}catch(e){
						//TODO handle the exception
					}
				})
			},
			// 支付
			pay(){
				if (this.btnLoading) return
				this.btnLoading = true
				uni.showLoading({
					title: '支付中'
				})
				let that = this
				let miniPayRequest = JSON.parse(this.info.miniPayRequest)
				uni.requestPayment({
					"provider": "wxpay",
					"orderInfo": miniPayRequest,
					"appid": miniPayRequest.appId, // 微信开放平台 - 应用 - AppId，注意和微信小程序、公众号 AppId 可能不一致
					"paySign": miniPayRequest.paySign,
					"nonceStr": miniPayRequest.nonceStr, // 随机字符串
					"package": miniPayRequest.package, // 固定值
					// "prepayid":  miniPayRequest.package, // 统一下单订单号 
					"timeStamp": miniPayRequest.timeStamp, // 时间戳（单位：秒）
					"signType": miniPayRequest.signType, //签名算法
					success(msg) {
						console.log('msg', msg);
						queryPayOrder(that.info.orderNo).then(res1 => {
							if (res1.state == 'Success') {
								uni.hideLoading()
								uni.showToast({
									title: '支付成功',
									icon: 'success'
								})
								that.btnLoading = false
								that.payDetails(that.info.orderNo)
							}
						})
					},
					fail(e) {
						that.btnLoading = false
						uni.hideLoading()
						uni.showToast({
							title: '取消支付',
							icon: 'fail'
						})
						// 取消支付后，获取支付信息以备再次支付
						that.payDetails(that.info.orderNo)
						console.log('err', e,this);
					}
				})
			},
			// 取消退款申请
			cancelReply(){
				if (this.btnLoading) return
				this.btnLoading = true
				uni.showLoading({
					title: '取消中'
				})
				unRefund(this.info.orderNo).then(res=>{
					this.btnLoading = false
					uni.hideLoading()
					
					if (res.state == 'Success') {
						this.payDetails(this.info.orderNo)
						uni.showToast({
							title:'取消成功',
							icon:'success'
						})
					}
				})
			}
		},
		onReady() {
			
		},
		onLoad(options) {
			this.info.orderNo = options.id
		},
		onShow() {
			this.payDetails(this.info.orderNo)
		},
		created() {
			// this.info = JSON.parse(uni.getStorageSync('order'))
		}
	}
</script>

<style lang="scss">
.order-detail{
	background: #F9F9F9;
	min-height: 100vh;
	.status-box{
		padding: 30rpx 30rpx 60rpx;
		display: flex;
		justify-content: space-between;
		.text-box{
			color: #181818;
			.status{
				font-weight: bold;
				font-size: 32rpx;
			}
			.notice{
				font-size: 24rpx;
				margin-top: 20rpx;
			}
		}
	}
	
	.shop-box{
		width: 690rpx;
		margin: 0 30rpx;
		padding: 24rpx 24rpx 30rpx;
		background: #fff;
		border-radius: 16rpx;
		margin-top: -30rpx;
		box-sizing: border-box;
		.shop-name{
			font-size: 32rpx;
			color: #181818;
		}
		.address{
			color: #999999;
			font-size: 24rpx;
			margin-top: 15rpx;
		}
	}
	
	.black{
		color: #222222!important;
	}
	
	.red{
		color: red!important;
	}
	.fs28{
		font-size: 28rpx!important;
		font-weight: bold;
	}
	
	.input-box{
		margin: 20rpx 30rpx;
		padding: 28rpx 24rpx;
		background: #FFFFFF;
		border-radius: 16rpx 16rpx 16rpx 16rpx;
		display: flex;
		align-items: center;
		justify-content: space-between;
		.label {
			color: #222;
			font-size: 28rpx;
		}
		
		.value {
			font-size: 28rpx;	
			color: #AAAAAA;
		}
	}
	
	.content{
		margin: 20rpx 30rpx;
		padding: 24rpx;
		border-radius: 16rpx;
		background: #fff;
		.item{
			display: flex;
			align-items: center;
			justify-content: space-between;
			margin-top: 28rpx;
			.label{
				color: #222222;
				font-size: 28rpx;
			}
			.value{
				color: #999999;
				font-size: 28rpx;
			}
		}
	}
	.pay-btn{
		background: $uni-color-primary;
		width: 688rpx;
		height: 80rpx;
		line-height: 80rpx;
		border-radius: 46rpx;
		color: #fff;
		margin-top: 50rpx;
	}
	.apply-box{
		position: relative;
		.label{
			color: #222222;
			font-size: 28rpx;
			font-weight: 500;
		}
		.value{
			color: #999999;
			font-size: 24rpx;
			margin-top: 12rpx;
		}
		
		.jiantou{
			position: absolute;
			top: 50%;
			right: 24rpx;
			transform: translateY(-50%);
			width: 24rpx;
			height: 24rpx;
		}
	}
	.info{
		.order-info{
			display: flex;
			.icon{
				width: 164rpx;
				height: 164rpx;
				border-radius: 16rpx;
				flex-shrink: 0;
			}
			.shop-info{
				display: flex;
				flex-direction: column;
				justify-content: space-between;
				padding-left: 24rpx;
				flex: 1;
				box-sizing: border-box;
				.title{
					color: #181818;
					font-size: 28rpx;
					width: 450rpx;
					white-space: nowrap;
					overflow: hidden;
					text-overflow: ellipsis;
				}
				.price-box{
					display: flex;
					align-items: center;
					justify-content: space-between;
					.price{
						color: #181818;
						font-size: 32rpx;
						font-weight: bold;
					}
					.code-btn{
						width: 88rpx;
						height: 32rpx;
						line-height: 32rpx;
						text-align: center;
						font-size: 22rpx;
						color: #FC8945;
						border-radius: 0rpx 16rpx 0rpx 16rpx;
						border: 2rpx solid #FC8945;
					}
				}
				.start-time{
					font-size: 24rpx;
					color: #AAAAAA;
				}
			}
		}
		
		
	}
	
	.wrap{
		display: flex;
		justify-content: center;
		align-items: center;
		height: 100vh;
		overflow: hidden;
	}
	
}
</style>