<template>
	<view class="page">
		<u-navbar title="设备详情" :border-bottom="false" :background="bgc" title-color='#2E4975' title-size='36'
			height='45'></u-navbar>
		<!-- 	<view class="map">
				
			</view> -->
		<map class="map" id="map" ref="map" :scale="zoomSize" :latitude="latitude" :longitude="longitude"
			:show-location="true" :markers="markers" :polygons="polyline">
			<cover-view class="park" @click="toggleIconAndCallout">
				<cover-image class="img" src="https://lxnapi.ccttiot.com/bike/img/static/uRiYQZQEb3l2LsltEsyW"
					mode=""></cover-image>
			</cover-view>
		</map>


		<view class="info_card">
			<view class="info_tit">
				设备信息
			</view>
			<view class="lines"></view>
			<view class="cont">


				<view class="info_li">
					<view class="half_infoli">
						车牌号：<span v-if="deviceInfos.vehicleNum">{{deviceInfos.vehicleNum}}</span>
						<span v-else>--</span>
					</view>
					<view class="half_infoli">
						MAC：<span>{{deviceInfos.mac}}</span>
					</view>
				</view>
				<view class="info_li">
					<view class="half_infoli">
						SN：<span>{{deviceInfos.sn}}</span>
					</view>
					<view class="half_infoli">
						车辆型号：
						<span v-if="deviceInfos.model">{{deviceInfos.model}}</span>
						<span v-else>--</span>
					</view>
				</view>
				<view class="info_li">
					运营区域：
					<span v-if="deviceInfos.areaName">{{deviceInfos.areaName}}</span>
					<span v-else>--</span>
				</view>

			</view>
			<view class="lines"></view>
			<view class="cont">

				<view class="info_li">
					<view class="half_infoli">
						车辆状态：<span>{{status()}}</span>
					</view>
					<view class="half_infoli" v-if="deviceInfos.onlineStatus==0">
						网络状态：<span >离线</span>
					</view>
					<view class="half_infoli" v-if="deviceInfos.onlineStatus==1">
						网络状态：<span >在线</span>
					</view>
				</view>
				<view class="info_li">
					<view class="half_infoli">
						电池电量：
						<span v-if="deviceInfos.remainingPower">{{deviceInfos.remainingPower}}%</span>
						<span v-else>--</span>
					</view>
					<view class="half_infoli">
						续航里程：
						<span v-if="deviceInfos.remainingMileage">{{deviceInfos.remainingMileage}} KM</span>
						<span v-else>--</span>
					
					</view>
				</view>

				<!-- 	<view class="info_li">
					异常原因：<span>已完成</span>
				</view> -->
			</view>
			<!-- 	<view class="lines"></view>
			<view class="cont">
			
				<view class="info_li">
					
					<view class="half_infoli">
						GPRS信号：<span>1Km</span>
					</view>
				</view>
			
			</view> -->
			<view class="lines"></view>
			<view class="cont">


				<view class="info_li">
					最后定位坐标：
					<span v-if="deviceInfos.latitude">{{deviceInfos.latitude}},{{deviceInfos.longitude}}</span>
					<span v-else>--</span>
				</view>
				<view class="info_li" style="flex-wrap: wrap;display: inline-block;">
					最后定位地址：
					<span v-if="deviceInfos.location">{{deviceInfos.location}}</span>
					<span v-else>--</span>
				</view>
				<view class="info_li">
					最后定位时间：
					<span v-if="deviceInfos.lastTime">{{deviceInfos.lastTime}}</span>
					<span v-else>--</span>
				</view>
			</view>
		</view>
		<view class="info_card" style="margin-top: 20rpx;" v-if="deviceInfos.etOrders[0]">
			<view class="info_tit">
				最后订单信息
			</view>
			<view class="lines"></view>
			<view class="cont">
				<view class="info_li">
					最后用户姓名：
					<span v-if="deviceInfos.etOrders[0].realName">{{deviceInfos.etOrders[0].realName}}</span>
					<span v-else>--</span>
				</view>

				<view class="info_li">
					最后用户电话：
					<span v-if="deviceInfos.etOrders[0].phonenumber">{{deviceInfos.etOrders[0].phonenumber}}</span>
					<span v-else>--</span>
				</view>
				<view class="info_li" style="flex-wrap: wrap;display: inline-block;">
					最后订单编号：
					<span v-if="deviceInfos.etOrders[0].orderNo">{{deviceInfos.etOrders[0].orderNo}}</span>
					<span v-else>--</span>
				</view>
				<view class="info_li">
					订单开始时间：
					<span v-if="deviceInfos.etOrders[0].createTime">{{deviceInfos.etOrders[0].createTime}}</span>
					<span v-else>--</span>
				</view>
				<view class="info_li">
					<view class="info_li">

						订单状态：<span>{{statuss()}}</span>
					</view>

				</view>
			</view>
		</view>
		<view class="bot_btn">
			<view class="btn" @click="checkbtn(0)">
				开锁
			</view>
			<view class="btn" @click="checkbtn(1)">
				关锁
			</view>
		
			
			<view class="btn" @click="btn(4)">
				响铃寻车
			</view>
			<!-- <view class="btn" @click="bulebtn(1)">
				蓝牙响铃
			</view>
			<view class="btn" @click="bulebtn(2)">
				蓝牙开锁
			</view>
			<view class="btn" @click="bulebtn(3)">
				蓝牙关锁
			</view> -->
			<view class="btn" @click="btn(8)">
				设备重启
			</view>
			<view class="btn" @click="btn(2)" v-if="deviceInfos.status!=8">
				车辆禁用
			</view>
			<view class="btn" @click="btn(3)"  v-if="deviceInfos.status==8" >
				车辆解禁
			</view>
			<view class="btn" @click="btn(5)"  v-if="deviceInfos.status!=0" >
				车辆回仓
			</view>
			<view class="btn" @click="btn(6)"  v-if="deviceInfos.status==0" >
				车辆出仓
			</view>
			<view class="btn" @click="btn(7)">
				车牌修改
			</view> 
			<view class="btn" @click="btn(9)">
				坐垫锁
			</view> 
			<view class="btn" @click="btn(10)">
				定位更新
			</view> 
			<!-- <view class="btn" @click="tipshow=true" v-if="info.type==1">
				维修处理
			</view>
			<view class="btn" @click="tipshow=true" v-if="info.type==2">
				换电处理
			</view> -->
		</view>
		<u-mask :show="false" @click="show = false" :z-index='100' />
		
		<!-- <view class="bot">
			<view class="btn">
				退款
			</view>
		</view> -->
		<u-mask :show="maskloading" :z-index='100' duration='0' />
		<view class="maskloadpage" v-if="maskloading">
			<view class="maskpage1" v-if="maskepage==4">
				<view class="top_info">
					<image :src="loadimg" mode=""></image>
					<view class="masktxt">
						{{buletxt}}
					</view>
				</view>
				<view class="masktips" style="width: 100%;">
					请确保与车辆的距离小于3米
				</view>
				<view class="tipsimg">
					<image src="https://lxnapi.ccttiot.com/bike/img/static/ugvqmfB3QYujZ6SnfTia" mode=""></image>
				</view>

			</view>
			<!-- 不允许停车点外还车 -->
			<view class="maskpage1" v-if="maskepage==5">
				<view class="top_info">
					<image src="https://lxnapi.ccttiot.com/bike/img/static/uG3cbPgvPDzwlq6IHHxK" mode=""></image>
					<view class="masktxt" v-if="orderinfo.sn">
						蓝牙连接失败
					</view>
				</view>
				<view class="masktips" style="width: 100%;">
					请确保手机蓝牙已经打开
				</view>
				<view class="masktips" @click="totxtpage()"
					style="width: 100%;color: #4C97E7;text-decoration-line: underline;margin-top: 0; font-size: 28rpx;">
					点击查看教程
				</view>
				<view class="tipsimg">
					<image src="https://lxnapi.ccttiot.com/bike/img/static/ugvqmfB3QYujZ6SnfTia" mode=""></image>
				</view>
				<view class="btn_box">

					
					
					<view class="btn4" @click="closemask()" >
						返回

					</view>
					<view class="btn3" @click="Binddevice">
						重新连接
					</view>
				</view>
			</view>
		</view>
		<u-mask :show="showvehicle" @click="closevehicle()" :z-index='100' />
		<view class="tip_box" v-if="showvehicle">
			<view class="top" v-if="showvehicle">
				<view class="tip">
					设备信息修改
				</view>
		
				<view class="ipt_box">
					<view class="text">
						车牌号
					</view>
					<view class="ipt">
						<input type="text" v-model="vehicleNum" placeholder=" " class="input"
							placeholder-style="color:#C7CDD3" >
						
					</view>
				</view>
				
			</view>
			<view class="bots">
				<view class="bot_left" @click="closevehicle()">
					取消
				</view>
				<view class="bot_right" @click="putvehicle()">
					确定
				</view>
			</view>
		</view>
		<u-mask :show="showbtntip" @click="closevehicle()" :z-index='100' />
		<view class="tip_box" v-if="showbtntip">
			<view class="top" v-if="showbtntip">
				<view class="tip">
					操作提示
				</view>
		
				<view class="ipt_box" style="justify-content: center;">
					<view class="text" style="width: 80%;text-align: center;">
						车辆有正在进行中的订单，是否进行该操作
					</view>
					
				</view>
				
			</view>
			<view class="bots">
				<view class="bot_left" @click="closeshowtip() ">
					取消
				</view>
				<view class="bot_right" @click="btn(btnnum)">
					确定
				</view>
			</view>
		</view>
	</view>
</template>

<script>
	const app = getApp();
	var xBlufi = require("@/utils/blufi/xBlufi.js");
	let _this = null;
	export default {
		data() {
			return {
				devicesList: [
					// {name:'110000',
					// mac:'11111'}
				],
				searching: false,
				texts: '正在扫描蓝牙设备...',
				btnflag: true,
				tishiflag: false,
				option: '',
				bluthlist: [], //蓝牙数组
				// status: 'loading',
				statusflag: false,
				Bluetoothmac: '',
				mac: '',
				ishave: false,
				ver_data: null,
				deviceInfoss: {},
				gps: {},
				isband: false,
				// status: false,
				deviceIds: '',
				name: '',
				orderinfo: {},
				dl: 0,
				czmoney: true,
				iscz: true,



				bgc: {
					backgroundColor: "#F7FAFE",
				},
				show: true,
				showgj: true,
				searchKeyword: '11',
				latitude: 39.916527,
				longitude: 116.397128,
				isMap: false,
				zoomSize: 15,
				markers: [],
				polyline: [],
				polygons: [],
				cardId: '001区域',
				sn: '',
				deviceInfos: {},
				carstause: false,

				maskloading: false,
				toploadtxt: "开锁中0%",
				loadimg: 'https://lxnapi.ccttiot.com/bike/img/static/urJQJnOI1DEjWatFqHYh',
				tiptxt: '请定点停放，规范用车',
				maskepage: 0,
				backgps: {},
				buletxt: '',

				buleclose: false,
				buleopen: false,
				bulering: false,
				bulerebort: false,
				getnum:0,
				showvehicle:false,
				vehicleNum:'',
				showbtntip:false,
				btnnum:null
				

			}
		},
		onLoad(e) {
			this.sn = e.id
			this.deviceInfo()


		},
		onUnload: function() {
			xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
			xBlufi.notifyStartDiscoverBle({
				'isStart': false
			});
		},
		onHide() {
			xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
			xBlufi.notifyStartDiscoverBle({
				'isStart': false
			});
		},
		onBeforeUnmount() {
			xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
			xBlufi.notifyStartDiscoverBle({
				'isStart': false
			});
		},
		watch: {



		},
		methods: {
			closeshowtip(){
				this.showbtntip=false
			},
			checkbtn(num){
				if(this.deviceInfos.status == 3||this.deviceInfos.status == 2||this.deviceInfos.status == 4){
					this.showbtntip=true
					this.btnnum=num
				}else{
					this.btn(num)
				}
			},
			putvehicle(){
				this.$u.put('/appVerify/device/edit?sn=' + this.sn+'&vehicleNum='+this.vehicleNum).then((res) => {
					if (res.code == 200) {
						this.deviceInfo()
						this.showvehicle=false
						uni.showToast({
							title: '修改成功',
							icon: 'none',
							duration: 2000
						});
					} else {
						uni.showToast({
							title: res.msg,
							icon: 'none',
							duration: 2000
						});
					}
				})
			},
			closemask(){
				this.maskloading=false
			},
			statuss() {
				if (this.deviceInfos.etOrders[0]) {
					if (this.deviceInfos.etOrders[0].status == 0) {
						return '预约中'
					} else if (this.deviceInfos.etOrders[0].status == 1) {
						return '取消预约'
					} else if (this.deviceInfos.etOrders[0].status == 2) {
						return '骑行中'
					} else if (this.deviceInfos.etOrders[0].status == 3) {
						return '骑行结束'
					} else if (this.deviceInfos.etOrders[0].status == 4) {
						return '订单完成'
					}
				}

			},
			closevehicle(){
				this.showvehicle=false
			},
			bulebtn(num) {
				if (num == 1) {
					if (this.carstause) {
						this.ring()
					} else {
						this.bulering = true
						this.Binddevice()
					}
				} else if (num == 2) {
					if (this.carstause) {
						this.open()
					} else {
						this.buleopen = true
						this.Binddevice()
					}
				}else if (num == 3) {
					if (this.carstause) {
						this.close()
					} else {
						this.buleclose = true
						this.Binddevice()
					}
				}else if (num == 4) {
					if (this.carstause) {
						this.reboot()
					} else {
						this.bulerebort = true
						this.Binddevice()
					}
				}
			},
			btn(num) {
				this.showbtntip=false
				if (num == 0) {
					uni.showLoading({
						title:'加载中...'
					})
					console.log('点击了....1');
					this.$u.post('/appVerify/admin/unlocking?sn=' + this.sn).then((res) => {
			
						if (res.code == 200) {
							// 处理接口返回的数据，将边界数据转换为地图组件需要的折线结构
							this.deviceInfo()
							uni.showToast({
								title: '操作成功',
								icon: 'none',
								duration: 2000
							});
						}else{
							uni.hideLoading()
							this.bulebtn(2)
						}
					}).catch(error => {
						console.error("Error fetching area data:", error);
					});
				} else if (num == 1) {
					uni.showLoading({
						title:'加载中...'
					})
						console.log('点击了....2');
					this.$u.post('/appVerify/admin/lock?sn=' + this.sn).then((res) => {
						if (res.code == 200) {
							// 处理接口返回的数据，将边界数据转换为地图组件需要的折线结构
							this.deviceInfo()
							uni.showToast({
								title: '操作成功',
								icon: 'none',
								duration: 2000
							});
						}else{
							uni.hideLoading()
							this.bulebtn(3)
						}
					}).catch(error => {
						console.error("Error fetching area data:", error);
					});
				} else if (num == 2) {
					uni.showLoading({
						title:'加载中...'
					})
					this.$u.post('/appVerify/device/offline?sn=' + this.sn).then((res) => {
						if (res.code == 200) {
							uni.showToast({
								title: '解禁成功',
								icon: 'none',
								duration: 2000
							});
							// 处理接口返回的数据，将边界数据转换为地图组件需要的折线结构
							this.deviceInfo()
						}else{
							uni.showToast({
								title: res.msg,
								icon: 'none',
								duration: 2000
							});
						}
					}).catch(error => {
						console.error("Error fetching area data:", error);
					});
				} else if (num == 3) {
					uni.showLoading({
						title:'加载中...'
					})
					this.$u.post('/appVerify/device/online?sn=' + this.sn).then((res) => {
						if (res.code == 200) {
							// 处理接口返回的数据，将边界数据转换为地图组件需要的折线结构
							uni.showToast({
								title: '解禁成功',
								icon: 'none',
								duration: 2000
							});
							this.deviceInfo()
						}else{
							uni.showToast({
								title: res.msg,
								icon: 'none',
								duration: 2000
							});
						}
					}).catch(error => {
						console.error("Error fetching area data:", error);
					});
				} else if (num == 4) { 
					uni.showLoading({
						title:'加载中...'
					})
					this.$u.post('/app/device/ring?sn=' + this.sn).then((res) => {
						if (res.code == 200) {
							uni.hideLoading()
							uni.showToast({
								title: '操作成功',
								icon: 'none',
								duration: 2000
							});
						} else {
							uni.hideLoading()
							uni.showToast({
								title: res.msg,
								icon: 'none',
								duration: 2000
							});
							this.bulebtn(1)
						}
					})
			
				} else if (num == 5) {
					uni.showLoading({
						title:'加载中...'
					})
					this.$u.put('/appVerify/device/edit?status=0&sn=' + this.sn).then((res) => {
						if (res.code == 200) {
							uni.showToast({
								title: '回仓成功',
								icon: 'none',
								duration: 2000
							});
							this.deviceInfo()
						} else {
							uni.showToast({
								title: res.msg,
								icon: 'none',
								duration: 2000
							});
						}
					})
			
				} else if (num == 6) {
					uni.showLoading({
						title:'加载中...'
					})
					this.$u.put('/appVerify/device/edit?status=1&sn=' + this.sn).then((res) => {
						if (res.code == 200) {
							this.deviceInfo()
							uni.showToast({
								title: '出仓成功',
								icon: 'none',
								duration: 2000
							});
						} else {
							uni.showToast({
								title: res.msg,
								icon: 'none',
								duration: 2000
							});
						}
					})
			
				} else if (num == 7) {
					
					this.showvehicle=true
			
				} else if (num == 8) {
					uni.showLoading({
						title:'加载中...'
					})
					this.$u.post('/appVerify/device/reboot?sn=' + this.sn).then((res) => {
						if (res.code == 200) {
							this.deviceInfo()
							uni.showToast({
								title: '操作成功',
								icon: 'none',
								duration: 2000
							});
						} else {
							// uni.hideLoading()
							// this.bulebtn(4)
						}
					})
				
			
				}else if (num == 9) {
					uni.showLoading({
						title:'加载中...'
					})
					this.$u.put('/appVerify/device/seatCushionLock?sn=' + this.sn).then((res) => {
						if (res.code == 200) {
							this.deviceInfo()
							uni.showToast({
								title: '操作成功',
								icon: 'none',
								duration: 2000
							});
						} else {
							uni.showToast({
								title: res.msg,
								icon: 'none',
								duration: 2000
							});
						}
					})
				}else if (num == 10) {
					uni.showLoading({
						title:'加载中...'
					})
					this.$u.post('/appVerify/refreshDevice?sn=' + this.sn).then((res) => {
						if (res.code == 200) {
							this.deviceInfo()
							uni.showToast({
								title: '操作成功',
								icon: 'none',
								duration: 2000
							});
						} else {
							uni.showToast({
								title: res.msg,
								icon: 'none',
								duration: 2000
							});
						}
					})
				}
			},
			
			
			Binddevice() {
				uni.getBluetoothAdapterState({
					success: function(res) {
						console.log('蓝牙状态：', res.available)
					},
					fail: function(res) {
						console.log('获取蓝牙状态失败')
					}
				})
				this.maskloading=true
				this.devicesList = []
				this.maskepage = 4
				this.buletxt = '蓝牙连接中'
				// uni.showLoading({
				// 	title: '蓝牙扫描中..'
				// })
				xBlufi.initXBlufi(1);
				console.log("xBlufi", xBlufi.XMQTT_SYSTEM);
				xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent);
				xBlufi.notifyStartDiscoverBle({
					'isStart': true
				});


				// 两秒后停止蓝牙搜索
				setTimeout(() => {
					xBlufi.notifyStartDiscoverBle({
						'isStart': false
					});
					setTimeout(() => {
						// uni.hideLoading()
						if (this.devicesList.length == 0) {
							// uni.showToast({
							// 	title: '暂无发现对应设备,请靠近设备',
							// 	icon: 'none',
							// 	duration: 1500
							// });
							this.maskepage = 5
						} else {
							let uniqueDevicesList = Array.from(new Set(this.devicesList));

							// 将去重后的数组重新赋值给 this.devicesList
							this.devicesList = uniqueDevicesList;
							console.log(this.devicesList, 'this.devicesListthis.devicesList');
							let istrue = false
							this.devicesList.forEach(device => {
								// 从设备名称中提取 MAC 地址（假设 MAC 地址是设备名称的后6个字符）
								let macFromName = device.name.substring(device.name.length - 12);
								console.log(macFromName, 'macFromNamemacFromName');
								// 与 this.mac 进行比较
								if (macFromName == this.mac) {
									// 如果相同，则将 this.ishave 设置为 true
									console.log(device);
									this.deviceInfoss = device
									// this.ishave = true;
									istrue = true
									this.createBLEConnection(device)

									console.log('对比正确1111111111');
								} else {
									console.log('对比错误');

								}
							});
							setTimeout(() => {
								if (!istrue) {
									this.buletxt = '蓝牙连接失败'


									setTimeout(() => {
										this.maskepage = 5
									}, 500)
								}

							}, 500)
						}


					}, 200)
					// 判断是否存在浇花器设备

					// this.status = true
				}, 5000)

			},


			reboot() {
				let vm = this; // 将外部的 this 绑定到 vm 上
				uni.getNetworkType({
					success(res) {
						if (res.networkType !== 'none') {
							uni.getConnectedBluetoothDevices({
								success(res) {
									console.log('已连接的蓝牙设备信息：', res);
									// vm.dl = (vm.orderinfo.deviceAmount / vm.orderinfo.unitPrice).toFixed(2); // 使用 vm 访问 Vue 实例的属性
									xBlufi.notifySendCustomData({
										customData: "11reboot"
									});
									vm.maskloading=false
									// uni.hideLoading()
									// vm.remakr()
								},
								fail(err) {
									uni.hideLoading()
									console.error('获取已连接蓝牙设备信息失败：', err);
								}
							});
						} else {
							console.log('手机未连接网络');
						}
					}
				});
			},
			open() {
				let vm = this; // 将外部的 this 绑定到 vm 上
				uni.getNetworkType({
					success(res) {
						if (res.networkType !== 'none') {
							uni.getConnectedBluetoothDevices({
								success(res) {
									console.log('已连接的蓝牙设备信息：', res);
									// vm.dl = (vm.orderinfo.deviceAmount / vm.orderinfo.unitPrice).toFixed(2); // 使用 vm 访问 Vue 实例的属性
									xBlufi.notifySendCustomData({
										customData: "11open"
									});
									vm.maskloading=false
									vm.deviceInfo()
									// uni.hideLoading()
									// vm.remakr()
								},
								fail(err) {
									uni.hideLoading()
									console.error('获取已连接蓝牙设备信息失败：', err);
								}
							});
						} else {
							console.log('手机未连接网络');
						}
					}
				});
			},
			close() {
				let vm = this; // 将外部的 this 绑定到 vm 上
				uni.getNetworkType({
					success(res) {
						if (res.networkType !== 'none') {
							uni.getConnectedBluetoothDevices({
								success(res) {
									console.log('已连接的蓝牙设备信息：', res);
									// vm.dl = (vm.orderinfo.deviceAmount / vm.orderinfo.unitPrice).toFixed(2); // 使用 vm 访问 Vue 实例的属性
									xBlufi.notifySendCustomData({
										customData: "11close"
									});
									vm.maskloading=false
									vm.deviceInfo()
									// uni.hideLoading()
									// vm.remakr()
								},
								fail(err) {
									uni.hideLoading()
									console.error('获取已连接蓝牙设备信息失败：', err);
								}
							});
						} else {
							console.log('手机未连接网络');
						}
					}
				});
			},
			ring() {
				let vm = this; // 将外部的 this 绑定到 vm 上
				uni.getNetworkType({
					success(res) {
						if (res.networkType !== 'none') {
							uni.getConnectedBluetoothDevices({
								success(res) {
									console.log('已连接的蓝牙设备信息：', res);
									// vm.dl = (vm.orderinfo.deviceAmount / vm.orderinfo.unitPrice).toFixed(2); // 使用 vm 访问 Vue 实例的属性
									xBlufi.notifySendCustomData({
										customData: "11play1@"
									});
									vm.maskloading=false
									vm.deviceInfo()
									// uni.hideLoading()
									// vm.remakr()
								},
								fail(err) {
									uni.hideLoading()
									console.error('获取已连接蓝牙设备信息失败：', err);
								}
							});
						} else {
							console.log('手机未连接网络');
						}
					}
				});
			},
			funListenDeviceMsgEvent: function(options) {
				switch (options.type) {
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
						if (options.result) {
							let devicesarr = options.data
							// this.devicesList = options.data
			
							devicesarr.forEach(device => {
			
			
								// this.$u.get(`/app/device/${mac}/isBind`, data).then((res) => {
								// if (res.data == false) {
								this.devicesList.push(device);
			
								let uniqueDevicesList = Array.from(new Set(this.devicesList));
			
								// 将去重后的数组重新赋值给 this.devicesList
								this.devicesList = uniqueDevicesList;
			
							});
						}
						break;
			
					case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
						console.log("连接回调：" + JSON.stringify(options));
						if (options.result) {
							// uni.hideLoading();
			
			
							xBlufi.notifyInitBleEsp32({
								deviceId: options.data.deviceId
							});
			
							// xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvents);
			
							// this.deviceIds = options.data.deviceId
							// this.name = options.data.name
							// 连接成功绑定设备
							// let params = {
							// 	mac: this.Bluetoothmac,
							// 	userId: this.$store.state.user.userId
							// }
							let systemInfo = uni.getSystemInfoSync();
							if (systemInfo.platform === 'android') {
								// 当前设备是 Android  
			
							} else if (systemInfo.platform === 'ios') {
								// 当前设备是 iOS  
								// uni.navigateTo({
								// 	url: '/pages/wifilist/index?deviceId=' + options
								// 		.data.deviceId + '&name=' + options.data.name
								// })
							}
						}
						if (options.result == false) {
							// this.loadingmask=false
							this.carstause = false
							if (this.maskepage == 4) {
								this.buletxt = '设备连接失败'
			
			
								setTimeout(() => {
									this.maskepage = 5
								}, 800)
							}
			
							// uni.showModal({
							// 	title: '很抱歉提醒你！',
							// 	content: '小程序与设备异常断开',
							// 	showCancel: false,
							// 	success: function(res) {
							// 		// uni.navigateBack({
							// 		// 	url: '../search/search'
							// 		// });
							// 	}
							// });
							// this.statusflag = false
							// uni.hideLoading();
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
			
						// this.ver_data = this.parseCustomData(options.data)
						if (options.data) {
							this.carstause = true
			
			
							if (this.maskloading && this.maskepage == 4) {
								// setTimeout(() => {
								// 	this.maskloading = false
								// }, 700)
								if (this.buleclose == false && this.buleopen == false && this.bulerebort == false &&
									this
									.bulering == false) {
									if (this.buletxt == '蓝牙连接中') {
										this.buletxt = '蓝牙连接成功！'
									}
			
								}
								if (this.buleclose) {
									this.buleclose = false
									this.close()
								}
								if (this.buleopen) {
									this.buleopen = false
									this.open()
								}
								if (this.bulerebort) {
									this.buleopen = false
									this.reboot()
								}
								if (this.bulering) {
									this.bulering = false
									this.ring()
								}
			
			
							}
			
			
			
			
			
			
						} else {
							this.carstause = false
							if (this.maskepage == 4) {
								this.buletxt = '设备连接失败'
			
			
								setTimeout(() => {
									this.maskepage = 5
								}, 800)
							}
						}
						console.log("1收到设备发来的自定义数据结果：", options.data);
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED: {
						console.log('状态', options.result)
						if (options.result == false) {
							this.carstause = false
							if (this.maskepage == 4) {
								this.buletxt = '设备连接失败'
			
			
								setTimeout(() => {
									this.maskepage = 5
								}, 800)
							}
							// uni.showToast({
							// 	title: '设备断开链接，请重新点击蓝牙链接',
							// 	icon: 'none'
							// });
							// uni.showModal({
							// 	title: '很抱歉提醒你！',
							// 	content: '小程序与设备异常断开',
							// 	showCancel: false,
							// 	success: function(res) {
							// 		// uni.navigateBack({
							// 		// 	url: '../search/search'
							// 		// });
							// 	}
							// });
							// this.statusflag = false
							// uni.hideLoading();
						}
					}
					break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_STOP:
						if (options.result) {
							let uniqueDevicesList = Array.from(new Set(this.devicesList));
			
							// 过滤出名称字段的前五个字母为 "CTPOW" 的项
							let filteredDevices = uniqueDevicesList.filter(device => device.name.substring(0,
									4) ===
								"BBLE");
			
							// 将过滤后的数组重新赋值给 this.devicesList
							this.devicesList = filteredDevices;
			
							// console.log('蓝牙停止搜索ok',this.devicesList);
						} else {
							//蓝牙停止搜索失败
							// console.log('蓝牙停止搜索失败');
						}
						this.searching = false
						// _this.setData({
						// 	searching: false
						// });
			
						break;
				}
			},
			
			
			
			
			btnyc() {
				this.titleflag = false
			},

			// 解析自定义数据

			
			//4、建立连接
			createBLEConnection(e) {
				console.log('调用了');
				xBlufi.notifyStartDiscoverBle({
					'isStart': false
				});
				console.log(e, '蓝牙信息')
				const deviceId = e.deviceId
				this.Bluetoothmac = e.localName.substring(5) //从第七位开始截取 只取后面的mac号
				console.log(this.Bluetoothmac, '11111');
				let name = e.name;
				console.log('点击了，蓝牙准备连接的deviceId:' + e.deviceId);
				xBlufi.notifyConnectBle({
					isStart: true,
					deviceId: e.deviceId,
					name
				});
				// for (var i = 0; i < this.devicesList.length; i++) {
				// 	if (e.deviceId === this.devicesList[i].deviceId) {

				// 		uni.showLoading({
				// 			title: '连接蓝牙设备中...'
				// 		});
				// 	}
				// }
			},
		
			funListenDeviceMsgEvents: function(options) {
				let that = this;
				switch (options.type) {
					case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED: {
						console.log('状态', options.result)
						if (options.result == false) {
							this.carstause = false
							uni.showToast({
								title: '设备断开链接，请重新点击蓝牙链接',
								icon: 'none'
							});
							// uni.showModal({
							// 	title: '很抱歉提醒你！',
							// 	content: '小程序与设备异常断开',
							// 	showCancel: false,
							// 	success: function(res) {
							// 		// uni.navigateBack({
							// 		// 	url: '../search/search'
							// 		// });
							// 	}
							// });
							// this.statusflag = false
							uni.hideLoading();
						}
					}
					break;

					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_MY_DATA:
						this.loadPercent = options.data;
						this.loadText = '文件读取中'
						console.log("文件读取中", options.data);
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
						// this.isband = true
						// this.ver_data = this.parseCustomData(options.data)
						console.log("1收到设备发来的自定义数据结果：", options.data);
						if (options.data) {
							this.carstause = true
						}
						break;

					case xBlufi.XBLUFI_TYPE.TYPE_INIT_ESP32_RESULT:
						uni.hideLoading();
						if (options.result) {
							console.log('初始化成功');
						} else {
							console.log('初始化失败');


						}
						break;
				}
			},
			// 点击隐藏没有设备提示
			btnhd() {
				this.tishiflag = false
			},

		
			status() {
				// if (this.deviceInfos.onlineStatus == 0) {
				// 	return '离线'
				// } else {
					
				// }
				if (this.deviceInfos.status == 0) {
					return '仓库中'
				} else if (this.deviceInfos.status == 1) {
					return '待租'
				} else if (this.deviceInfos.status == 2) {
					return '预约中'
				} else if (this.deviceInfos.status == 3) {
					return '骑行中'
				} else if (this.deviceInfos.status == 4) {
					return '临时锁车中'
				}else if (this.deviceInfos.status == 6) {
					return '调度中'
				}  else if (this.deviceInfos.status == 8) {
					return '下线'
				}

			},
			deviceInfo() {
				this.$u.get('/app/device/info?sn=' + this.sn).then((res) => {
						console.log(res,'rererer');
					if (res.code === 200) {
						this.deviceInfos = res.data
						if(this.getnum==0){
							this.getArea()
						}
						this.getnum=1
						this.vehicleNum=res.vehicleNum
						this.mac = res.data.mac
						// this.deviceInfos.onlineStatus=0
						// if (this.deviceInfos.onlineStatus == 0) {
						// 	this.Binddevice()
						// }
						this.latitude = parseFloat(this.deviceInfos.latitude)
						this.longitude = parseFloat(this.deviceInfos.longitude)
						if (this.deviceInfos.onlineStatus == 0) {
							this.markers.push({
								id: parseFloat(this.deviceInfos.sn),
								latitude: parseFloat(this.deviceInfos.latitude),
								longitude: parseFloat(this.deviceInfos.longitude),
								// title: item.deviceName,
								width: 40,
								height: 40,
								iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u4UKmB47AxOj3YKIaajM',
								callout: {
									content: '离线', // 修改为你想要显示的文字内容
									color: '#ffffff', // 修改为文字颜色
									fontSize: 14, // 修改为文字大小
									borderRadius: 10, // 修改为气泡圆角大小
									bgColor: '#000000', // 修改为气泡背景颜色
									padding: 6, // 修改为气泡内边距
									display: 'ALWAYS', // 修改为气泡的显示策略
								}
							})
						
						}else if (this.deviceInfos.status == 0) {
							this.markers.push({
								id: parseFloat(this.deviceInfos.sn),
								latitude: parseFloat(this.deviceInfos.latitude),
								longitude: parseFloat(this.deviceInfos.longitude),
								// title: item.deviceName,
								width: 40,
								height: 40,
								iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u76wT0QiWdAGJdF4v6AR',
								callout: {
									content: '未上架', // 修改为你想要显示的文字内容
									color: '#ffffff', // 修改为文字颜色
									fontSize: 14, // 修改为文字大小
									borderRadius: 10, // 修改为气泡圆角大小
									bgColor: '#000000', // 修改为气泡背景颜色
									padding: 6, // 修改为气泡内边距
									display: 'ALWAYS', // 修改为气泡的显示策略
								}
							})
						} else if (this.deviceInfos.status == 1) {
							this.markers.push({
								id: parseFloat(this.deviceInfos.sn),
								latitude: parseFloat(this.deviceInfos.latitude),
								longitude: parseFloat(this.deviceInfos.longitude),
								// title: item.deviceName,
								width: 40,
								height: 40,
								iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u1UD93BU1vfshWFoDwgX',
								callout: {
									content: '待租' + this.deviceInfos.remainingPower + '%', // 修改为你想要显示的文字内容
									color: '#2679D1', // 修改为文字颜色
									fontSize: 14, // 修改为文字大小
									borderRadius: 10, // 修改为气泡圆角大小
									bgColor: '#D4ECFF', // 修改为气泡背景颜色
									padding: 6, // 修改为气泡内边距
									display: 'ALWAYS', // 修改为气泡的显示策略
								}
							})
						} else if (this.deviceInfos.status == 2) {
							this.markers.push({
								id: parseFloat(this.deviceInfos.sn),
								latitude: parseFloat(this.deviceInfos.latitude),
								longitude: parseFloat(this.deviceInfos.longitude),
								// title: item.deviceName,
								width: 40,
								height: 40,
								iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u1UD93BU1vfshWFoDwgX',
								callout: {
									content: '预约' + this.deviceInfos.remainingPower + '%', // 修改为你想要显示的文字内容
									color: '#2679D1', // 修改为文字颜色
									fontSize: 14, // 修改为文字大小
									borderRadius: 10, // 修改为气泡圆角大小
									bgColor: '#D4ECFF', // 修改为气泡背景颜色
									padding: 6, // 修改为气泡内边距
									display: 'ALWAYS', // 修改为气泡的显示策略
								}
							})
						} else if (this.deviceInfos.status == 3) {
							this.markers.push({
								id: parseFloat(this.deviceInfos.sn),
								latitude: parseFloat(this.deviceInfos.latitude),
								longitude: parseFloat(this.deviceInfos.longitude),
								// title: item.deviceName,
								width: 40,
								height: 40,
								iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u1UD93BU1vfshWFoDwgX',
								callout: {
									content: '骑行' + this.deviceInfos.remainingPower + '%', // 修改为你想要显示的文字内容
									color: '#2679D1', // 修改为文字颜色
									fontSize: 14, // 修改为文字大小
									borderRadius: 10, // 修改为气泡圆角大小
									bgColor: '#D4ECFF', // 修改为气泡背景颜色
									padding: 6, // 修改为气泡内边距
									display: 'ALWAYS', // 修改为气泡的显示策略
								}
							})
						} else if (this.deviceInfos.status == 4) {
							this.markers.push({
								id: parseFloat(this.deviceInfos.sn),
								latitude: parseFloat(this.deviceInfos.latitude),
								longitude: parseFloat(this.deviceInfos.longitude),
								// title: item.deviceName,
								width: 40,
								height: 40,
								iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u1UD93BU1vfshWFoDwgX',
								callout: {
									content: '锁车' + this.deviceInfos.remainingPower + '%', // 修改为你想要显示的文字内容
									color: '#2679D1', // 修改为文字颜色
									fontSize: 14, // 修改为文字大小
									borderRadius: 10, // 修改为气泡圆角大小
									bgColor: '#D4ECFF', // 修改为气泡背景颜色
									padding: 6, // 修改为气泡内边距
									display: 'ALWAYS', // 修改为气泡的显示策略
								}
							})
						}else if (this.deviceInfos.status == 6) {
							this.markers.push({
								id: parseFloat(this.deviceInfos.sn),
								latitude: parseFloat(this.deviceInfos.latitude),
								longitude: parseFloat(this.deviceInfos.longitude),
								// title: item.deviceName,
								width: 40,
								height: 40,
								iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u1UD93BU1vfshWFoDwgX',
								callout: {
									content: '调度中', // 修改为你想要显示的文字内容
									color: '#2679D1', // 修改为文字颜色
									fontSize: 14, // 修改为文字大小
									borderRadius: 10, // 修改为气泡圆角大小
									bgColor: '#D4ECFF', // 修改为气泡背景颜色
									padding: 6, // 修改为气泡内边距
									display: 'ALWAYS', // 修改为气泡的显示策略
								}
							})
						} else if (this.deviceInfos.status == 8) {
							this.markers.push({
								id: parseFloat(this.deviceInfos.sn),
								latitude: parseFloat(this.deviceInfos.latitude),
								longitude: parseFloat(this.deviceInfos.longitude),
								// title: item.deviceName,
								width: 40,
								height: 40,
								iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u76wT0QiWdAGJdF4v6AR',
								callout: {
									content: '下线', // 修改为你想要显示的文字内容
									color: '#ffffff', // 修改为文字颜色
									fontSize: 14, // 修改为文字大小
									borderRadius: 10, // 修改为气泡圆角大小
									bgColor: '#000000', // 修改为气泡背景颜色
									padding: 6, // 修改为气泡内边距
									display: 'ALWAYS', // 修改为气泡的显示策略
								}
							})
						}
						
						this.$forceUpdate()
					}else{
						uni.showToast({
							title: res.msg,
							icon: 'none',
							duration: 2000
						});
					}
				})
			},
			convertBoundaryToPolyline(boundary) {
				if (!boundary) return null;

				const points = JSON.parse(boundary).map(coord => ({
					latitude: coord[1],
					longitude: coord[0]
				}));

				const polyline = {
					points: points,
					fillColor: "#55888840", //填充颜色
					strokeColor: "#22FF00", //描边颜色
					strokeWidth: 2, //描边宽度
					zIndex: 1, //层级
				};

				return polyline;
			},
			convertBoundaryToPolylines(boundaries, num) {
				if (num == 1) {
					console.log('判断');
					return boundaries.map(boundary => {
						if (!boundary) return null;
						let coords;
						try {
							coords = JSON.parse(boundary);
						} catch (error) {
							console.error("Error parsing boundary JSON:", error);
							return null;
						}
						if (!Array.isArray(coords)) {
							console.error("Parsed boundary is not an array:", coords);
							return null;
						}
						const points = coords.map(coord => ({
							latitude: coord[1],
							longitude: coord[0]
						}));
						return {
							points: points,
							fillColor: "#3A7EDB40", //填充颜色
							strokeColor: "#3A7EDB", //描边颜色
							strokeWidth: 2, //描边宽度
							zIndex: 1, //层级

						};
					}).filter(polyline => polyline !== null); // 过滤掉无效的折线数据
				} else if (num == 2) {
					return boundaries.map(boundary => {
						if (!boundary) return null;
						let coords;
						try {
							coords = JSON.parse(boundary);
						} catch (error) {
							console.error("Error parsing boundary JSON:", error);
							return null;
						}
						if (!Array.isArray(coords)) {
							console.error("Parsed boundary is not an array:", coords);
							return null;
						}
						const points = coords.map(coord => ({
							latitude: coord[1],
							longitude: coord[0]
						}));
						return {
							points: points,
							fillColor: "#FFF5D640", //填充颜色
							strokeColor: "#FFC107", //描边颜色
							strokeWidth: 2, //描边宽度
							zIndex: 1, //层级

						};
					}).filter(polyline => polyline !== null); // 过滤掉无效的折线数据
				} else if (num == 3) {
					return boundaries.map(boundary => {
						if (!boundary) return null;
						let coords;
						try {
							coords = JSON.parse(boundary);
						} catch (error) {
							console.error("Error parsing boundary JSON:", error);
							return null;
						}
						if (!Array.isArray(coords)) {
							console.error("Parsed boundary is not an array:", coords);
							return null;
						}
						const points = coords.map(coord => ({
							latitude: coord[1],
							longitude: coord[0]
						}));
						return {
							points: points,
							fillColor: "#FFD1CF40", //填充颜色
							strokeColor: "#FF473E", //描边颜色
							strokeWidth: 2, //描边宽度
							zIndex: 1, //层级

						};
					}).filter(polyline => polyline !== null); // 过滤掉无效的折线数据
				}

			},
			toggleIconAndCallout() {
				this.showIconAndCallout = !this.showIconAndCallout;
				if (this.showIconAndCallout) {
					const newMarkers = [];
					this.parkingList.forEach(item => {
						newMarkers.push({
							id: parseFloat(item.parkingId),
							latitude: parseFloat(item.latitude),
							longitude: parseFloat(item.longitude),
							width: 20,
							height: 28.95,
							iconPath: item.type == 1 ?
								'https://lxnapi.ccttiot.com/bike/img/static/up2xXqAgwCX5iER600k3' : item
								.type == 2 ?
								'https://lxnapi.ccttiot.com/bike/img/static/u53BAQcFIX3vxsCzEZ7t' :
								' https://lxnapi.ccttiot.com/bike/img/static/uDNY5Q4zOiZTCBTA2Jdq',
							callout: {
								content: item.parkingName,
								color: '#ffffff',
								fontSize: 14,
								borderRadius: 10,
								bgColor: item.type == 1 ? '#3A7EDB' : item.type == 2 ? '#FFC107' :
									'#FF473E',
								padding: 6,
								display: 'ALWAYS'
							},
							isCalloutVisible: true // 添加标记
						});
					});
					this.$set(this, 'markers', [...this.markers, ...newMarkers]);
				} else {
					// 过滤掉所有气泡显示的标记
					this.$set(this, 'markers', this.markers.filter(marker => !marker.isCalloutVisible));
				}

			},

			getParking() {
				// 发送请求获取数据
				let data = {
					areaId: this.deviceInfos.areaId
				}
				this.$u.get('/app/parking/list?', data).then((res) => {
					if (res.code === 200) {
						// 处理接口返回的数据
						const type1Data = [];
						const type2Data = [];
						const type3Data = [];

						res.rows.forEach(row => {
							if (row.type == 1) {
								type1Data.push(row);
							} else if (row.type == 2) {
								type2Data.push(row);
							} else if (row.type == 3) {
								type3Data.push(row);
							}
						});
						const validBoundaries = type1Data.map(row => row.boundaryStr).filter(boundary =>
							typeof boundary === 'string' && boundary.trim() !== '');
						const polylines = this.convertBoundaryToPolylines(validBoundaries, 1);


						const validBoundaries1 = type2Data.map(row => row.boundaryStr).filter(boundary =>
							typeof boundary === 'string' && boundary.trim() !== '');
						const polylines1 = this.convertBoundaryToPolylines(validBoundaries1, 2);

						const validBoundaries2 = type3Data.map(row => row.boundaryStr).filter(boundary =>
							typeof boundary === 'string' && boundary.trim() !== '');
						const polylines2 = this.convertBoundaryToPolylines(validBoundaries2, 3);
						// 将处理后的数据添加到 this.polyline 中
						this.polyline = this.polyline.concat(polylines2);
						this.polyline = this.polyline.concat(polylines1);
						this.polyline = this.polyline.concat(polylines);
						this.parkingList = res.rows
						// console.log(this.polyline);

					}
				}).catch(error => {
					console.error("Error fetching parking data:", error);
				});
			},
			getArea() {
				// 发送请求获取数据

				let id = this.deviceInfos.areaId
				this.$u.get("/app/area/" + id).then((res) => {
					if (res.code === 200) {
						// 处理接口返回的数据，将边界数据转换为地图组件需要的折线结构
						const polylines = this.convertBoundaryToPolyline(res.data.boundaryStr)
						// 更新折线数据
						this.polyline.push(polylines)
						// console.log(this.polyline);
						this.getParking()
					}
				}).catch(error => {
					console.error("Error fetching area data:", error);
				});
			},
		}
	}
</script>

<style lang="scss">
	page {
		overflow-x: hidden;
		background-color: #F3F3F3;
	}

	.page {
		padding-bottom: 400rpx;
		width: 750rpx;
		.tip_box {
			position: fixed;
			left: 72rpx;
			top: 628rpx;
			width: 610rpx;
			// height: 282rpx;
			background: #FFFFFF;
			border-radius: 30rpx 30rpx 30rpx 30rpx;
			z-index: 110;
			padding-bottom: 100rpx;
		
			.top {
				padding: 52rpx 38rpx 42rpx 36rpx;
		
				.ipt_box {
					margin-top: 22rpx;
					display: flex;
					flex-wrap: nowrap;
					align-items: center;
		
					.text {
						width: 350rpx;
						font-weight: 400;
						font-size: 32rpx;
						color: #3D3D3D;
					}
		
					.ipt {
						padding: 10rpx 18rpx;
						display: flex;
						align-items: center;
						justify-content: space-between;
						margin-left: 26rpx;
						width: 420rpx;
						height: 64rpx;
						border-radius: 0rpx 0rpx 0rpx 0rpx;
						border: 2rpx solid #979797;
		
						.input {
							width: 80%;
						}
					}
				}
		
				.tip {
					width: 100%;
					text-align: center;
					font-weight: 700;
					font-size: 32rpx;
					color: #3D3D3D;
				}
		
				.txt {
					margin-top: 32rpx;
					width: 100%;
					text-align: center;
					font-weight: 500;
					font-size: 32rpx;
					color: #3D3D3D;
				}
			}
		
			.bots {
				position: absolute;
		
				width: 610rpx;
				// border-top: 2rpx solid #D8D8D8;
				display: flex;
				flex-wrap: nowrap;
				// height: 100%;
				bottom: -20rpx;
		
				.bot_left {
					border-radius: 0rpx 0rpx 0rpx 30rpx;
					width: 50%;
					height: 86rpx;
					display: flex;
					align-items: center;
					justify-content: center;
					font-weight: 500;
					font-size: 32rpx;
					color: #3D3D3D;
					background: #EEEEEE;
				}
		
				.bot_right {
					border-radius: 0rpx 0rpx 30rpx 0rpx;
					width: 50%;
					height: 86rpx;
					background: #4C97E7;
					display: flex;
					align-items: center;
					justify-content: center;
					color: #FFFFFF;
					// border-left: 2rpx solid #D8D8D8;
					font-weight: 500;
					font-size: 32rpx;
					// color: #4C97E7;
		
				}
		
			}
		}
		
		
		.maskloadpage {

			position: fixed;
			padding: 46rpx;
			bottom: 0;
			width: 752rpx;
			height: 780rpx;
			background: #FFFFFF;
			border-radius: 40rpx 40rpx 0rpx 0rpx;
			z-index: 101;

			.maskpage0 {
				.top_info {
					width: 100%;
					display: flex;
					align-items: center;
					justify-content: center;

					image {
						margin-right: 16rpx;
						width: 50rpx;
						height: 50rpx;
					}

					.masktxt {
						font-weight: 500;
						font-size: 44rpx;
						color: #3D3D3D;
					}
				}

				.masktips {
					margin-top: 20rpx;
					width: 100%;
					text-align: center;
					font-weight: 400;
					font-size: 32rpx;
					color: #3D3D3D;
				}

				.tipsimg {
					margin-top: 60rpx;
					display: flex;
					// align-items: center;
					justify-content: center;
					width: 100%;

					image {
						width: 554rpx;
						height: 262rpx;

					}
				}
			}

			.maskpage1 {
				.top_info {
					width: 100%;
					display: flex;
					align-items: center;
					justify-content: center;

					image {
						margin-right: 16rpx;
						width: 50rpx;
						height: 50rpx;
					}

					.masktxt {
						font-weight: 500;
						font-size: 44rpx;
						color: #3D3D3D;
					}
				}

				.masktips {
					margin-top: 20rpx;
					width: 100%;
					text-align: center;
					font-weight: 400;
					font-size: 32rpx;
					color: #3D3D3D;
				}

				.tipsimg {
					margin-top: 60rpx;
					display: flex;
					// align-items: center;
					justify-content: center;
					width: 100%;

					image {
						width: 554rpx;
						height: 262rpx;

					}
				}

				.btn_box {
					width: 750rpx;
					padding: 0 36rpx;
					position: absolute;
					bottom: 60rpx;
					left: 0;
					display: flex;
					justify-content: space-between;
					align-items: center;

					.btn3 {
						// margin-right: 16rpx;
						display: flex;
						align-items: center;
						justify-content: center;
						width: 300rpx;
						height: 90rpx;
						background: #4C97E7;
						border-radius: 45rpx 45rpx 45rpx 45rpx;

						font-weight: 500;
						font-size: 40rpx;
						color: #FFFFFF;
					}

					.btn4 {
						display: flex;
						align-items: center;
						justify-content: center;
						width: 300rpx;
						height: 90rpx;
						border-radius: 45rpx 45rpx 45rpx 45rpx;
						border: 2rpx solid #808080;

						font-weight: 500;
						font-size: 40rpx;
						color: #808080;
					}
				}
			}

		}


		.map {
			position: relative;
			width: 750rpx;
			height: 752rpx;

			.park {
				position: absolute;
				display: flex;
				align-items: center;
				justify-content: center;
				right: 30rpx;
				bottom: 40rpx;
				// background-color: #fff;
				border-radius: 50%;
				width: 82rpx;
				height: 82rpx;
				// z-index: 1;

				.img {
					width: 82rpx;
					height: 82rpx;
				}
			}
		}

		// .tip_box {
		// 	position: fixed;
		// 	left: 72rpx;
		// 	top: 628rpx;
		// 	width: 610rpx;
		// 	// height: 282rpx;
		// 	background: #FFFFFF;
		// 	border-radius: 30rpx 30rpx 30rpx 30rpx;
		// 	z-index: 110;
		// 	padding-bottom: 100rpx;

		// 	.top {
		// 		padding: 52rpx 38rpx 42rpx 36rpx;

		// 		.ipt_box {
		// 			margin-top: 22rpx;
		// 			display: flex;
		// 			flex-wrap: nowrap;
		// 			align-items: center;

		// 			.text {
		// 				width: 96rpx;
		// 				font-weight: 400;
		// 				font-size: 32rpx;
		// 				color: #3D3D3D;
		// 			}

		// 			.ipt {
		// 				padding: 10rpx 18rpx;
		// 				display: flex;
		// 				align-items: center;
		// 				justify-content: space-between;
		// 				margin-left: 26rpx;
		// 				width: 420rpx;
		// 				height: 64rpx;
		// 				border-radius: 0rpx 0rpx 0rpx 0rpx;
		// 				border: 2rpx solid #979797;

		// 				.input {
		// 					width: 80%;
		// 				}
		// 			}
		// 		}

		// 		.tip {
		// 			width: 100%;
		// 			text-align: center;
		// 			font-weight: 700;
		// 			font-size: 32rpx;
		// 			color: #3D3D3D;
		// 		}

		// 		.txt {
		// 			margin-top: 32rpx;
		// 			width: 100%;
		// 			text-align: center;
		// 			font-weight: 500;
		// 			font-size: 32rpx;
		// 			color: #3D3D3D;
		// 		}
		// 	}

		// 	.bot {
		// 		position: absolute;

		// 		width: 610rpx;
		// 		// border-top: 2rpx solid #D8D8D8;
		// 		display: flex;
		// 		flex-wrap: nowrap;
		// 		// height: 100%;
		// 		bottom: -20rpx;

		// 		.bot_left {
		// 			border-radius: 0rpx 0rpx 0rpx 30rpx;
		// 			width: 50%;
		// 			height: 86rpx;
		// 			display: flex;
		// 			align-items: center;
		// 			justify-content: center;
		// 			font-weight: 500;
		// 			font-size: 32rpx;
		// 			color: #3D3D3D;
		// 			background: #EEEEEE;
		// 		}

		// 		.bot_right {
		// 			border-radius: 0rpx 0rpx 30rpx 0rpx;
		// 			width: 50%;
		// 			height: 86rpx;
		// 			background: #4C97E7;
		// 			display: flex;
		// 			align-items: center;
		// 			justify-content: center;
		// 			color: #FFFFFF;
		// 			// border-left: 2rpx solid #D8D8D8;
		// 			font-weight: 500;
		// 			font-size: 32rpx;
		// 			// color: #4C97E7;

		// 		}

		// 	}
		// }

		
		
		.bot_btn {
			position: fixed;
			bottom: 0;
			display: flex;
			flex-wrap: wrap;
			padding: 40rpx 18rpx;
			width: 750rpx;
			// height: 230rpx;
			background: #fff;
			// background: linear-gradient( 180deg, #FFFFFF 0%, rgba(255,255,255,0) 100%);
			box-shadow: 0rpx 10rpx 64rpx 0rpx rgba(0, 0, 0, 0.08);
			border-radius: 0rpx 0rpx 0rpx 0rpx;

			.btn:nth-child(4n) {
				margin-right: 0;
			}

			.btn {
				margin-top: 10rpx;
				margin-right: 18rpx;
				display: flex;
				align-items: center;
				justify-content: center;
				width: 164rpx;
				height: 66rpx;
				background: #E2F2FF;
				border-radius: 0rpx 0rpx 0rpx 0rpx;
				border: 2rpx solid #4C97E7;
				font-weight: 400;
				font-size: 28rpx;
				color: #3D3D3D;
			}
		}

		.info_card {
			background: #FFFFFF;

			.info_tit {
				display: flex;
				flex-wrap: nowrap;
				padding: 22rpx 28rpx;
				font-weight: 600;
				font-size: 32rpx;
				color: #3D3D3D;

				.money {
					margin-left: auto;
					font-weight: 500;
					font-size: 32rpx;
					color: #4C97E7;
				}
			}

			.lines {
				width: 750rpx;
				// height: 2rpx;
				border-bottom: 2rpx solid #E7E7E7;
			}

			.cont {
				padding: 26rpx 28rpx;

				.info_li {
					width: 98%;
					display: flex;
					flex-wrap: nowrap;
					font-weight: 400;
					font-size: 28rpx;
					color: #808080;

					span {
						color: #3D3D3D;
					}

					white-space: nowrap;
					/* 禁止换行 */
					overflow: hidden;
					/* 超出部分隐藏 */
					text-overflow: ellipsis;
					/* 显示省略号 */
					line-height: 48rpx;

					.half_infoli {
						display: flex;
						flex-wrap: nowrap;
						width: 50%;
						font-weight: 400;
						font-size: 28rpx;
						color: #808080;

						span {
							color: #3D3D3D;
						}

						.input {
							width: 30%;
						}
					}
				}
			}
		}


	}
</style>