<template>
	<view>
		<view class="block">
			<view class="content">
				<view class="orderinfo">
					<view class="row">
						<view class="nominal">订单金额:</view>
						<view class="text">{{amount}} 元</view>
					</view>
				</view>
			</view>
		</view>
		<view class="block">
			<view class="title">
				选择支付方式
			</view>
			<view class="content">
				<view class="pay-list" v-for="(item,index) in paytypeList" :key="index">
					<view class="row" @tap="paytype='2'" v-if="item == 2">
						<view class="left">
							<image :src="imagewxUrl+imgadres"></image>
						</view>
						<view class="center">
							微信支付
						</view>
						<view class="right">
							<radio :checked="paytype=='2'" color="#0083f5" />
						</view>
					</view>
					<view class="row" @tap="paytype='3'" v-if="item == 3">
						<view class="left">
							<image :src="imagewxUrl+imgadres2"></image>
						</view>
						<view class="center">
							汇联通工会卡(余额:{{tongCardPrice}}元)
						</view>
						<view class="right">
							<radio :checked="paytype=='3'" @click="changeRiado()" color="#0083f5" />
						</view>
					</view>
					<view class="row" @tap="paytype='6'" v-if="item == 6">
						<view class="left">
							<image :src="imagewxUrl+imgadres1"></image>
						</view>
						<view class="center">
							油卡支付(余额:{{oilPirce}}元)
						</view>
						<view class="right">
							<radio :checked="paytype=='6'" color="#0083f5" />
						</view>
					</view>
					<view class="row" @tap="paytype='7'" v-if="item == 7">
						<view class="left">
							<image :src="imagewxUrl+imgadres1"></image>
						</view>
						<view class="center">
							车队油卡(余额:{{oilUserNoPrice}}元)
						</view>
						<view class="right">
							<radio :checked="paytype=='7'" color="#0083f5" />
						</view>
					</view>
				</view>

				<view v-if="paytype=='7'" class="backcorfff">
					<view class="heightl60 paddleft10 fcor333 fontwig6 font16 width100 backcorfff flleft">车队油卡列表</view>
					<view class="line1"></view>
					<view class="heightl60 paddleft10 fcor666 width100 backcorfff"
						v-for="(item,index) in oilUserCardlist" :key="index">
						<view class="width60 flleft font14">
							{{item.cardNo}}({{item.contactName}})
						</view>
						<view class="flright width30 fotct">
							<radio :checked="oilUserno==item.cardNo" @click="changeRiado2(item)" color="#0083f5" />
						</view>
					</view>

					<view class="username">
						<view class="namecont font15">车牌号</view>
						<input style="width: 70%;" placeholder="输入车牌号" class="font15" v-model="cardNoNumber">
						<!-- <view class="date text1" >{{cardNoNumber}}</view> -->
						<!-- </view> -->
						<picker mode="selector" style="width: 20%;" :range="UserCard" range-key="carLicensePlate"
							@change="bindUserCard">
							<view class="date text1"
								style="color: white;position: absolute;margin-top: -2px;min-width: 100px;">
								11111{{cardNoNumber}}</view>
						</picker>
						<image class="flright" style="width: 15px;height: 15px;" src='../../static/img/downj.png'>
						</image>
					</view>
				</view>
			</view>
		</view>
		<view class="pay">
			<view class="btn" @tap="orderToPay">立即支付</view>
			<view class="tis">
				点击立即支付,即代表您同意<view class="terms">
					《条款协议》
				</view>
			</view>
		</view>
		<view class="height110"></view>
		<ssPaymentPassword ref="paymentPassword" :mode="1" @submit="submitHandle" />
	</view>
</template>

<script>
	import {
		getHuiLianTongCardBalance,
		findUser,
		wechatPay,
		cardPay,
		getThirdPartyByDetail,
		getUserCardList,
		getCardListByCardNo
	} from '../../Utils/Api.js'
	import ssPaymentPassword from '@/components/sanshui-payment-password/index.vue';
	let app = getApp();
	// #ifdef H5
	var jweixin = require('jweixin-module');
	// #endif
	export default {
		components: {
			ssPaymentPassword
		},
		data() {
			return {
				amount: 0,
				imagewxUrl: app.globalData.imageWxImg,
				imgadres: 'wxpay.png',
				imgadres1: 'oilcard.png',
				imgadres2: 'ghkpay.png',
				paytype: '', //支付类型
				orderNo: '',
				user: '', //用户信息
				PaymentPassword: '', //支付密码
				tongCardPrice: 0, //工会卡余额
				oilPirce: 0, //油卡金额
				showType: '', //支付方式
				paytypeList: [], //支付选择
				productType: '', //分类 星巴克 ,肯德基
				oilUserCardlist: '', //油卡列表
				oilUserno: '', //油卡卡号
				contactName: '', //油卡联系人
				oilUserNoPrice: '', //油卡余额
				UserCard: '', //车牌号列表
				cardNoNumber: '', // 车牌号
			};
		},
		onLoad(e) {
			this.orderNo = e.orderId;
			this.productType = e.productType;
			this.amount = e.amount;
			if (!app.globalData.userInfo) {
				this.findUser()
			}
		},
		onShow() {
			this.user = app.globalData.userInfo;
			this.getThirdPartyByDetail();
			if (app.globalData.userInfo) {
				this.findUser();
			}
		},
		methods: {
			//查询支付方式
			getThirdPartyByDetail() {
				// #ifdef H5
				this.showType = 2;
				// #endif
				// #ifdef MP
				this.showType = 1;
				// #endif
				let datas = {
					platformId: this.showType,
					"companyId": app.globalData.companyId,
					productType: this.productType,
					"orderNo": this.orderNo,
				}
				getThirdPartyByDetail(datas).then(res => {
					if (res.return_code == '000000') {
						this.paytypeList = res.return_data.productPayType.split(',');
						this.paytypeList = this.paytypeList.slice(0, this.paytypeList.length - 1);
					}
				});
			},
			//查询油卡包列表
			getUserCardList() {
				let datas = {
					type: 3
				}
				getUserCardList(datas).then(res => {
					if (res.return_code == '000000' && res.return_data != '') {
						this.oilUserCardlist = res.return_data;
						this.oilUserno = res.return_data[0].cardNo;
						this.contactName = res.return_data[0].contactName;
						this.oilUserNoPrice = res.return_data[0].balance;
						this.getCardListByCardNo(res.return_data[0].cardNo);
					}
				});
			},
			//查询车牌号列表
			getCardListByCardNo(item) {
				let datas = {
					cardNo: item
				}
				getCardListByCardNo(datas).then(res => {
					if (res.return_code == '000000' && res.return_data != '') {
						this.UserCard = res.return_data;
						this.cardNoNumber = res.return_data[0].carLicensePlate;
					} else {
						this.UserCard = '';
						this.cardNoNumber = '';
					}
				});
			},
			//查询我的信息
			findUser() {
				let params;
				findUser(params).then(res => {
					if (res.return_code == '000000') {
						app.globalData.userInfo = res.return_data;
						this.user = res.return_data;
						if (res.return_data.hltCardNo) {
							this.getHuiLianTongCardBalance();
						}
						if (res.return_data.oilCard) {
							this.oilPirce = res.return_data.oilCard.amount;
						}
						this.getUserCardList();
						uni.setStorage({
							key: "user",
							data: res.return_data
						})
					}
				});
			},
			//选择车牌号
			bindUserCard(e) {
				this.cardNoNumber = this.UserCard[e.target.value].carLicensePlate;
			},
			//获取选择支付方式
			changeRiado() {
				if (!this.user.isSetHltCard) {
					uni.showToast({
						icon: 'none',
						title: '当前账号还未绑定,前往绑定',
						duration: 2000,
						success() {
							setTimeout(() => {
								uni.navigateTo({
									url: '/pages/user/bindingCard/bindingCard'
								})
							}, 1000)
						}
					});
					return;
				}
			},
			//油卡支付
			changeRiado1() {
				if (!this.user.isSetOilCard) {
					uni.showToast({
						icon: 'none',
						title: '当前账号还未绑定,前往绑定',
						duration: 2000,
						success() {
							setTimeout(() => {
								uni.navigateTo({
									url: '/pages/user/bindingCard/bindingCard'
								})
							}, 1000)
						}
					});
					return;
				}
			},

			//车队油卡
			changeRiado2(item) {
				this.oilUserno = item.cardNo;
				this.contactName = item.contactName;
				this.oilUserNoPrice = item.balance;
				this.getCardListByCardNo(item.cardNo);
			},
			//查询工会卡余额
			//查询详情
			getHuiLianTongCardBalance() {
				let params = {
					cardNo: this.user.hltCardNo.cardNo
				}
				getHuiLianTongCardBalance(params).then(res => {
					if (res.return_code == '000000') {
						this.tongCardPrice = res.return_data.balance;
					}

				});
			},
			//获取订单数据
			orderToPay() {
				let that = this;
				if (that.paytype == '2') {
					// #ifdef H5
					let params = {
						"orderNo": that.orderNo,
						"openId": app.globalData.openId,
						"openIdType": 2
					}
					// #endif
					// #ifdef MP
					let params = {
						"orderNo": that.orderNo,
						"openId": app.globalData.openId,
						"openIdType": 1
					}
					// #endif
					wechatPay(params).then(res => {
						if (res.return_code == '000000') {
							// #ifdef MP
							uni.showLoading({
								title: '支付中...'
							})
							uni.requestPayment({
								"appId": res.return_data.appId,
								"nonceStr": res.return_data.nonceStr,
								"package": res.return_data.package,
								"paySign": res.return_data.sign,
								"signType": "MD5",
								"timeStamp": res.return_data.timeStamp,
								success: function(res) {
									uni.hideLoading();
									uni.showToast({
										title: '支付成功'
									})
									if (that.productType == 1 || that.productType == 2 || that
										.productType == 3) {
										uni.reLaunch({
											url: '/qianzhu-KFC/order-details/order-details?id=' +
												that.orderNo
										})
									} else {
										uni.reLaunch({
											url: '/pages/user/order_details/order_details?id=' +
												that.orderNo
										})
									}


								},
								fail: function(err) {
									uni.hideLoading();
								},
							});
							// #endif

							//判断是否是公众号
							// #ifdef H5
							//判断微信浏览器
							that.payRequest(res);
							// #endif

						} else {
							uni.showToast({
								title: res.return_msg,
								icon: 'none'
							})
						}
					})
				} else if (that.paytype == '3') {
					if (that.tongCardPrice < that.amount) {
						uni.showToast({
							icon: 'none',
							title: '工会卡余额不足',
							duration: 2000,
						});
						return;
					}
					if (!that.user.isSetPayPwd) {
						uni.navigateTo({
							url: '/pages/login/updatePas/updatePas'
						})
						return;
					}
					if (!that.user.isSetHltCard) {
						uni.showToast({
							icon: 'none',
							title: '当前账号还未绑定,前往绑定',
							duration: 2000,
							success() {
								setTimeout(() => {
									uni.navigateTo({
										url: '/pages/user/bindingCard/bindingCard'
									})
								}, 1000)
							}
						});
						return;
					}
					that.$refs.paymentPassword.modalFun('show');
				} else if (that.paytype == '6') {
					if (!that.user.isSetPayPwd) {
						uni.navigateTo({
							url: '/pages/login/updatePas/updatePas'
						})
						return;
					}
					if (!that.user.isSetOilCard) {
						uni.showToast({
							icon: 'none',
							title: '当前账号还未绑定,前往绑定',
							duration: 2000,
							success() {
								setTimeout(() => {
									uni.navigateTo({
										url: '/pages/user/bindingCard/bindingCard'
									})
								}, 1000)
							}
						});
						return;
					}
					that.$refs.paymentPassword.modalFun('show');
				} else if (that.paytype == '7') {
					if (!that.user.isSetPayPwd) {
						uni.navigateTo({
							url: '../../login/updatePas/updatePas'
						})
						return;
					}
					that.$refs.paymentPassword.modalFun('show');
				} else {
					uni.showToast({
						title: '请选择支付方式',
						icon: 'none',
						duration: 2000
					})
				}
			},
			submitHandle(e) {
				this.PaymentPassword = e.value;
				uni.showLoading({
					title: '支付中...'
				})
				if (this.paytype == '3' || this.paytype == '6' || this.paytype == '7') {
					let cardNo;
					if (this.paytype == 3) {
						cardNo = this.user.hltCardNo.cardNo;
					}
					if (this.paytype == 6) {
						cardNo = this.user.oilCard.cardNo;
					}
					if (this.paytype == 7) {
						cardNo = this.oilUserno;
					}
					let params = {
						"orderNo": this.orderNo,
						"cardNo": cardNo,
						"password": this.PaymentPassword,
						"carLicensePlate": this.cardNoNumber
					}
					cardPay(params).then(res => {
						uni.hideLoading();
						if (res.return_code == '000000') {
							uni.showToast({
								title: '支付成功'
							})
							if (this.productType == 1 || this.productType == 2 || this.productType == 3) {
								uni.reLaunch({
									url: '/qianzhu-KFC/order-details/order-details?id=' + this.orderNo
								})
							} else {
								uni.reLaunch({
									url: '/pages/user/order_details/order_details?id=' + this.orderNo
								})
							}
							return;
						}
						if (res.return_code == '102130') {
							uni.navigateTo({
								url: '/pages/login/updatePas/updatePas'
							})
							return;
						}
						uni.showToast({
							title: res.return_msg,
							icon: 'none'
						})
					})
					return;
				}

			},
			payRequest: function(self) {
				uni.showLoading({
					title: '支付中...'
				})
				jweixin.config({
					// debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
					appId: self.return_data.appId, // 必填,公众号的唯一标识
					timestamp: self.return_data.timeStamp, // 必填,生成签名的时间戳
					nonceStr: self.return_data.nonceStr, // 必填,生成签名的随机串
					signature: self.return_data.sign, // 必填,签名,见附录1
					jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
				});
				uni.hideLoading();
				jweixin.ready(function() {
					jweixin.checkJsApi({
						jsApiList: ['chooseWXPay'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
						success: function(res) {},
						fail: function(res) {}
					});
					jweixin.chooseWXPay({
						appId: self.return_data.appId,
						timestamp: self.return_data
							.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
						nonceStr: self.return_data.nonceStr, // 支付签名随机串,不长于 32 位
						package: self.return_data
							.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
						signType: 'MD5', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
						paySign: self.return_data.sign, // 支付签名
						success: function(res) {
							// 支付成功后的回调函数
							uni.showToast({
								title: '支付成功'
							})
							if (this.productType == 1 || this.productType == 2 || this
								.productType == 3) {
								uni.reLaunch({
									url: '/qianzhu-KFC/order-details/order-details?id=' +
										this.orderNo
								})
							} else {
								uni.reLaunch({
									url: '/pages/user/order_details/order_details?id=' +
										this.orderNo
								})
							}

						},
						cancel: function(r) {},
						fail: function(res) {}
					});
				});

				jweixin.error(function(res) {
					uni.showToast({
						icon: 'none',
						title: '支付失败了',
						duration: 4000
					});
					// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
					/*alert("config信息验证失败");*/
				});
			},

		}
	}
</script>

<style lang="scss">
	.block {
		width: 94%;
		padding: 0 3% 40upx 3%;

		.title {
			width: 100%;
			font-size: 34upx;
		}

		.content {
			.orderinfo {
				width: 100%;
				border-bottom: solid 1upx #eee;

				.row {
					width: 100%;
					height: 90upx;
					display: flex;
					align-items: center;

					.nominal {
						flex-shrink: 0;
						font-size: 32upx;
						color: #7d7d7d;
					}

					.text {
						width: 70%;
						margin-left: 10upx;
						overflow: hidden;
						text-overflow: ellipsis;
						white-space: nowrap;
						font-size: 32upx;
					}
				}
			}

			.pay-list {
				width: 100%;
				border-bottom: solid 1upx #eee;

				.row {
					width: 100%;
					height: 120upx;
					display: flex;
					align-items: center;

					.left {
						width: 100upx;
						flex-shrink: 0;
						display: flex;
						align-items: center;

						image {
							width: 80upx;
							height: 80upx;
						}
					}

					.center {
						width: 100%;
						font-size: 30upx;
					}

					.right {
						width: 100upx;
						flex-shrink: 0;
						display: flex;
						justify-content: flex-end;
					}
				}
			}
		}
	}

	.pay {
		margin-top: 20upx;
		width: 100%;
		display: flex;
		justify-content: center;
		flex-wrap: wrap;

		.btn {
			width: 70%;
			height: 80upx;
			border-radius: 80upx;
			display: flex;
			justify-content: center;
			align-items: center;
			color: #fff;
			background-color: #0083f5;
			box-shadow: 0upx 5upx 10upx rgba(0, 0, 0, 0.2);
		}

		.tis {
			margin-top: 10upx;
			width: 100%;
			font-size: 24upx;
			display: flex;
			justify-content: center;
			align-items: baseline;
			color: #999;

			.terms {
				color: #5a9ef7;
			}
		}
	}

	.username {
		width: calc(100% - 100upx);
		height: 100upx;
		display: flex;
		align-items: center;
		border-bottom: 1px solid #f6f6f6;
		padding: 8upx 20upx;

		.namecont {
			color: #666666;
			width: 28%;
		}
	}
</style>