<template>
	<view class="selectCar-box">
		<view class="details">
			<view class="title"> 基础信息 </view>
			<view class="details-item">
				<view> 订单编号： </view>
				<text>{{ orderInfos.orderId }}</text>
			</view>
			<view class="details-item">
				<view> 用户名称： </view>
				<text>{{ orderInfos.ownerName }}</text>
			</view>
			<view class="details-item">
				<view> 用户证件类型： </view>
				<text>{{ getCodeName('CERTIFICATE_TYPE',orderInfos.ownerIdtype) }}</text>
			</view>
			<view class="details-item">
				<view> 用户证件号： </view>
				<text>{{ orderInfos.ownerIdnum }}</text>
			</view>
			<view class="details-item">
				<view> 订单车牌号： </view>
				<text style="color: #00b38b">{{ orderInfos.vehiclePlate }}</text>
			</view>
			<view class="details-item">
				<view> 车牌颜色： </view>
				<text style="color: #00b38b">{{
          orderInfos.vehiclePlateColorStr
        }}</text>
			</view>
			<view class="details-item">
				<view> 收费车型： </view>
				<text>{{ orderInfos.vehicleType }}</text>
			</view>
		</view>
		<view class="title"> 卡信息 </view>
		<view class="card">
			<view class="card-left">
				<image :src="`${$imgUrl}card2.png`" mode=""></image>
				<view class="card-center">
					<view class="card-center-head"> {{orderInfos.cardId}} </view>
					<view class="tips">
						<text>储蓄卡</text>
						<text class="tips-card">{{getCodeName('CARD_STATE_TYPE',orderInfos.cardStatus)}}</text>
					</view>
					<view class="choose-item"> 有效期：xxxx-xx-xx </view>
				</view>
			</view>

		</view>
		<view class="title"> OBU设备信息 </view>
		<view class="card">
			<view class="card-left">
				<image :src="`${$imgUrl}card1.png`" mode=""></image>
				<view class="card-center">
					<view class="card-center-head"> {{orderInfos.obuId}} </view>
					<view class="tips">
						<!-- <text>储蓄卡</text> -->
						<text class="tips-card">{{getCodeName('OBU_STATE_TYPE',orderInfos.obuStatus)}}</text>
					</view>
					<view class="choose-item"> 有效期：xxxx-xx-xx </view>
				</view>
			</view>
		</view>
		<button class="submit" @click="toPage">再次激活</button>
		<view class="mask" v-show="state.showPopup">
			<view class="main">
				<view class="top">
					<image class="icon-close" :src="`${$imgUrl}common/icon-close.png`" @click="cancel"></image>
				</view>
				<image class="icon-success" :src="`${$imgUrl}bluetooth/device-active-success.png`"></image>
				<view class="title">设备激活成功！</view>
			</view>
		</view>
	</view>
	
</template>

<script lang="ts" setup>
	import {
		reactive,
		ref
	} from "vue";
	import {
		formatTime,
		expireDate,
		expireDate2,
		getFormatDate,
		msg,
		navTo
	} from "@/utils/utils";
	import {
		onLoad,onShow
	} from '@dcloudio/uni-app'
	// import {
	// 	getItem
	// } from "../../utils/storage";
	import {
		request
	} from "@/utils/network/request.js";
	// import {
	// 	IntegerToHexString,
	// 	AsciToHexString,
	// } from "../../utils/util/fileData.js";
	import {
		stringToJson
	} from "@/utils/network/encryption.js";
	import activeSuccess from "./components/popup-device-active-success";
	import * as IFCODE from "@/utils/network/api.js";
	
	const cmd = require("../../../static/etcUtil/cmdConfig.js");
	const tools = require("../../../static/etcUtil/tools.js");
	const bluetoothUtil = require("../../../static/etcUtil/index.js");
	import {
		getCodeName
	} from "@/datas/queryKey.js";
	
	
	
	const state = reactive({
		showPopup:false
	})
	
	//订单
	const orderInfos = reactive({
		orderId: "",
		ownerName: "",
		ownerIdtype: "",
		ownerIdnum: "",
		vehiclePlate: "",
		vehiclePlateColorStr: "",
		vehiclePlateColor:"",
		vehicleType: "",
		cardId: "",
		cardStatus: "",
		obuId: "",
		obuStatus: "",
		outlineL:0,
		outlineW:0,
		outlineH:0,
		type:0,
		axleCount:0,
		approvedCount:0,
		vehicleVin:"",
		vehicleEngineNum:"",
	});
	//OBU
	const obu = reactive({
		obuId: "",
		startTime: "",
		endTime: "",
		version: "",
		approvedCount: "",
		axleCount: "",
		axleDistance: "",
		engineNum: "",
		type: "",
		userType: "",
		contractNo: "",
		vehiclePlate: "",
		vehiclePlateColor: "",
		vin: "",
		wheelCount: "",
		isJH: ""
	});

	onLoad((option) => {
		//请求订单详情
		queryOrderDetail(option.id);	
		
	});

	onShow((option) => {
		uni.$on('bluetoothLink', res => {
			console.log(res);
			if (res.status) {
				// getCardRenewal()
				getObuId()
			}
			//移除监听
			uni.$off('bluetoothLink')
		})

	})
	
	const cancel = ()=>{
		state.showPopup = false;
		// navTo("/pages/service/service")
		uni.navigateBack({
			delta:2
		})
	};

	const toPage = () => {
		navTo("/pages/bluetooth/bluetooth?routeType=5");
	};

	//获取订单详情
	const queryOrderDetail = (id: string) => {
		const options = {
			type: 2,
			data: {
				id: id,
			},
			method: "POST",
			showLoading: true,
		};
		request(IFCODE.orderDetail, options).then((res) => {
			let orderInfo = JSON.parse(res.bizContent);
			console.log(orderInfo);
			orderInfos.orderId = orderInfo.orderId;
			orderInfos.ownerName = orderInfo.ownerName;
			orderInfos.ownerIdtype = orderInfo.ownerIdtype;
			orderInfos.ownerIdnum = orderInfo.ownerIdnum;
			orderInfos.vehiclePlate = orderInfo.vehiclePlate;
			orderInfos.vehiclePlateColorStr = orderInfo.vehiclePlateColorStr;
			orderInfos.vehiclePlateColor = orderInfo.vehiclePlateColor;
			orderInfos.vehicleType = orderInfo.vehicleType;
			orderInfos.cardId = orderInfo.cardId;
			orderInfos.cardStatus = orderInfo.cardStatus;
			orderInfos.obuId = orderInfo.obuId;
			orderInfos.obuStatus = orderInfo.obuStatus;
			let arr = orderInfo.vehicleDimensions.split("x");
			orderInfos.outlineL = parseInt(arr[0]); //外廓 长
			orderInfos.outlineW = parseInt(arr[1]); //外廓 宽
			orderInfos.outlineH = parseInt(arr[2].substring(0, arr[2].length - 2)); //外廓 高

			orderInfos.type=orderInfo.type;
			orderInfos.axleCount=orderInfo.vehicleAxleCount;
			orderInfos.approvedCount=orderInfo.vehicleApprovedCount;
			orderInfos.vehicleVin=orderInfo.vehicleVin;
			orderInfos.vehicleEngineNum=orderInfo.vehicleEngineNum;
		});
	};

/**
	 * 获取OBU号 读OBU
	 */
	const getObuId = () => {
		console.log('======获取OBU号======')
		let cmdArray = [cmd.HOME_DIRECTORY, cmd.OBU_SYSTEM_FILE, cmd.RANDOM_NUMBER];
		tools.showLoadingAlert("正在执行指令");
		bluetoothUtil.transCmd(cmdArray, "20", function(res) {
			tools.hideLoadingAlert();
			var status = res[1].substring(res[1].length - 4, res[1].length);
			console.log('获取OBU号执行结果' + status)
			//第一次获取随机数
			if (status == "9000") {
				obu.obuId = res[1].substring(20, 36);
				obu.vin = res[1].substring(18, 20);
				obu.version = res[1].substring(18, 19) >= 4 ? "4x" : "2x";
				getInstallApply()
				// cmdRandNum = res[2].substring(0, res[2].length - 4);
			}
		});
	};

	/**
	 * BDS-安装申请 请求
	 */
	const getInstallApply = () => {
		console.log('======安装申请======')
		tools.showLoadingAlert("加载中");
		let options = {
			type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
			data: {
				obuId: obu.obuId,
				vehicleId: orderInfos.vehiclePlate + "_" + orderInfos.vehiclePlateColor,
				orderId: orderInfos.orderId,
				agentId: "52010106004",
				channelId: "5201010200601130001",
				channelType: "1",
				staffId: "opId",
				terminalId: "999999999",
			}, //请求参数
			method: "POST", //提交方式(默认POST)
			showLoading: true, //是否显示加载中(默认显示)
		};
		//调用方式
		request(IFCODE.installApply, options)
			.then(() => {
				tools.hideLoadingAlert();	
				//再次获取随机数
				let cmdArr = [cmd.HOME_DIRECTORY, cmd.RANDOM_NUMBER];
				bluetoothUtil.transCmd(cmdArr, '20', function(res) {
					var str = res[1].substring(res[1].length - 4, res[1].length);
					if (str == "9000") {
						let cmdRandNum = res[1].substring(0, res[1].length - 4);
						getObuActivation(cmdRandNum);
					} else {
						tools.alertF("RANDOM_NUMBER指令长度不符" + res[1]);
					}
				})
			})
	};
	
	/**
	 * VFJ-OBU在线激活 请求
	 */
	const getObuActivation = (cmdRandNum:string) => {
		console.log('======VFJ-OBU在线激活======')
		tools.showLoadingAlert("加载中");
		let options = {
			type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
			data: {
				random: cmdRandNum,
				obuSerailNo: obu.obuId,
				orderId: orderInfos.orderId,
			}, //请求参数
			method: "POST", //提交方式(默认POST)
			showLoading: true, //是否显示加载中(默认显示)
		};
		//调用方式
		request(IFCODE.obuActivation, options)
			.then((res) => {
				tools.hideLoadingAlert();
				console.log("在线激活 请求");
				console.log(stringToJson(res.bizContent));
				const datas = stringToJson(res.bizContent);
				tools.showLoadingAlert("执行指令");
				bluetoothUtil.transCmd([datas.data.APDU], "20", function(res) {
					tools.hideLoadingAlert();
					console.log(res);
					if (res[0] == "9000") {
						console.log("在线激活执行指令88888  请求", res);
						getObuInstall(0, ""); //status 0 - 安装成功 || 1 - 安装失败
					}
				});
			})
			.catch((err) => {
				console.log(err);
			});
	};
	
	/**
	 * BDS-安装确认 请求
	 */
	const getObuInstall = (status:number, reason:string) => {
		console.log('======OBU安装确认======')
		tools.showLoadingAlert("加载中");
		let options = {
			type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
			data: {
				installStatus: status,
				failReason: reason,
				installType: "1",
				installChannelId: "5201010200601130001",
				obuId: obu.obuId,
				orderId: orderInfos.orderId
			}, //请求参数
			method: "POST", //提交方式(默认POST)
			showLoading: true, //是否显示加载中(默认显示)
		};
		//调用方式
		request(IFCODE.obuInstall, options)
			.then(() => {
				tools.hideLoadingAlert();
				state.showPopup = true;
			});
	};
	
	
	

</script>

<style>
	page {
		width: 100%;
		height: 100%;
		background-color: #fff;
	}
</style>
<style lang="scss" scoped>
	.mask{
		background: rgba(0, 0, 0, .35);
		position: fixed;
		left: 0;
		top: 0;
		bottom: 0;
		right: 0;
	}
	.main{
		width: 560rpx;
		padding: 25rpx 20rpx 55rpx;
		text-align: center;
		background: #fff;
		position: absolute;
		left: 50%;
		top: 50%;
		transform: translate(-50%,-50%);
		border-radius: 20rpx;
		.top{
			text-align: right;
			.icon-close{
				width: 48rpx;
				height: 48rpx;
			}
		}
		.icon-success{
			width: 500rpx;
			height: 320rpx;
			margin-top: 22rpx;
		}
		.title{
			color: #333333;
			font-size: 40rpx;
			font-weight: 600;
			text-align: center;
			margin-top: 55rpx;
		}
	}
	.selectCar-box {
		// width: 100%;
		// height: 100%;
		padding: 30rpx;

		.title {
			font-size: 30rpx;
			font-family: Microsoft YaHei UI;
			font-weight: 400;
			color: #333333;
			margin-bottom: 30rpx;
		}

		.details {
			.title {
				font-size: 30rpx;
				font-family: Microsoft YaHei UI;
				font-weight: 400;
				color: #333333;
				margin-bottom: 30rpx;
			}

			.details-item {
				display: flex;
				font-size: 26rpx;
				font-family: Noto Sans S Chinese;
				font-weight: 400;
				color: #999999;
				margin-bottom: 30rpx;

				text {
					font-size: 26rpx;
					font-family: Noto Sans S Chinese;
					font-weight: 400;
					color: #333333;
				}
			}
		}

		.card {
			height: 150rpx;
			background: #ffffff;
			box-shadow: 0rpx 4rpx 13rpx 3rpx rgba(223, 223, 223, 0.8);
			border-radius: 20rpx;
			padding: 30rpx;
			display: flex;
			justify-content: space-between;
			align-items: center;
			margin-bottom: 60rpx;

			.card-left {
				display: flex;
				align-items: center;

				image {
					width: 100rpx;
					height: 90rpx;
				}

				.card-center {
					margin-left: 30rpx;

					.card-center-head {
						font-size: 32rpx;
						font-family: Noto Sans S Chinese;
						font-weight: 400;
						color: #333333;
					}

					.tips {
						font-size: 26rpx;
						font-family: Noto Sans S Chinese;
						font-weight: 400;
						color: #666666;

						.tips-card {
							width: 70rpx;
							height: 40rpx;
							background: #d3f2ef;
							border-radius: 6rpx;
							font-size: 20rpx;
							font-family: Noto Sans S Chinese;
							font-weight: 400;
							color: #0a8f8a;
							padding: 5rpx 10rpx;
							margin-left: 20rpx;
						}
					}
				}
			}

			.choose-item {
				margin-right: 20rpx;
				/* width: 50rpx; */
				// height: 50rpx;
				/* border: 1rpx solid #00B38B; */
				border-radius: 50%;
				// display: flex;
				// justify-content: center;
				// align-items: center;
				font-size: 25rpx;
				// align-self: end;

				.active {
					width: 38rpx;
					height: 38rpx;
					background: #00b38b;
					border-radius: 50%;
				}
			}
		}

		.remark {
			font-size: 26rpx;
			font-family: Microsoft YaHei UI;
			font-weight: 400;
			color: #666666;
			text-indent: 30rpx;
			margin-bottom: 30rpx;
		}

		.submit {
			margin-top: 100rpx;
			width: 670rpx;
			height: 80rpx;
			background: linear-gradient(-90deg, #43a1e0 0%, #13e7c1 100%);
			border-radius: 40rpx;
			font-size: 32rpx;
			font-family: Noto Sans S Chinese;
			font-weight: 400;
			color: #ffffff;
			line-height: 80rpx;
		}
	}
</style>
