<template>
	<navBar title="产品详情"></navBar>
	<navBgCar></navBgCar>
	<view class="content-wrap">
		<view class="ul-item">
			<image style="width: 100%; height: 170rpx; background-color: #eeeeee"
				:src="`${$imgUrl}applyCard/product-bg.png`"></image>
			<view class="item-value">
				<image class="icon-tip" :src="`${$imgUrl}applyCard/wechat.png`"></image>
				<view class="content">
					<view class="title"> 微信车主服务 </view>
					<view style="margin-top: 15rpx" class="tip"> 先通行后付费！ </view>
				</view>
			</view>
		</view>
		<!-- 加购权益列表 -->
		<view class="add_all">
			<uni-swipe-action>
				<uni-swipe-action-item
				 class="del_item"
				v-for="(item,index) in state.list"
					:right-options="state.options2"
					:show="item.isOpened"
					:auto-close="false"
					@change="change"
					@click="bindClick(index)"
				>
					<view class="content-box">
						<view v-if='item.children' style="display: inline-block;">
							<image :class="item.isShow?'imageChange':'imageDefault'"  @click="changeIsShow(index)" src="../../static/image/icon-back.png" alt="" srcset=""></image>
						</view>
						<text class="content-text" @tap="setOpened">{{item.productName}} &nbsp;￥{{item.discountPrice * 0.01}}</text>
					     <view v-if="item.isShow" class="children" v-for="(itemChild,index) in item.children" :key='index'>
					     	<view><text>{{itemChild.productName}}</text>&nbsp;&nbsp;<text>{{itemChild.discountPrice * 0.01}}</text></view>
					     </view>
					</view>
				</uni-swipe-action-item>
				
			</uni-swipe-action>
		</view>
				
		<view class="value-wrapper">
			<view class="flex">
				<view class="title"> 产品金额 </view>
				<view class="value">
					{{ "¥" + state.clientFee }}
				</view>
			</view>
			<view class="flex">
				<view class="title"> 加购权益 </view>
				<view class="value">{{ "¥" + state.productMoney }} </view>
			</view>
			<view class="flex">
				<view class="title"> 运费 </view>
				<view class="value"> ¥0.00 </view>
			</view>
			<view class="flex">
				<view class="title"> 优惠券 </view>
				<view class="value"> 暂无优惠券 </view>
			</view>
			<view class="flex">
				<view class="title"> 积分兑换 </view>
				<view class="value"> 暂无积分 </view>
			</view>
			<view class="flex">
				<view class="title"> 实付款 </view>
				<view class="money">
					{{ "¥" + state.allMoney }}
				</view>
			</view>
		</view>
        
		<view class="action">
			<button type="default" class="button" @click="savaHandle()">
				{{ "确认办理:¥" + state.allMoney  }}
			</button>
		</view>
		
	</view>
</template>

<script setup lang="ts">
	import {
		onLoad,
		onShow
	} from "@dcloudio/uni-app";
	import {
		reactive,ref
	} from "vue";
	import {
		etcQueryProduct,addProduct
	} from "@/utils/network/api.js";
	import {
		request
	} 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";

	import {
		getItem,
		StorageKeys
	} from "@/utils/storage.ts";
	import {
		checkOrderStatus,
		orderPay,
		wechatAppID,
		wechatPayConfigId,
		wechatSecret,
	} from "@/utils/network/api";
	import {
		confirm,
		msg
	} from "@/utils/utils";
	const imgURL = `${fileURL}image/`;
	
	const savaHandle = () => {
		console.log("state.productId.length",state.productId.length)
		if(state.productId.length>0){
			queryAddProduct();
			uni.showModal({
				// title: '提示',
				content: '确定支付',
				success: function (res) {
					if (res.confirm) {
						console.log('用户点击确定');
						wxPayment();
					} else if (res.cancel) {
						console.log('用户点击取消');
					}
				}
			});
		}else{
			wxPayment();
		}
		// msg("确定绑定权益产品");
		// wxPayment();
	};

	//获取微信小程序openid
	const getOpenID = () => {
		uni.login({
			provider: "weixin",
			success: function(e) {
				wx.request({
					url: `https://api.weixin.qq.com/sns/jscode2session?appid=${wechatAppID}&secret=${wechatSecret}&js_code=${e.code}&grant_type=authorization_code`,
					success: (res: any) => {
						state.openid = res.data.openid;
						console.log("state.openid",state.openid);
					},
				});
			},
		});
	};

	//唤起微信支付
	const wxPayment = () => {
		// #ifdef MP-WEIXIN
		const options = {
			type: 2,
			data: {
				openid: state.openid,
				productId: state.id,
				orderId: state.orderId,
				payConfigId: wechatPayConfigId,
			},
			method: "POST",
			showLoading: true,
		};
		request(orderPay, options).then((res) => {
			const data = stringToJson(res.bizContent);
			uni.requestPayment({
				provider: "wxpay",
				orderInfo: "",
				timeStamp: data.timestamp,
				nonceStr: data.noncestr,
				package: data.wxPackage ?? "",
				signType: data.signType,
				paySign: data.sign,
				success: function(e) {
					console.log("支付成功", e);
					checkOrder();
				},
				fail: function(err) {
					checkOrder();
					confirm(err, () => {}, "支付失败", false);
				},
			});
		});
		// #endif
	};

	//支付成功改变订单状态
	const checkOrder = () => {
		const options = {
			type: 2,
			data: {
				orderId: state.orderId,
				payConfigId: wechatPayConfigId,
			},
			method: "POST",
			showLoading: true,
		};

		request(checkOrderStatus, options).then((res) => {
			msg("支付成功!");
			var pages = getCurrentPages().length;
			uni.$emit("refreshOrder");
			uni.switchTab({
				url: "/pages/order/order"
			})
		});
	};
	onLoad((option: any) => {
		state.orderId = option.orderId;
		state.clientFee = option.clientFee / 100;
		state.id = option.id;
		getOpenID();
		const data=JSON.parse(decodeURIComponent(option.data));
		for(var i=0;i<data.length;i++){
			data['isOpened']='node';
			state.productMoney+=data[i]['discountPrice'] / 100;
			state.productId.push(data[i]['equityId'])
		}
		state.allMoney=(state.productMoney+state.clientFee).toFixed(2)
		state.list=data;
		
		console.log("data",option)
		console.log("数组",JSON.parse(decodeURIComponent(option.data)))
		
	});

	const state = reactive({
		openid: "",
		orderId: "",
		clientFee: undefined,
		id: "",
		options2: [{
				text: '删除',
				style: {
					backgroundColor: '#F56C6C'
				}
			}
		],
		isOpened: 'none',
		list:[],
		productMoney:0,
		allMoney:0,
		productId:[],
		// 弹框
		type: 'center',
		msgType: 'success',
		messageText: '这是一条成功提示',
		value: ''
	});
	const bindClick=(i)=>{
		console.log(i);
		uni.showToast({
			title: "删除成功",
			icon: 'none'
		});
		state.list.splice(i,1);
		state.productMoney=0;
		state.productId=[];
		for(var k=0;k<state.list.length;k++){
			state.productMoney+=state.list[k]['discountPrice'] / 100
			state.productId.push(state.list[k]['equityId'])
		}
		state.allMoney=(state.productMoney+state.clientFee).toFixed(2)
		console.log("state.productId",state.productId)
	};
	const setOpened=()=> {
			if (state.isOpened === 'none') {
				state.isOpened = 'right';
				return;
			}
			if (state.isOpened === 'left') {
				state.isOpened = 'right';
				return;
			}
			if (state.isOpened === 'right') {
				state.isOpened = 'none';
				return;
			}
		}
		const change=(e)=> {
			state.isOpened = e;
			console.log('返回：', e);
		}
		// 加购权益产品接口
		const queryAddProduct=()=>{
			console.log("state.openid",state.openid);
			const options = {
				type: 2,
				data: {
					orderId: state.orderId,  //订单编号	
					openId: state.openid,    //操作人 id
					equityId: state.productId.toString() ,  //权益Id
					totalAmount: state.allMoney * 100,  //总金额
					isRepeatPurchase:0
				},
				method: "POST",
				showLoading: true,
			};
			request(addProduct, options).then((res) => {
				// msg("加购权益成功。");
			});
		}
		const changeIsShow = (index) =>{
			console.log(index,state.list[index]['isShow'],!state.list[index]['isShow'])
			state.list[index]['isShow']=!state.list[index]['isShow']
			console.log("state.list",state.list)
		}
</script>

<style lang="scss" scoped>
	.action {
		margin-top: 40rpx;
		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;
		}
	}

	.value-wrapper {
		margin-top: 40rpx;
		padding: 0rpx 30rpx;

		.flex {
			padding: 20rpx 0rpx;
			display: flex;
			justify-content: space-between;
			align-items: center;

			.title {
				font-size: 28rpx;
				font-family: Microsoft YaHei;
				font-weight: 400;
				color: #777777;
				line-height: 28rpx;
			}

			.value {
				font-size: 28rpx;
				font-family: Microsoft YaHei;
				font-weight: 400;
				color: #333333;
				line-height: 28rpx;
			}

			.money {
				font-size: 36rpx;
				font-family: Microsoft YaHei;
				font-weight: 400;
				color: #00b38b;
				line-height: 36rpx;
			}
		}
	}

	.content-wrap {
		position: relative;
		margin-top: -50rpx;
		padding: 0rpx 30rpx;

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

			.item-value {
				padding: 20rpx;
				position: absolute;
				display: flex;
				align-items: center;
				justify-content: space-around;

				.content {
					.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;
			}
		}
	}
	.del_item{
		background-color: rgb(41, 199, 207) !important;
	}
	.content-box{
		background-color: rgb(41, 199, 207);
		line-height: 80rpx;
		color: white;
		font-size: 32rpx;
		border-radius: 10rpx 0 0 10rpx;
		padding: 20rpx;
		box-sizing: border-box;
	}
	::v-deep.uni-swipe_button-text{
		font-size: 30rpx !important;
	}
	::v-deep.uni-swipe_button-group {
		font-size: 28rpx !important;
	}
	.add_all{
		width: 95%;
		margin: 0 auto;
	}
	.uni-swipe_box{
		margin-bottom: 16rpx !important;
	}
	::v-deep.uni-swipe {
		margin-bottom: 16rpx !important;
	}
	.imageDefault{
		  height: 40rpx;
		  width: 40rpx;
		  transform: rotate(270deg);
		  margin-right: 12rpx;
		  color: white;
	}
	.imageChange{
		  height: 40rpx;
		  width: 40rpx;
		  transform: rotate(90deg);
		  margin-right: 12rpx;
		  color: white;
	}
</style>
