<template>
	<!-- 订单详情页 -->
	<view class="content">
		<view class="container">
			<view class="my-header">
				<view class="my-icons" @click="goBack"> <uni-icons type="left" size="16"></uni-icons> </view>
				<view class="my-text">支付订单</view>
				<view class="my-icons"></view>
			</view>
			<!-- 顶部区域 -->
			<view style="background-color: white;width: 94%;margin: 15px auto;">
				<view style="font-weight: bold;height: 40px;line-height: 40px;margin-left: 10px;margin-top: 20px;">订单详情
				</view>
				<view class="desc">
					<view>油站名称</view>
					<view>{{store.name}}{{store.description ? "("+store.description+")" : ""}}</view>
				</view>
				<view class="desc">
					<view>油号油枪</view>
					<view>{{oilName}}/{{oilOrder.oilGunNum}}</view>
				</view>
				<view class="desc">
					<view>加油金额</view>
					<view>￥{{oilOrder.orderAmount}}</view>
				</view>
				<view class="desc">
					<view>加油数量</view>
					<view>{{oilOrder.oilNum}}L</view>
				</view>
				<view class="desc">
					<view>油品单价</view>
					<view>￥{{oilPrice}}/L</view>
				</view>
				<view class="desc">
					<view>加油员工</view>
					<view>{{staff.realName}}</view>
				</view>
			</view>

			<view style="background-color: white;width: 94%;margin: 15px auto;">
				<view class="desc" v-if="isOilStorageCard">
					<view style="display: flex;">
						囤油卡
						<span style="display: flex;">(余额：{{refuelBalance}}L)</span>
					</view>
					<view style="display: flex;">
						<span style="margin-right: 10px;">- {{oilCardRedece}}L</span>
					</view>
				</view>
				
				<view class="desc" v-if="isStoreValueCard">
					<view style="display: flex;">
						储值卡
						<span style="display: flex;">(余额：￥{{user.cardBalance}})</span>
					</view>
					<view style="display: flex;">
						<span style="margin-right: 10px;">-￥{{balanceRedece}}</span>
					</view>
				</view>
				
				<view class="desc">
					<view style="display: flex;">
						会员等级优惠
						<span style="display: flex;">(会员等级)</span>
					</view>
					<view style="display: flex;">
						<span style="margin-right: 10px;">-￥{{gradeRedece}}</span>
					</view>
				</view>
				
				<view style="margin: 10px 20px 0;color: red;font-size: 12px;">注：囤油卡不参与任何优惠活动</view>
			</view>

			<view style="background-color: white;width: 94%;margin: 15px auto;height: 100px;">
				<view style="font-weight: bold;height: 40px;line-height: 40px;margin-left: 10px;margin-top: 20px;">支付方式
				</view>
				<!-- <view class="desc">
					<view>微信支付</view>
					<u-radio-group v-model="value">
						<u-radio name="wx"></u-radio>
					</u-radio-group>
				</view> -->
				<view class="scc">
					<image src="@/static/imgs/wechat.png" class="imgIcon"></image>
					<span style="width: 70%;margin-top: 5px;">微信支付</span>
					<radio value="r1" checked="true" />
				</view>
			</view>

			<!-- 支付信息 -->
			<view class="bar">
				<view style="margin-left: 20px;">
					<view>
						￥<span style="font-size: 22px;font-weight: bold;">{{payAmount}}</span>
					</view>
					<view style="color: red;font-size: 12px;">应付金额</view>
				</view>
				<view @click="payment"
					style="margin-right: 20px;width: 30%;border-radius:30px;background-color: #1879ff;height: 40px;line-height: 40px;text-align: center;color: white">
					确认支付
				</view>
			</view>
		</view>
	</view>
</template>

<script>
	import request from '../../utils/request'
	export default {
		data() {
			return {
				gradeDis:"",
				title: '',
				value: true,
				orderNo: "",
				// 油品订单信息
				oilOrder: {},
				// 员工列表信息
				staff: {},
				// 店铺信息
				store: {},
				oilPrice: 0,
				// 油品名称
				oilName: "",
				// 油品类型
				oilType:"",
				// 用户信息
				user:{
					cardBalance:0,
				},
				// 储值卡升数
				refuelBalance:0,
				// 会员等级信息
				userGrade:{},
				balanceRedece:0,
				oilCardRedece:0,
				gradeRedece:0,
				fullRedece:0,
				couponRedece:0,
				hoardAmount:0,
				// 囤油卡信息
				refuelMoney:[],
				// 会员等级优惠信息
				gradeDiscount:[],
				// 优惠券优惠信息
				couponDiscount:[],
				// 满减优惠信息
				fullReduceDiscount:[],
				// 支付金额
				payAmount:0,
				// 调起支付所需的数据
				orderInfo:{},
				// 是否使用囤油卡
				isOilStorageCard:false,
				// 是否使用储值卡
				isStoreValueCard:false,
			}
		},
		onLoad(e) {
			// this.orderNo = e.orderNo
			this.orderNo = "234520231226154037a1f53b"
		},
		onShow() {
			this.getOilOrder();
		},
		components: {

		},
		methods: {
			// 支付接口
			payment(){
				let refuel = this.refuelMoney
				refuel.refuelMoney = this.refuelMoney.refuelMoney - this.oilCardRedece
				let map = {
					orderNo : this.orderNo,
					payAmount : this.payAmount,
					// payAmount : "0.01",
					discountAmount : this.fullRedece+this.gradeRedece+this.couponRedece,
					oilCardAmount : JSON.stringify(refuel),
					oilCardLiters : this.oilCardRedece,
					balanceAmount : this.balanceRedece,
					isOilStorageCard : this.isOilStorageCard,
					tankId : uni.getStorageSync("tankId"),
					// tankId : 6,
				};
				let _this = this;
				request({
				  url: "business/oilOrder/appletPay",
				  method: 'post',
				  data: map,
				}).then(res => {
					console.log(res)
					let payProvider = "wxpay"
					// if (_this.appltType== "WECHAT"){
					// 	payProvider = "wxpay"
					// }else{
					// 	payProvider = "alipay"
					// }
					if (res.data.reservedPayInfo!=null && res.data.reservedPayInfo!=""){
						_this.orderInfo = JSON.parse(res.data.data.reservedPayInfo);
						uni.requestPayment({
							// 微信支付provider: 'wxpay' 支付宝支付 'alipay'
							provider: payProvider,
							// 时间戳
							timeStamp: _this.orderInfo.timeStamp,
							// 随机字符串
							nonceStr: _this.orderInfo.nonceStr,
							// 固定值
							package: _this.orderInfo.package,
							// 解密方式
							signType: 'MD5',
							// 支付签名
							paySign: _this.orderInfo.paySign,
							success: function (res) {
								console.log('success:',res);
								uni.reLaunch({
									url: '/pagesRefuel/orderSuccess/index'
								})
							},
							fail: function (err) {
								request({
									url: "/business/allOrderInfo/orderStatus",
									method: 'post',
									data: {"orderNo":res.data.data.orderNo,"status":"payFail"},
								}).then((res)=>{
									uni.showToast({
										title:"支付失败!",
										icon:"error"
									})
								})
								console.log('fail:',err);
							}
						});
					}else{
						my.tradePay({ tradeNO: res.data.data.reservedTransactionId }, function(resp){
							if(resp.resultCode == '9000'){
								console.log("支付成功")
							}else{
								request({
									url: "/business/allOrderInfo/orderStatus",
									method: 'post',
									data: {"orderNo":res.data.data.orderNo,"status":"payFail"},
								}).then((res)=>{
									uni.showToast({
										title:"支付失败!",
										icon:"error"
									})
								})
								console.log('支付失败，'+resp.resultCode);
							}
						});
					}
				})
			},
			
			// 查看是否有可使用的囤油卡
			chooseRefuelMoney(){
				let falg = false;
				this.refuelMoney.forEach(item => {
					if (item.oilType == this.oilName){
						falg = true
						this.refuelBalance = item.refuelMoney
						this.isOilStorageCard = true
						if (this.oilCardRedece >= this.oilOrder.oilNum){
							this.oilCardRedece = this.oilOrder.oilNum
						}else{
							this.oilCardRedece = item.refuelMoney
							this.chooseCardBalance(1)
						}
					}
				})
				if (falg == false) {
					this.chooseCardBalance(0)
				}
			},
			// 查看是否有可使用的储值卡金额
			chooseCardBalance(val){
				if (this.user.cardBalance>0) {
					this.isStoreValueCard = true;
					if (val == 0) {
						// 没有使用囤油卡
						if (this.user.cardBalance >= this.oilOrder.orderAmount){
							this.balanceRedece = this.oilOrder.orderAmount
						} else {
							this.balanceRedece = this.user.cardBalance
							this.payAmount = this.oilOrder.orderAmount - this.balanceRedece
						}
					}else{
						// 使用囤油卡
						// 扣除囤油卡金额后需要支付的金额
						let residueAmount = (this.oilOrder.oilNum - this.oilCardRedece) * this.oilPrice
						if (this.user.cardBalance >= residueAmount){
							this.balanceRedece = residueAmount
						} else {
							this.balanceRedece = this.user.cardBalance
							this.payAmount = (this.oilOrder.orderAmount - residueAmount - this.balanceRedece).toFixed(2)
						}
					}
				}
			},
			// 查看是否有可使用的会员等级优惠
			chooseGrade(id){
				let that = this;
				request({
					url: "business/userManager/userGrade/isUse/" + id,
					method: 'get',
				}).then((res) => {
					console.log(res,that.oilType)
					if (res.data != null && res.data != ""){
						if (res.data.preferential== "自定义优惠"){
							if (that.oilType == "汽油"){
								// 将数组按照金额从小到大排序
								let gasolineRule = JSON.parse(res.data.gasolineRule).sort((a,b) => a.gasolineRule1 - b.gasolineRule1);
								console.log(gasolineRule,222)
								if (res.data.gasolineDiscount == "满减优惠"){
									for (let i = 0; i<gasolineRule.length; i++){
										if (that.oilOrder.orderAmount >= gasolineRule[gasolineRule.length-1].gasolineRule1){
											that.gradeRedece = gasolineRule[gasolineRule.length-1].gasolineRule2
											break;
										}
										if (item.amount >= gasolineRule[i - 1].gasolineRule1 && item.amount < gasolineRule[i].gasolineRule1) {
											discount.full = gasolineRule[i - 1].gasolineRule1
											oilDiscount = gasolineRule[i - 1].gasolineRule2
											discount.reduce = gasolineRule[i - 1].gasolineRule2
										}
									}
								}
								if (res.data.gasolineDiscount == "每升优惠"){
									
								}
							}
							if (that.oilType == "柴油"){
								
							}
							if (that.oilType == "天然气"){
								
							}
						}
					}
				})
			},
			
			// 根据用户id查询用户信息
			getUser(id){
				let _this = this;
				request({
					url: "business/userManager/user/" + id,
					method: 'get',
				}).then((res) => {
					// console.log(res)
					_this.user = res.data;
					if (res.data.refuelMoney!=null && res.data.refuelMoney!=""){
						_this.refuelMoney = JSON.parse(res.data.refuelMoney)
						_this.chooseRefuelMoney()
					}else{
						_this.chooseCardBalance(0)
					}
					_this.chooseGrade(res.data.gradeId)
				})
			},
			// 获取油品订单
			getOilOrder() {
				let _this = this;
				request({
					url: "business/oilOrder/orderNo",
					method: 'post',
					data: {
						orderNo: _this.orderNo
					},
				}).then((res) => {
					_this.oilOrder = res.data
					_this.getStaffList(res.data.staffId)
					_this.getStore(res.data.storeId)
					_this.getOilNumber(res.data.storeId)
					_this.getUser(res.data.userId)
				})
			},
			// 获取门店信息
			getStore(id) {
				let _this = this;
				request({
					url: "business/storeInformation/store/queryStoreById",
					method: 'post',
					data: {
						"storeId": id
					},
				}).then((res) => {
					_this.store = res.data;
				})
			},
			// 根据员工id获取员工信息
			getStaffList(staffId) {
				let _this = this;
				request({
					url: "business/member/staff/" + staffId,
					method: 'get',
				}).then((res) => {
					_this.staff = res.data
				})
			},
			// 获取当前店铺油号信息
			getOilNumber(storeId) {
				let _this = this;
				request({
					url: "business/petrolStationManagement/oilNumber/getOilNumberName/" + storeId,
					method: 'get',
				}).then((res) => {
					res.data.forEach(item => {
						if (item.oilName == _this.oilOrder.oils) {
							_this.oilPrice = item.gbPrice;
							_this.oilName = item.oilNames;
							_this.oilType = item.oilType;
						}
					})
				})
			},
			// 返回
			goBack() {
				uni.navigateBack()
			}
		}
	}
</script>

<style scoped lang="scss">
	.scc{
		display: flex;
		justify-content: space-around;
		margin-top: 10px;
		height: 40px;
		font-size: 18px;
		line-height: 40px;
	}
	.imgIcon{
		width: 30px;
		height: 30px;
		border-radius: 50%;
		margin-top: 10px;
	}
	.desc {
		height: 35px;
		line-height: 35px;
		margin-left: 20px;
		margin-right: 20px;
		display: flex;
		justify-content: space-between;
		font-size: 15px;
		color: rgba(0, 0, 0, 0.65);
	}

	.bar {
		width: 100%;
		height: 70px;
		background-color: white;
		position: fixed;
		bottom: 0px;
		display: flex;
		align-items: center;
		justify-content: space-between;
	}

	.content {
		background: #f4f5f6;
	}

	.container {
		width: 100%;
		height: 100vh;
		box-sizing: border-box;
		padding-top: 88px;
	}

	.my-header {
		width: 100%;
		height: 88px;
		background: #ffffff;
		display: flex;
		align-items: center;
		justify-content: space-between;
		color: #000;
		box-sizing: border-box;
		padding: 0px 15px;
		padding-top: 40px;

		.my-icons {
			width: 20px;

		}

		position: fixed;
		top: 0px;
	}
</style>