<template>
	<navBar title="订单支付" :scrollTop="scrollTop" :orderId="state.orderId"></navBar>
	<navBgCar></navBgCar>
	<view class="content-value">
		<view @click="savaHandle(item)" class="ul-item" v-for="(item, index) in state.dataArray" :key="index">
			<image style="width: 100%; height: 170rpx; border-radius: 20rpx"
				:src="`${$imgUrl}applyCard/product-bg.png`"></image>
			<view class="item-value">
				<image class="icon-tip" :src="imageUrl"></image>
				<view class="content">
					<view class="title">
						{{ item.payName }}
					</view>
					<view style="margin-top: 15rpx" class="tip">
						{{ item.payStatusName }}
					</view>
				</view>
				<view class="money">
					￥：{{ item.fee * 0.01 }}
				</view>
			</view>
		</view>
	</view>
</template>

<script setup lang="ts">
	import { onLoad, onPageScroll } from "@dcloudio/uni-app";
	import { reactive, ref } from "vue";
	import {
		// PAYDETECTION,
		PAYMENTORDERAPPLY,
		aliPayConfigIdTwo,
		obtainUserId,
		getOpenidApi,
		etcVehiclePlateVer,payApply,payQuery
	} from "@/utils/network/api.js";
	import { request,requestNew } from "@/utils/network/request.js";
	import { stringToJson } from "@/utils/network/encryption";
	import { fileURL } from "@/datas/fileURL.js";
	import navBgCar from "./components/nav-bg-car5";
	import navBar from "@/components/nav-bar/nav-bar2.vue";
	const imgURL = `${fileURL}image/`;
	import { confirm } from "@/utils/utils";
	let imageUrl = ""

	let logo
	const scrollTop = ref(0); //滚动距离
	var counter = 0;
	// var maxNum = 5;
	function myFunc() {
		counter++;
		console.log("====")
		if (counter == 2) {
			clearInterval(intervalId);
			state.isclick = true
			console.log("改为true");
		}
	}

	var intervalId = setInterval(myFunc, 2000);
	const savaHandle = (val) => {
		console.log("val", val)
		if (state.isclick) {
			// etcVehiclePlateVerRequest().then(() => {
				if (val.payStatus == "SUCCESS") {
					return;
				}
				state.isclick = false
				console.log("state.isclick", state.isclick, val.payStatus)
				if (val.payStatus === 'UNPAY') {
					myFunc()
					// #ifdef MP-ALIPAY
					my.getAuthCode({
						scopes: 'auth_base',
						success: res => {
							const optionsUser = {
								type: 2,
								data: {
									payConfigId: aliPayConfigIdTwo,
									code: res.authCode
								},
								method: "POST",
								showLoading: true,
							};
							console.log('支付宝用户编号请求：', optionsUser)
							request(obtainUserId, optionsUser).then((res) => {
								console.log('支付宝用户编号返回：', res)
								const data = stringToJson(res.bizContent);
								const optionsali = {
									type: 2,
									data: {
										orderId: state.orderId,
										wxOpenid: data.openId?data.openId:data.alipayUserId,
										payType: val.payType
									},
									method: "POST",
									showLoading: true,
								};
								console.log('支付下单请求：', optionsali)
								request(PAYMENTORDERAPPLY, optionsali).then((res) => {
									const data = stringToJson(res.bizContent);
									console.log('支付下单返回：', data)
									my.tradePay({
										// 调用统一收单交易创建接口（alipay.trade.create），获得返回字段支付宝交易号 trade_no
										tradeNO: data.tranPackage,
										success: res => {
											console.log("支付成功", res);
											refresh();
										},
										fail: res => {
											console.log("支付失败", res);
										},
									});

								});
							});
						},
						fail: err => {
							console.log('my.getAuthCode 调用失败', err)
							state.isclick = true
						}
					});

					// #endif
					// #ifdef MP-WEIXIN
					uni.login({
						provider: "weixin",
						success: function (e) {
							const options1 = {
								type: 2,
								data: {
									"jsCode": e.code
								},
								method: "POST",
								showLoading: true,
							};
							request(getOpenidApi, options1).then((res) => {
								const result = stringToJson(res.bizContent);
								const openidData = stringToJson(result.data);
								console.log("获取openId", openidData)
								const options = {
									type: 2,
									data: {
										orderId: state.orderId,
										wxOpenId: openidData.openid,
										payType: val.payType
									},
									method: "POST",
									showLoading: true,
								};
								requestNew(payApply, options).then((res) => {
									const data =res;
									console.log("data======111", data)
									if (data) {
										console.log("进来了")
										uni.requestPayment({
											provider: "wxpay",
											orderInfo: "",
											timeStamp: data.timestamp,
											nonceStr: data.noncestr,
											package: data.wxPackage ? data.wxPackage : "",
											signType: data.signType,
											paySign: data.sign,
											success: function (e) {
												console.log("支付成功", res);
												refresh();
											},
											fail: function (err) {
												state.isclick = true
												confirm(err, () => { }, "支付失败", false);
											},
										});
									} else {
										state.isclick = true
										console.log("state.isclick", state.isclick)
									}

								});
							});
						},
					});


					// #endif
				}
			// })
		}
	};
	const refresh = () => {
		state.isclick = true
		let source = ""
		// #ifdef MP-ALIPAY
		source = "ALI"
		// #endif
		// #ifdef MP-WEIXIN
		source = "WECHAT"
		// #endif
		var data = {
			orderId: state.orderId,
		};
		const options = {
			type: 2,
			data: data,
			method: "POST",
			showLoading: true,
		};
		console.log("输出内容", options);
		requestNew(payQuery, options).then((res) => {
			console.log("res====",res)
			const data = res;
			console.log(data);
			if (data.paymentStatus == 'ALLSUCCESS') {
				gotoEditUserOrUnitInfo()
			}
			state.dataArray = data.datas;
			for (let i = 0; i < state.dataArray.length; i++) {
				if (state.dataArray[i].payType === 'HANDLE') {
					state.dataArray[i].payName = '权益金'
				} else if (state.dataArray[i].payType === 'MARGIN') {
					state.dataArray[i].payName = '保证金'
				} else if (state.dataArray[i].payType === 'PRESTORE') {
					state.dataArray[i].payName = '预存金'
				} else if (state.dataArray[i].payType === 'EQUITY') {
					state.dataArray[i].payName = '权益费'
				} else if (state.dataArray[i].payType === 'REPAIROBU') {
					state.dataArray[i].payName = '增补obu'
				} else if (state.dataArray[i].payType === 'CHANGECARD') {
					state.dataArray[i].payName = '更换卡'
				} else if (state.dataArray[i].payType === 'CHANGEOBU') {
					state.dataArray[i].payName = '更换签'
				} else if (state.dataArray[i].payType === 'CHANGEALL') {
					state.dataArray[i].payName = '更换卡签'
				} else {
					state.dataArray[i].payName = '未知费'
				}
				if (state.dataArray[i].payStatus === 'SUCCESS') {
					state.dataArray[i].payStatusName = '已支付'
				} else if (state.dataArray[i].payStatus === 'PAYING') {
					state.dataArray[i].payStatusName = '支付中'
				} else if (state.dataArray[i].payStatus === 'FAILED') {
					state.dataArray[i].payStatusName = '支付失败'
				} else if (state.dataArray[i].payStatus === 'UNPAY') {
					state.dataArray[i].payStatusName = '未支付'
				} else if (state.dataArray[i].payStatus === 'CLOSED') {
					state.dataArray[i].payStatusName = '已关闭'
				} else if (state.dataArray[i].payStatus === 'CANCELED') {
					state.dataArray[i].payStatusName = '已撤销'
				} else if (state.dataArray[i].payStatus === 'REFUND') {
					state.dataArray[i].payStatusName = '转入退费'
				} else {
					state.dataArray[i].payStatusName = '未知'
				}
			}
			console.log("state.dataArray", state.dataArray)
		});
	}

	onLoad((option : any) => {
		console.log("传递过来的到支付页面", option)
		state.orderId = option.orderId;
		state.isValueCard = option.isValueCard;
		state.vehicleId = option.vehicleId;
		let source = ""

		// #ifdef MP-ALIPAY
		imageUrl = imgURL + "applyCard/alibaba.png";
		source = "ALI"

		// #endif
		// #ifdef MP-WEIXIN
		imageUrl = imgURL + "applyCard/wechat.png";
		source = "WECHAT"
		// #endif
		var data = {
			orderId: state.orderId,
		};
		const options = {
			type: 2,
			data: data,
			method: "POST",
			showLoading: true,
		};
		console.log("输出内容", options);
		requestNew(payQuery, options).then((res) => {
			const data = res;
			console.log(data);
			if (data.paymentStatus == 'ALLSUCCESS') {
				// isValueCard  1 储值卡   2 记账卡
				if (state.isValueCard == 1) {
					uni.switchTab({
						url: "/pages/order/order"
					})
				} else {
					uni.redirectTo({
						url: `/subpackage/orders/release-products?orderId=${state.orderId}`,
					});
				}
			}
			state.dataArray = data.datas;
			for (let i = 0; i < state.dataArray.length; i++) {
				if (state.dataArray[i].payType === 'HANDLE') {
					state.dataArray[i].payName = '权益金'
				} else if (state.dataArray[i].payType === 'MARGIN') {
					state.dataArray[i].payName = '保证金'
				} else if (state.dataArray[i].payType === 'PRESTORE') {
					state.dataArray[i].payName = '预存金'
				} else if (state.dataArray[i].payType === 'EQUITY') {
					state.dataArray[i].payName = '权益费'
				} else if (state.dataArray[i].payType === 'REPAIROBU') {
					state.dataArray[i].payName = '增补obu'
				} else if (state.dataArray[i].payType === 'CHANGECARD') {
					state.dataArray[i].payName = '更换卡'
				} else if (state.dataArray[i].payType === 'CHANGEOBU') {
					state.dataArray[i].payName = '更换签'
				} else if (state.dataArray[i].payType === 'CHANGEALL') {
					state.dataArray[i].payName = '更换卡签'
				} else {
					state.dataArray[i].payName = '未知费'
				}
				if (state.dataArray[i].payStatus === 'SUCCESS') {
					state.dataArray[i].payStatusName = '已支付'
				} else if (state.dataArray[i].payStatus === 'PAYING') {
					state.dataArray[i].payStatusName = '支付中'
				} else if (state.dataArray[i].payStatus === 'FAILED') {
					state.dataArray[i].payStatusName = '支付失败'
				} else if (state.dataArray[i].payStatus === 'UNPAY') {
					state.dataArray[i].payStatusName = '未支付'
				} else if (state.dataArray[i].payStatus === 'CLOSED') {
					state.dataArray[i].payStatusName = '已关闭'
				} else if (state.dataArray[i].payStatus === 'CANCELED') {
					state.dataArray[i].payStatusName = '已撤销'
				} else if (state.dataArray[i].payStatus === 'REFUND') {
					state.dataArray[i].payStatusName = '转入退费'
				} else {
					state.dataArray[i].payStatusName = '未知'
				}
			}
			console.log("state.dataArray", state.dataArray)
		});
	});
	//解析URL获取参数
	const getRequest = (urlStr) => {
		if (typeof urlStr == "undefined") {
			// 获取url中"?"符后的字符串
			var url = decodeURI(location.search);
		} else {
			var url = "?" + urlStr.split("?")[1];
		}
		var theRequest = new Object();
		if (url.indexOf("?") != -1) {
			var str = url.substr(1);
			var strs = str.split("&");
			for (var i = 0; i < strs.length; i++) {
				theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
			}
		}
		return theRequest;
	};
	//监听页面滚动
	onPageScroll((e) => {
		scrollTop.value = e.scrollTop;
	});

	// isValueCard  1 储值卡   2 记账卡
	const gotoEditUserOrUnitInfo = () => {
		if (state.isValueCard == 1) {
			uni.switchTab({
				url: "/pages/order/order"
			})
		} else {
			uni.redirectTo({
				url: `/subpackage/orders/release-products?orderId=${state.orderId}`,
			});
		}

	}
	const state = reactive({
		isValueCard: 1, //卡的类型
		radiolist1: [], //选择卡的数据列表
		choiceCardShow: false, //选择卡的弹出框
		isSign: '',
		id: "",
		orderId: "",
		userType: 1, //1 个人 2单位
		type: 0, //0 客车 1货车
		vehiclePlateColor: "",
		data: {
			show: false,
			src: imgURL + "applyCard/edit.png",
		},
		dataArray: [],
		list: [
			{
				bg: imgURL + "applyCard/product-bg.png",
				icon: imgURL + "applyCard/wechat.png",
				title: "【货车】微信车主服务",
				tip: "绑定微信支付，无需绑定银行卡",
			},
		],
		openid: "",
		isclick: true,//防止重复点击
		vehicleId: ""
	});
	// 车牌校验
	const etcVehiclePlateVerRequest = () => {
		let data = {
			vehiclePlate: state.vehicleId.split('_')[0],
			vehiclePlateColor: state.vehicleId.split('_')[1],
		}
		const options = {
			type: 2,
			data: data,
			method: "POST",
			showLoading: true,
		};
		return new Promise(async (resolve, reject) => {
			const res = await request(etcVehiclePlateVer, options);
			const data = stringToJson(res.bizContent);
			resolve(data);
		}).catch((error) => {
			reject(error);
		});
	}
</script>

<style lang="scss" scoped>
	::v-deep .u-radio {
		display: flex !important;
		align-items: center !important;
		float: none !important;
	}

	::v-deep .u-icon__icon {
		top: -4px !important;
	}

	.bottomTip {
		margin-top: 100rpx;
		text-align: center;
		font-size: 28rpx;
		font-family: Microsoft YaHei;
		font-weight: 400;
		color: #b3b3b3;
	}

	.content-value {
		position: relative;
		padding: 0rpx 30rpx;
		position: relative;

		.img-pos {
			position: absolute;
			left: 500rpx;
			top: -38rpx;
			right: 50rpx;

			.img-flex {
				display: flex;
				justify-content: space-between;
				align-items: center;

				.car-img {
					width: 86rpx;
					height: 42rpx;
				}

				.flag-img {
					width: 30rpx;
					height: 35rpx;
				}
			}
		}
	}

	.flex {
		display: flex;
		align-items: center;
	}

	.action {
		margin-top: 30rpx;
		padding-left: 20rpx;
		padding-right: 20rpx;
		padding-bottom: 30rpx;

		.button {
			height: 80rpx;
			background: linear-gradient(-90deg, #43a1e0 0%, #13e7c1 100%);
			border-radius: 40rpx;
			font-size: 32rpx;
			font-weight: 400;
			color: #ffffff;
			line-height: 80rpx;
		}
	}

	.action-btn {
		margin-left: 45rpx;
		width: 121rpx;
		height: 61rpx;
		border: 1px solid rgba(255, 255, 255, 1);
		border-radius: 30rpx;
		background: rgba(255, 255, 255, 0.2);

		text-align: center;
		font-size: 30rpx;
		font-family: Microsoft YaHei;
		font-weight: 400;
		color: #ffffff;
		line-height: 61rpx;
	}

	.tag1 {
		padding: 5rpx;
		background: rgba(0, 179, 139, 0.5);
		border-radius: 6rpx;
		font-size: 22rpx;
		font-family: Microsoft YaHei;
		font-weight: 400;
		color: #ffffff;
	}

	.tag3 {
		padding: 5rpx;
		background: rgba(139, 112, 228, 0.5);
		border-radius: 6rpx;
		font-size: 22rpx;
		font-family: Microsoft YaHei;
		font-weight: 400;
		color: #ffffff;
	}

	.tag2 {
		padding: 5rpx;
		background: rgba(249, 97, 60, 0.5);
		border-radius: 6rpx;
		font-size: 22rpx;
		font-family: Microsoft YaHei;
		font-weight: 400;
		color: #ffffff;
	}

	.ul-item {
		padding: 5px 20rpx;
		display: flex;
		align-items: center;

		.item-value {
			padding: 20rpx;
			position: absolute;
			display: flex;
			align-items: center;
			width: 80%;

			.content {
				width: 51%;

				.title {
					font-size: 32rpx;
					font-family: Microsoft YaHei;
					font-weight: 400;
					color: #ffffff;

				}

				.tip {
					font-size: 24rpx;
					font-family: Microsoft YaHei;
					font-weight: 400;
					color: #ffffff;
				}
			}
		}

		.icon-tip {
			width: 100rpx;
			height: 100rpx;
		}

		.content {
			margin-left: 40rpx;
		}
	}

	.money {
		color: white;
	}

	::v-deep .u-mode-center-box {
		border-radius: 10rpx;
	}

	.squire {
		padding: 30rpx 30rpx 50rpx 50rpx;
	}

	.mask-close {
		text-align: right;
	}

	.icon-closed {
		width: 48rpx;
		height: 48rpx;
	}

	.mask-title {
		text-align: center;
		font-size: 32rpx;
		color: $uni-text-color-black;
		margin-bottom: 50rpx;
	}
</style>