<template>
	<view class="page">
		<!-- 	<u-navbar  :border-bottom="false" :background="bgc" title-color='#fff' back-icon-color="#fff"
			title-size='36' height='50'></u-navbar> -->
		<view class="title">
			<image src="https://api.ccttiot.com/smartmeter/img/static/uyr6T0Vfkefty2blkDmU" mode="aspectFit" style="width: 52rpx;height: 52rpx;margin-right: 10rpx;vertical-align: bottom;vertical-align: bottom;" @click="btnshouye"></image>
		    <text style="width: 80%;text-align: center;display: inline-block;">{{deviceobj.deviceName == undefined ? '--' : deviceobj.deviceName}}</text>
			<view class="wz">
				<!-- 该设备还剩余时长：{{expireTimeStr}}分钟 -->
			</view>
			<view class="wz" @click="call" style="text-align: right;padding-right: 20rpx;" v-if="deviceobj.storeContactMobile == null">
				联系客服
				<!-- ：<text >{{deviceobj.userMobile == undefined ? '--' : deviceobj.userMobile}}</text> -->
			</view>
			<view class="wz" @click="call" style="text-align: right;padding-right: 20rpx;" v-else>
				联系客服
				<!-- ：<text >{{deviceobj.storeContactMobile == undefined ? '--' : deviceobj.storeContactMobile}}</text> -->
			</view>
		</view>

		<!-- 检测蓝牙未开启 -->
		<view class="shibai" v-if="lanyaflag">
			<view class="top">
				设备离线
			</view>
			<view class="tishi">
				检测到该设备离线,请打开蓝牙进行蓝牙模式
			</view>
			<view class="li">
				<view class="wz">
					第一：检查手机蓝牙是否打开
				</view>
				<image style="width: 386rpx;height: 263rpx;"
					src="https://api.ccttiot.com/smartmeter/img/static/uM4DY4Ee9AgFHLv4bIDR" mode="aspectFit"></image>
			</view>
			<view class="li">
				<view class="wz">
					第二：设置小程序蓝牙授权
				</view>
				<image style="width: 368rpx;height: 151rpx;"
					src="https://api.ccttiot.com/smartmeter/img/static/uAj06uo9qysixLrcFHBn" mode="aspectFit"></image>
				<image style="width: 386rpx;height: 301rpx;"
					src="https://api.ccttiot.com/smartmeter/img/static/ugFSKFZn4mzJJHQx3K2Z" mode="aspectFit"></image>
				<image style="width: 386rpx;height: 330rpx;"
					src="https://api.ccttiot.com/smartmeter/img/static/uZ4XoCI2KNQzcPKbwGLN" mode="aspectFit"></image>
			</view>
			<view class="jxcz" @click="btnjxcz">
				我已知晓
			</view>
		</view> 

		<view class="box" v-else>
			<view class="tit" style="display: flex;justify-content: space-between;width: 100%;">
				<text>选择服务</text>
				<!-- <image style="width: 50rpx;height: 50rpx;" :src="imglanya" mode="aspectFit"></image> -->
			</view>
			<view>
				<view :class="indexactive == item.suitId ? 'active':''"
					style="width:100%;height:100%;background: #fff;box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42,130,228,0.1);border-radius: 30rpx;padding: 20rpx 34rpx;box-sizing: border-box;margin-top: 20rpx;border: 4rpx solid #fff;"
					v-for="(item,index) in deviceobj.suitList" :key="index" @click="btnactive(item)">
					<view class="lt">
						<view class="tc" style="font-weight: 600;font-size: 34rpx;">
							{{item.name}}
						</view>
						<!-- <view class="date">
							{{item.value}} <text v-if="item.timeUnit == 1">日</text>  <text v-if="item.timeUnit == 2">时</text> <text v-if="item.timeUnit == 3">分钟</text> <text v-if="item.timeUnit == 4">秒</text>
						</view> -->
					</view>
					<view class="rt" style="margin-top: 10rpx;font-size: 28rpx;">
						<text v-if="item.feeType == 1">计时收费</text>
						<text v-if="item.feeType == 2">按量收费</text>
						<text v-if="item.feeType == 3">分时段按量收费</text>
						<text v-if="item.feeType == 4">分时段按时收费</text>
						（{{item.feeMode == 1 ? '单次收费' : '智能收费'}}）：
						<text v-if="item.feeType == 1">{{item.value}}<text v-if="item.timeUnit == 2">时</text> <text v-if="item.timeUnit == 3">分钟</text> <text v-if="item.timeUnit == 4">秒</text> {{item.price}}元</text>
						<text v-if="item.feeType == 2">{{item.value}}度{{item.price}}元</text>
						<text  v-if="item.feeMode == 2">预存{{item.deposit}}元</text>
						
					</view>
					<view class="" style="margin-top: 10rpx;color: #8883F0;font-size: 28rpx;" v-if="item.feeMode == 2">
						完成订单后押金将自动退还
					</view>
					<view class="" style="width: 100%" v-if="item.feeType == 3 || item.feeType == 4">
						<u-collapse>
								<u-collapse-item title="收费详情">
									<view class="" style="margin-bottom: 6rpx;font-size: 24rpx;">
										收费时间段(滑动查看各时段费用)
									</view>
									<view class="ulbox">
										<view class="ulli">
											<view class="li" v-for="(val,gearAmountindex) in item.arr" :key="gearAmountindex">
												{{val}}元
											</view>
										</view>
										<view class="olli">
											<view class="li" v-for="(vals,timeindex) in 24" :key="timeindex">
												{{timeindex + ':00'}}
											</view> 
										</view>
									</view>
								</u-collapse-item>
							</u-collapse>
					</view> 
					<view class="" style="margin-top: 10rpx;">
						套餐说明：{{item.description == null ? '无' : item.description}}
					</view>
					
				</view>
				<view v-if="deviceobj.suitList == null || deviceobj.suitList.length == 0" class="" style="color: #ccc;font-size: 36rpx;">
					该设备暂无套餐...
				</view>
			</view>

			<view class="tongyi" v-if="deviceobj.suitList != null">
				<u-checkbox-group>
					<u-checkbox v-model="checked" @change="checkboxChange" active-color="#8883F0 ">我已同意
					</u-checkbox><text @click="btnyonghu">《用户服务协议》</text> <text @click="btnyinsi">《隐私政策》</text>
				</u-checkbox-group>
				<!-- <view class="zf" v-else>
					立即支付
				</view> -->
				<!-- 获取手机号 -->
				<button class="zf" v-if="telslag" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
					立即支付
				</button>
				<view class="zf" @click="btnzhifu" v-else>
					立即支付
				</view>
			</view>
			<view class="mask" v-if="zhifuflag"></view>
			<view class="mask" v-if="czflag"></view>
            
			<view class="czdh"  v-if="jzflag">
                <view class="bj">
                	<view class="tittop">
                		正在充值中,请稍后
                	</view>
                	<view class="bfb">
                		{{progress}} %
                	</view>
                </view>
			</view>

		</view>
		
		<!-- 防诈骗提示 -->
		<view class="fangswindle" v-if="swindleflag">
			<image src="https://api.ccttiot.com/smartmeter/img/static/uvJcZhPixU1trBud6xTa" mode="aspectFit"></image>
			<view class="zhixiao" @click="btnswindleflag">
				我已知晓
			</view>
		</view>
		<view v-if="swindleflag" class="" style="width: 100%;height: 100vh;position: fixed;top: 0;left: 0;background-color: #000;opacity: .5;z-index: 98;"></view>
		<view class="mask" v-if="masksss">
			
		</view>
		
		
	</view>
</template>

<script>
	var xBlufi = require("@/page_components/blufi/xBlufi.js"); 
	export default {
		data() {
			return {
				flags:false,
				jzflag:false,
				progress: 0,
				isLoading: false,
				zhifuflag:false,
				indexactive: -1,
				checked: false,
				lanyaflag: false,
				deviceobj: {},
				timer: null,
				expireTimeStr: '',
				zfobj: {},
				orderno: '',
				masksss:false,
				id: '',
				czflag: false,
				sytime: 0,
				datetime: 0,
				mac: '',
				deviceId: '',
				name: '',
				ver_data: '',
				devicesList: [],
				onlineStatus: '',
				jine: '',
				dingobj: {},
				suitTimeUnit:'',
				zfflag:true,
				prices:'',
				sceneValue:'',
				suitFeeMode:'',
				suitFeeType:'',
				suitGearAmount:[],
				suitGearTime:[],
				suitPrice:'',
				payNo:'',
				q:'',
				channelId:'',
				swindleflag:false,
				phonenumber:'',
				mchShowBillMobile:'',
				telslag:false,
				userId:'',
				hasCalledGetczly:false,
				hasCalledGetczlys:false,
				hasCalledGetczlyss:false,
				arrlists:[],
				imglanya:'https://api.ccttiot.com/smartmeter/img/static/ulbuqIwcbhuCYGHZPAiL',
				// https://api.ccttiot.com/smartmeter/img/static/u7njR3SD9HSdu7TlOj42 正在连接
				//https://api.ccttiot.com/smartmeter/img/static/ulbuqIwcbhuCYGHZPAiL 连接失败
				//https://api.ccttiot.com/smartmeter/img/static/uzmkQ6a3gBrJ7SjbfmmU 连接成功
			}
		},
		onLoad(option) {
			if (option.q) {
				function getQueryParam(url, paramName) {
					let regex = new RegExp(`[?&]${paramName}=([^&]*)`);
					let results = regex.exec(url);
					return results ? decodeURIComponent(results[1].replace(/\+/g, ' ')) : null
				}
				this.sceneValue = option.q
				let decodedValue = decodeURIComponent(this.sceneValue);
				this.id = getQueryParam(decodedValue, 's')
			} else {
				this.id = option.id
			}
			console.log(this.id);
		},
		computed: {

		},
		// 分享到好友（会话）
		  onShareAppMessage: function () {  
		    return {  
		      title: '创想物联',  
		      path: '/pages/shouye/index'  
		    }  
		  },  
		  
		  // 分享到朋友圈  
		  onShareTimeline: function () {  
		    return {  
		      title: '创想物联',  
		      query: '',  
		      path: '/pages/shouye/index'  
		    }  
		  },
		onShow() {
			// this.getuserinfo()
			if(uni.getStorageSync('tcid')){
				uni.removeStorage({
				  key: 'tcid',
				  success: function () {
				    console.log('本地存储项 tcid 已删除');
				  },
				  fail: function (err) {
				    console.error('删除本地存储项失败：', err);
				  }
				})
			}
			this.getzfqd()
			setTimeout(()=>{
				if (this.id != '') {
					this.$u.get("/app/user/userInfo").then((res) => {
						if (res.code == 200) {
							this.phonenumber = res.data.phonenumber
							this.userId = res.data.userId
					        this.getone()
						} else {
							uni.navigateTo({
								url: '/pages/login/login?id=' + 1
							})
						} 
					})
				}
			},1)
		},
		onUnload: function() {
			if (this.timer) {
				clearInterval(this.timer)
				this.timer = null;
			}
			// xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
			// wx.closeBLEConnection({
			//   deviceId: this.deviceId,
			// })
		},
		onHide() {
			xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
			xBlufi.notifyStartDiscoverBle({
				'isStart': false
			});
		},
		onBeforeUnmount() {
			xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
			xBlufi.notifyStartDiscoverBle({
				'isStart': false
			})
		},
		methods: {
			//选择套餐
			btnactive(item) {
				console.log(item);
				this.prices = item.price
				this.sytime = item.value
				this.zfobj = item
				this.indexactive = item.suitId
				this.suitTimeUnit = item.timeUnit
				this.suitPrice = item.price
				this.suitGearAmount = item.gearAmount
				this.suitGearTime = item.gearTime
				this.suitFeeMode = item.feeMode
				this.suitFeeType = item.feeType
				if(item.feeMode == 2 && ['1','2'].includes(item.feeType)){
					let sum = item.deposit / item.price
					if(item.timeUnit == 1){
						this.jine = item.value  * 24 * 60 * 60 * sum
					}else if(item.timeUnit == 2){
						this.jine = item.value * 60 * 60 * sum
					}else if(item.timeUnit == 3){
						this.jine = item.value * 60 * sum
					}else if(item.timeUnit == 4){
						this.jine = item.value * sum
					}
				}else{
				    if(item.timeUnit == 1){
				    	this.jine = item.value  * 24 * 60 * 60
				    }else if(item.timeUnit == 2){
				    	this.jine = item.value * 60 * 60
				    }else if(item.timeUnit == 3){
				    	this.jine = item.value * 60
				    }else if(item.timeUnit == 4){
				    	this.jine = item.value
				    }
				}

				console.log(this.jine);
			},
			// 点击我已知晓隐藏防骗提示
			btnswindleflag(){
				this.swindleflag = false
			},
			getzfqd(){
				this.$u.get(`/app/channel/recharge/enabledList`).then(res =>{
					if(res.code == 200){
						this.channelId = res.data[0].channelId
						uni.hideLoading()
					}else{
						uni.hideLoading()
						uni.showToast({
							title:res.msg,
							icon: 'none',
							duration:2000
						})
					}
				})
			},
			
			getone(){
				let that = this
				let data = {
					deviceNo: that.id
				}
				that.$u.get(`/app/device/isBind?deviceNo=${that.id}`).then(res => {
					if (res.data == 2) {
						that.$u.get(`/app/device/${that.id}/withSuitList`).then((res) => {
							if (res.code == 200) {
								that.$u.get(`/app/device/${that.id}/bySn`).then((res) => {
									if (res.code == 200) {
										that.arrlists.push(res.data)
										console.log(that.arrlists);
										that.mac = 'CTKG-' + res.data.mac
										// getApp().set_ble_mac(this.qrResult)
										that.onlineStatus = res.data.onlineStatus
										if(that.onlineStatus == 1){
											// that.getanya()
										}
									}
								})
							} 
						})
					} else if (res.data == 1) {
						uni.navigateTo({
							url:'/pages/shouye/index?id=' + this.id
						})
					} else if (res.data == 0) {
						uni.navigateTo({
							url:'/pages/shouye/index?id=' + this.id
						})
					}
				})
				this.gettaoc()
			},
			
			
			
			btnshouye(){
				uni.reLaunch({
					url:'/pages/shouye/index'
				})
			},
			btnjxcz() {
				this.czflag = false
				xBlufi.initXBlufi(1)
				xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent);
				xBlufi.notifyStartDiscoverBle({
					'isStart': true
				})
				setTimeout(() => {
					xBlufi.notifyStartDiscoverBle({
						'isStart': false
					})
					if (this.devicesList.length > 0) {
						xBlufi.notifyConnectBle({
							isStart: true,
							deviceId: this.deviceId,
							name: this.name
						})
					}
				}, 2000)
			},

			call() {
				let phoneNumber = ''
				if (this.deviceobj.storeContactMobile == null) {
					phoneNumber = this.deviceobj.userMobile
				} else {
					phoneNumber = this.deviceobj.storeContactMobile
				}
				uni.makePhoneCall({
					phoneNumber: phoneNumber,
					success: function(res) {
						console.log('拨打电话成功', res)
					},
					fail: function(err) {
						console.error('拨打电话失败', err)
						uni.showToast({
							title: '拨打电话失败',
							icon: 'none'
						})
					}
				})
			},
			
			//
			btnyinsi(){
				uni.navigateTo({
					url: '/page_fenbao/statulist/about/index?tit=' + '隐私政策'
				})
			},
			btnyonghu(){
				uni.navigateTo({
					url: '/page_fenbao/statulist/about/index?tit=' + '用户服务协议'
				})
			},

			gettrue() {
				this.$u.get("/app/device/isBind?deviceNo=" + this.id).then((res) => {
					if (res.data == 0 || res.data == 1) {
						uni.navigateTo({
							url: '/pages/shouye/index?flag=' + true + '&id=' + this.id
						})
					}
				})
			},
			getuserinfo() {
				this.$u.get("/app/user/userInfo").then((res) => {
					if (res.code == 200) {
						// this.gettrue()
					} else {
						uni.navigateTo({
							url: '/pages/login/login?id=' + 1
						})
					}
				})
			},
			getmac() {
				this.$u.get(`/app/device/${this.id}/bySn`).then((res) => {
					if (res.code == 200) {
						// this.mac = 'CTKG-' + res.data.mac
						this.mac = res.data.mac
						this.onlineStatus = res.data.onlineStatus
						
					}
				})
			},
			// 连接蓝牙
			getanya(){
				if (this.ver_data == '') {
					let that = this
					xBlufi.initXBlufi(1)
					xBlufi.listenDeviceMsgEvent(true, that.funListenDeviceMsgEvent);
					xBlufi.notifyStartDiscoverBle({
						'isStart': true
					})
					setTimeout(() => {
						xBlufi.notifyStartDiscoverBle({
							'isStart': false
						})
						if (that.devicesList.length > 0) {
							xBlufi.notifyConnectBle({
								isStart: true,
								deviceId: that.deviceId,
								name: that.name
							})
						}
					}, 2000)
					// 蓝牙连接中
					setTimeout(()=>{
						if(that.ver_data == ''){
							// 重新进行连接
							that.imglanya = 'https://api.ccttiot.com/smartmeter/img/static/ulbuqIwcbhuCYGHZPAiL'
						}else{
							that.imglanya = 'https://api.ccttiot.com/smartmeter/img/static/uzmkQ6a3gBrJ7SjbfmmU'
						}
					},10000)
				} 
			},
			gettaoc() {
				this.$u.get(`/app/device/${this.id}/withSuitList`).then((res) => {
					if (res.code == 200) {
						this.deviceobj = res.data
						// 判断该设备有没有套餐
						if(this.deviceobj.suitList.length == 0 || this.deviceobj.suitList == ''){ 
							this.swindleflag = false
							if(this.userId == this.deviceobj.userId && this.deviceobj.suitList.length == 0){
								let that = this
								uni.showModal({
									title: '提示',
									content: '该设备暂无套餐,是否前去配置？',
									showCancel: true,
									success: function(res) {
										if (res.confirm) {
											uni.setStorageSync('tcidlist', that.arrlists)
											uni.navigateTo({
												url: '/page_fenbao/statulist/taocanlist/index?id=' + that.arrlists[0].deviceId + '&sn=' + that.id + '&modevalue=' + 3
											})
										} else if (res.cancel) {
								            uni.reLaunch({
								            	url:'/pages/shouye/index'
								            })
										}
									}
								})
							}else if(this.userId != this.deviceobj.userId && this.deviceobj.suitList.length == 0){
								uni.showToast({
									title:'该设备暂无套餐，请联系商家添加套餐在使用',
									icon: 'none',
									duration:5000
								})
							}
						}else{
							this.swindleflag = true
						}
						this.zfobj = res.data.suitList[0]
						let targetDateStr = this.deviceobj.expireTime
						this.mchShowBillMobile = res.data.mchShowBillMobile
						if((this.phonenumber == '' || this.phonenumber == null) && this.mchShowBillMobile == true){
							this.telslag = true
						}else{
							this.telslag = false
						}
						if(targetDateStr != null){
							let targetParts = targetDateStr.split(/[- :]/)
							let targetDate = new Date(targetParts[0], targetParts[1] - 1, targetParts[2], targetParts[3], targetParts[4], targetParts[5])
							let now = new Date()
							let differenceInMs = targetDate - now
							if (differenceInMs <= 0) {
								this.expireTimeStr = '0'
							} else {
								this.expireTimeStr = '1'
							}
						}
						if(res.data.suitList){
							this.mapGearTimeToGearAmount(res.data.suitList)
						}
					}
				})
			},
			mapGearTimeToGearAmount(suitList) {
			  // 遍历 suitList 数组
			  suitList.forEach(suit => {
			    const gearTime = suit.gearTime
			    const gearAmount = suit.gearAmount
			    const arr = new Array(gearTime.length).fill(null)
			    gearTime.forEach((time, index) => {
			      if (time >= 0 && time < gearAmount.length) {
			        arr[index] = gearAmount[time]
			      }
			    })
			    suit.arr = arr
			  })
			},
			btnzhifu() {
				if (this.checked == false) {
					uni.showToast({
						title: '请勾选用户服务协议 !',
						icon: 'none',
						duration: 1000
					})
				} else if (this.indexactive == -1) {
					uni.showToast({
						title: '请选择套餐 !',
						icon: 'none',
						duration: 1000
					})
				}else if((this.phonenumber == '' || this.phonenumber == null) && this.mchShowBillMobile == true){
					console.log(this.phonenumber,this.mchShowBillMobile)
					this.getPhoneNumber()
					this.telslag = true
				}else {
					this.zhifuflag = true
					this.getzhifu()
				}
			},
			// 获取手机号
			getPhoneNumber(e){
				console.log(e)
				this.$u.put(`/app/user/bindWxMobile?mobileCode=${e.detail.code}`).then(res =>{
					if(res.code == 200){
						this.zhifuflag = false
						this.getzhifu()
					}else{
						uni.showToast({
							title: res.msg,
							icon: 'none',
							duration: 1000
						})
					}
				})
			},
			// 支付
			getzhifu(){
				if (this.onlineStatus == 1) {
					uni.showLoading({
						title: '准备支付中...'
					})
					this.getzfqd()
					let that = this
					let data = {
						deviceNo: that.id,
						suitId: that.zfobj.suitId,
						money: that.zfobj.price,
						suitDeposit:that.zfobj.deposit,
						suitTime: that.zfobj.value,
						suitTimeUnit:that.suitTimeUnit,
						suitFeeMode:that.suitFeeMode,
						suitFeeType:that.suitFeeType,
						suitGearAmount:that.suitGearAmount,
						suitGearTime:that.suitGearTime,
						suitPrice:that.suitPrice
					}
					that.$u.post('/app/bill/recharge', data).then((res) => {
						if (res.code == 200) {
							that.orderno = res.data
							if(this.suitFeeType == 3 || this.suitFeeType == 4){
								let data = {
									billNo:that.orderno,
									channelId:that.channelId
								}
								that.$u.put(`/app/bill/pay`,data).then(res => {
									if(res.code == 200){
										that.payNo = res.data.payBill.payNo
										uni.requestPayment({
											provider: 'wxpay',
											timeStamp: res.data.payParams.timeStamp,
											nonceStr: res.data.payParams.nonceStr,
											package: res.data.payParams.packageVal,
											signType: res.data.payParams.signType,
											paySign: res.data.payParams.paySign,
											success: (res) => {
												this.zhifuflag = false
												// console.log(res, '支付成功')
												if (that.timer) {
													clearInterval(this.timer)
													that.timer = null;
												}
												that.$u.put(`/app/bill/${that.payNo}/refreshPayResult`).then(res => {})
												// 支付成功逻辑
												uni.reLaunch({
													url:'/page_components/eletj?id=' + that.orderno
												})
												uni.setStorageSync('time', that.expireTimeStr)
											},
											fail(err) {
												that.zhifuflag = false
												// 支付失败逻辑
												uni.showToast({
													title: '支付失败',
													icon: 'none',
													duration: 2000
												})
											}
										})
									}else{
										that.zhifuflag = false
										uni.showToast({
											title: res.msg,
											icon: 'none',
											duration: 2000
										})
									}
								})
							}else{
								let data = {
									billNo:that.orderno,
									channelId:that.channelId
								}
								that.$u.put(`/app/bill/pay`,data).then((res) => {
									if (res.code == 200) {
											uni.requestPayment({
												provider: 'wxpay',
												timeStamp: res.data.payParams.timeStamp,
												nonceStr: res.data.payParams.nonceStr,
												package: res.data.payParams.packageVal,
												signType: res.data.payParams.signType,
												paySign: res.data.payParams.paySign,
												success: (res) => {
													this.zhifuflag = false
													// console.log(res, '支付成功')
													if (that.timer) {
														clearInterval(this.timer)
														that.timer = null
													}
													that.$u.put(`/app/bill/${that.orderno}/refreshPayResult`).then(res => {})
													// 支付成功逻辑
													uni.reLaunch({
														url:'/page_components/eletj?id=' + that.orderno
													})
													uni.setStorageSync('time', that.expireTimeStr)
												},
												fail(err) {
													that.zhifuflag = false
													// 支付失败逻辑
													uni.showToast({
														title: '支付失败',
														icon: 'none',
														duration: 2000
													})
												}
											})
									}else{
										that.zhifuflag = false
										uni.showToast({
											title: res.msg,
											icon: 'none',
											duration: 2000
										})
									}
								})
							}
						} else if (res.code == 401) {
							uni.reLaunch({
								url: '/pages/login/login'
							})
							that.zhifuflag = false
						}else if(res.code == 500){
							uni.showToast({
								title:res.msg,
								icon: 'none',
								duration: 2000
							})
						}
					})
				} else {
					if (this.ver_data == '') {
						this.czflag = true	
						let that = this
						xBlufi.initXBlufi(1)
						xBlufi.listenDeviceMsgEvent(true, that.funListenDeviceMsgEvent)
						xBlufi.notifyStartDiscoverBle({
							'isStart': true
						})
						setTimeout(() => {
							xBlufi.notifyStartDiscoverBle({
								'isStart': false
							})
							if (that.devicesList.length > 0) {
								xBlufi.notifyConnectBle({
									isStart: true,
									deviceId: that.deviceId,
									name: that.name
								})
							}
						}, 2000)
						uni.showModal({
							title: '温馨提示',
							content: '检测到该设备未联网,为您切换为蓝牙模式,支付的时候靠近该设备,并打开蓝牙',
							showCancel: false,
							//是否显示取消按钮
							success: function(res) {
								uni.showLoading({
									title: '蓝牙连接中'
								})
							}
						})
						setTimeout(()=>{
							if(this.ver_data == ''){
								uni.showToast({
									title: '未连接成功，如多次失败请点击右上角联系客服咨询',
									icon: 'none',
									duration: 5000
								})
								this.czflag = false
								this.zhifuflag = false
								setTimeout(()=>{
									uni.hideLoading()
								},5000)
							}
						},10000)
					} else {
						uni.showLoading({
							title: '准备支付中...'
						})
						this.getzfqd()
						this.zhifuflag = true
						let that = this
						let data = {
							deviceNo: that.id,
							suitId: that.zfobj.suitId,
							money: that.zfobj.price,
							suitDeposit:that.zfobj.deposit,
							suitTime: that.zfobj.value,
							suitTimeUnit:that.suitTimeUnit,
							suitFeeMode:that.suitFeeMode,
							suitFeeType:that.suitFeeType,
							suitGearAmount:that.suitGearAmount,
							suitGearTime:that.suitGearTime,
							suitPrice:that.suitPrice
						}
						that.$u.post('/app/bill/recharge', data).then((res) => {
							if (res.code == 200) {
								that.orderno = res.data
								if(this.suitFeeType == 3 || this.suitFeeType == 4){
									let data = {
										billNo:that.orderno,
										channelId:that.channelId
									}
									that.$u.put(`/app/bill/pay`,data).then((res) => {
										if (res.code == 200) {
											    that.payNo = res.data.payBill.payNo
												uni.requestPayment({
													provider: 'wxpay',
													timeStamp: res.data.payParams.timeStamp,
													nonceStr: res.data.payParams.nonceStr,
													package: res.data.payParams.packageVal,
													signType: res.data.payParams.signType,
													paySign: res.data.payParams.paySign,
													success: (res) => {
														// console.log(res, '支付成功')
														if (that.timer) {
															clearInterval(this.timer)
															that.timer = null
														}
														// 111111111111111111111111 
														that.$u.put(`/app/payBill/${that.payNo}/refreshPayResult`).then(res =>{
															// if(res.code == 200){
																that.$u.get(`/app/bill/byNo/${that.orderno}`).then(res => {
																	let timesc = res.data.syncDeviceSeconds
																		if (res.code == 200) {
																			let datas = {
																				mac:that.mac,
																				reason:'下单' + that.orderno,
																				command:'11open',
																				result:'成功'
																			}
																			console.log(datas,'111');
																			that.$u.post(`/app/commandLog/bluetooth`,datas).then(res => {})
																			if(res.data.status == 2){
																				uni.getNetworkType({
																					success(res) {
																						if (res.networkType !== 'none') {
																							uni.getConnectedBluetoothDevices({
																								success(res) { 
																									that.jzflag = true
																									that.startLoading()
																									setTimeout(()=> {
																										xBlufi.notifySendCustomData({
																											customData:  "time@" + timesc
																										})
																										setTimeout(() => {
																											that.zhifuflag = false
																											uni.reLaunch({
																												url:'/page_components/eletj?id=' + that.orderno
																											})
																										},1000)
																									},1500)
																								},
																								fail(err) {
																									console.error('获取已连接蓝牙设备信息失败：',err)
																									that.ver_data = ''
																									uni.showModal({
																										title: '温馨提示',
																										content: '设备开启失败，检测到设备蓝牙已断开',
																										showCancel: false,
																										success: function(res) {
																											// uni.showLoading({
																											// 	title: '蓝牙连接中'
																											// })
																										}
																									})
																								}
																							})
																						} else {
																							console.log('手机未连接网络')
																							// this.baiflag = false
																						}
																					}
																				})
																			}else{
																				uni.showToast({
																					title: '支付失败',
																					icon: 'none',
																					duration: 2000
																				});
																			}
																		}else{
																			uni.showToast({
																				title: res.msg,
																				icon: 'none',
																				duration: 2000
																			})
																		}
																	})
															// }
														})
														// 支付成功逻辑
														uni.setStorageSync('time', that.expireTimeStr)
													},
													fail(err) {
														this.zhifuflag = false
														setTimeout(() => {
															this.czflag = false
															uni.hideLoading()
														}, 500)
														// 支付失败逻辑
														uni.showToast({
															title: '支付失败',
															icon: 'none',
															duration: 2000
														})
													}
												})
										}else{
											this.zhifuflag = false
										}
									})
								}else{
								let data = {
									billNo:that.orderno,
									channelId:that.channelId
								}
								that.$u.put(`/app/bill/pay`,data).then((res) => {
										if (res.code == 200) {
												uni.requestPayment({
													provider: 'wxpay',
													timeStamp: res.data.payParams.timeStamp,
													nonceStr: res.data.payParams.nonceStr,
													package: res.data.payParams.packageVal,
													signType: res.data.payParams.signType,
													paySign: res.data.payParams.paySign,
													success: (res) => {
														// console.log(res, '支付成功')
														if (that.timer) {
															clearInterval(this.timer)
															that.timer = null
														}
														// 111111111111111111111111 
														that.$u.put(`/app/bill/${that.orderno}/refreshPayResult`).then(res =>{
															// if(res.code == 200 || res.code == 500){
																that.$u.put(`/app/bill/rechargeBillDevice?billNo=${that.orderno}`).then(res=>{
																	that.$u.get('/app/bill/recharge/device/fail/list').then(res => { //充值失败调用
																			if (res.code == 200) {
																				console.log('获取订单状态',res)
																				if(res.data.length > 0 && res.data != null){
																					let dingobj = res.data[0].billNo
																					let times = res.data[0].syncDeviceSeconds
																					console.log(dingobj,'订单号')
																					let datas = {
																						mac:that.mac,
																						reason:'下单' + that.orderno,
																						command:'time@',
																						result:'成功'
																					}
																					console.log(datas,'222');
																					that.$u.post(`/app/commandLog/bluetooth`,datas).then(res => {})
																					uni.getNetworkType({
																						success(res) {
																							if (res.networkType !== 'none') {
																								uni.getConnectedBluetoothDevices({
																									success(res) {
																										that.jzflag = true
																										that.startLoading()
																										
																										setTimeout(()=> {
																											xBlufi.notifySendCustomData({
																												   customData: "time@" + times
																												})
																										},1500)
																									},
																									fail(err) {
																										console.error('获取已连接蓝牙设备信息失败：',err)
																										let that = this
																										that.ver_data = ''
																										uni.showModal({
																											title: '温馨提示',
																											content: '设备开启失败，检测到设备蓝牙已断开',
																											showCancel: false,
																											success: function(res) {
																												
																											}
																										})
																									}
																								})
																								if(that.ver_data != ''){
																									that.$u.get(`/app/bill/recharge/${dingobj}/bluetoothSuccess`).then(res => {
																												if (res.code == 200) {
																													that.zhifuflag = false
																													console.log('蓝牙离线充值成功11')
																													setTimeout(() => {
																														uni.reLaunch({
																															url:'/page_components/eletj?id=' + that.orderno
																														})
																													},1000)
																												}else{
																													uni.showToast({
																														title: res.msg,
																														icon: 'none',
																														duration: 2000
																													})
																												}
																											})
																								}
																							} else {
																								console.log('手机未连接网络')
																								// this.baiflag = false
																							}
																						}
																					})
																				}else{
																					setTimeout(() => {
																						uni.reLaunch({
																							url:'/pages/shouye/index'
																						})
																					},1000)
																				}
																			}
																		})
																})
															// }
														})
														// 支付成功逻辑
														uni.setStorageSync('time', that.expireTimeStr)
													},
													fail(err) {
														this.zhifuflag = false
														setTimeout(() => {
															this.czflag = false
															uni.hideLoading()
														}, 500)
														// 支付失败逻辑
														uni.showToast({
															title: '支付失败',
															icon: 'none',
															duration: 2000
														});
													}
												})
										}else{
											this.zhifuflag = false
											uni.showToast({
												title: res.msg,
												icon: 'none',
												duration: 2000
											})
										}
									})
								}
							} else if (res.code == 500) {
								uni.showToast({
									title: res.msg,
									icon: 'none',
									duration: 2000
								});
							} else {
								this.czflag = false
							}
						})
					}
				}
			},
			
			// 蓝牙连接成功后执行
			getczly(){
					uni.showLoading({
						title: '准备支付中...'
					})
					this.getzfqd()
					this.zhifuflag = true
					let that = this
					let data = {
						deviceNo: that.id,
						suitId: that.zfobj.suitId,
						money: that.zfobj.price,
						suitDeposit:that.zfobj.deposit,
						suitTime: that.zfobj.value,
						suitTimeUnit:that.suitTimeUnit,
						suitFeeMode:that.suitFeeMode,
						suitFeeType:that.suitFeeType,
						suitGearAmount:that.suitGearAmount,
						suitGearTime:that.suitGearTime,
						suitPrice:that.suitPrice
					}
					that.$u.post('/app/bill/recharge', data).then((res) => {
						if (res.code == 200) {
							that.orderno = res.data
							if(this.suitFeeType == 3 || this.suitFeeType == 4){
								let data = {
									billNo:that.orderno,
									channelId:that.channelId
								}
								that.$u.put(`/app/bill/pay`,data).then((res) => {
									if (res.code == 200) {
										    that.payNo = res.data.payBill.payNo
											uni.requestPayment({
												provider: 'wxpay',
												timeStamp: res.data.payParams.timeStamp,
												nonceStr: res.data.payParams.nonceStr,
												package: res.data.payParams.packageVal,
												signType: res.data.payParams.signType,
												paySign: res.data.payParams.paySign,
												success: (res) => {
													// console.log(res, '支付成功')
													if (that.timer) {
														clearInterval(this.timer)
														that.timer = null
													}
													// 111111111111111111111111 
													that.$u.put(`/app/payBill/${that.payNo}/refreshPayResult`).then(res =>{
														// if(res.code == 200){
															that.$u.get(`/app/bill/byNo/${that.orderno}`).then(res => {
																	if (res.code == 200) {
																		let timesc = res.data.syncDeviceSeconds
																		that.$u.get(`/app/bill/recharge/${res.data.billNo}/bluetoothSuccess`).then(res =>{})
																		let datas = {
																			mac:that.mac,
																			reason:'下单' + that.orderno,
																			command:'11open',
																			result:'成功'
																		}
																		console.log(datas,'333');
																		that.$u.post(`/app/commandLog/bluetooth`,datas).then(res => {})
																		if(res.data.status == 2){
																			uni.getNetworkType({
																				success(res) {
																					if (res.networkType !== 'none') {
																						uni.getConnectedBluetoothDevices({
																							success(res) { 
																								that.jzflag = true
																								that.startLoading()
																								setTimeout(()=> {
																									xBlufi.notifySendCustomData({
																											customData:  "time@" + timesc
																										})
																										
																										setTimeout(() => {
																											if(that.ver_data == ''){
																												uni.showToast({
																													title: '蓝牙已断开，蓝牙充值失败',
																													icon: 'none',
																													duration: 2000
																												})
																											}else{
																												that.zhifuflag = false
																												uni.reLaunch({
																													url:'/page_components/eletj?id=' + that.orderno
																												})
																											}
																										},1000)
																								},500)
																							},
																							fail(err) {
																								console.error('获取已连接蓝牙设备信息失败：',err)
																								let that = this
																								that.ver_data = ''
																								uni.showModal({
																									title: '温馨提示',
																									content: '设备开启失败，检测到设备蓝牙已断开',
																									showCancel: false,
																									success: function(res) {
																										// uni.showLoading({
																										// 	title: '蓝牙连接中'
																										// })
																									}
																								})
																							}
																						})
																					} else {
																						console.log('手机未连接网络')
																						// this.baiflag = false
																					}
																				}
																			})
																		}else{
																			uni.showToast({
																				title: '支付失败',
																				icon: 'none',
																				duration: 2000
																			});
																		}
																	}else{
																		uni.showToast({
																			title: res.msg,
																			icon: 'none',
																			duration: 2000
																		})
																	}
																})
														// }
													})
													// 支付成功逻辑
													uni.setStorageSync('time', that.expireTimeStr)
												},
												fail(err) {
													this.zhifuflag = false
													setTimeout(() => {
														this.czflag = false
														uni.hideLoading()
													}, 500)
													// 支付失败逻辑
													uni.showToast({
														title: '支付失败',
														icon: 'none',
														duration: 2000
													});
												}
											})
									}else{
										this.zhifuflag = false
									}
								})
							}else{
							let data = {
								billNo:that.orderno,
								channelId:that.channelId
							}
							that.$u.put(`/app/bill/pay`,data).then((res) => {
									if (res.code == 200) {
											uni.requestPayment({
												provider: 'wxpay',
												timeStamp: res.data.payParams.timeStamp,
												nonceStr: res.data.payParams.nonceStr,
												package: res.data.payParams.packageVal,
												signType: res.data.payParams.signType,
												paySign: res.data.payParams.paySign,
												success: (res) => {
													// console.log(res, '支付成功');
													if (that.timer) {
														clearInterval(this.timer);
														that.timer = null;
													}
													// 111111111111111111111111 
													that.$u.put(`/app/bill/${that.orderno}/refreshPayResult`).then(res =>{
														// if(res.code == 200 || res.code == 500){
															that.$u.put(`/app/bill/rechargeBillDevice?billNo=${that.orderno}`).then(res=>{
																that.$u.get('/app/bill/recharge/device/fail/list').then(res => { //充值失败调用
																		if (res.code == 200) {
																			console.log('获取订单状态',res);
																			if(res.data.length > 0 && res.data != null){
																				let dingobj = res.data[0].billNo
																				let times = res.data[0].syncDeviceSeconds
																				console.log(dingobj,'订单号');
																				let datas = {
																					mac:that.mac,
																					reason:'下单' + that.orderno,
																					command:'time@',
																					result:'成功'
																				}
																				console.log(datas,'444');
																				that.$u.post(`/app/commandLog/bluetooth`,datas).then(res => {})
																				uni.getNetworkType({
																					success(res) {
																						if (res.networkType !== 'none') {
																							uni.getConnectedBluetoothDevices({
																								success(res) {
																									that.jzflag = true
																									that.startLoading()
																									setTimeout(()=> {
																										xBlufi.notifySendCustomData({
																												customData: "time@" + times
																											})	
																											if(that.ver_data != ''){
																												that.$u.get(`/app/bill/recharge/${dingobj}/bluetoothSuccess`).then(res => {
																															if (res.code == 200) {
																																that.zhifuflag = false
																																console.log('蓝牙离线充值成功11')
																																setTimeout(() => {
																																	if(that.ver_data == ''){
																																		uni.showToast({
																																			title: '蓝牙已断开，蓝牙充值失败',
																																			icon: 'none',
																																			duration: 2000
																																		})
																																	}else{
																																		that.zhifuflag = false
																																		uni.reLaunch({
																																			url:'/page_components/eletj?id=' + that.orderno
																																		})
																																	}
																																},1000)
																															}else{
																																uni.showToast({
																																	title: res.msg,
																																	icon: 'none',
																																	duration: 2000
																																})
																															}
																														})
																											}
																											
																									},1000)
																									
																								},
																								fail(err) {
																									console.error('获取已连接蓝牙设备信息失败：',err)
																									let that = this
																									that.ver_data = ''
																									uni.showModal({
																										title: '温馨提示',
																										content: '设备开启失败，检测到设备蓝牙已断开',
																										showCancel: false,
																										success: function(res) {
																											// uni.showLoading({
																											// 	title: '蓝牙连接中'
																											// })
																										}
																									})
																								}
																							})
																							
																						} else {
																							console.log('手机未连接网络')
																							// this.baiflag = false
																						}
																					}
																				})
																			}else{
																				setTimeout(() => {
																					uni.reLaunch({
																						url:'/pages/shouye/index'
																					})
																				},1000)
																			}
																		}
																	})
															})
														// }
													})
													// 支付成功逻辑
													uni.setStorageSync('time', that.expireTimeStr)
												},
												fail(err) {
													this.zhifuflag = false
													setTimeout(() => {
														this.czflag = false
														uni.hideLoading()
													}, 500)
													// 支付失败逻辑
													uni.showToast({
														title: '支付失败',
														icon: 'none',
														duration: 2000
													});
												}
											})
									}else{
										this.zhifuflag = false
										uni.showToast({
											title: res.msg,
											icon: 'none',
											duration: 2000
										})
									}
								})
							}
						} else if (res.code == 500) {
							uni.showToast({
								title: res.msg,
								icon: 'none',
								duration: 2000
							});
						} else {
							this.czflag = false
						}
					})
			},
			
			
			 startLoading() {
			    this.isLoading = true;
			    const intervalId = setInterval(() => {
			      this.progress += 100 / 100; // 每次增加 1
			      if (this.progress >= 99) {
			        clearInterval(intervalId);
			        this.isLoading = false;
			        this.progress = 98; // 确保进度条最终达到98
			      }
			    }, 15);
			 },
			checkboxChange(e) {
				this.checked = e.value
			},

            // 获取附近蓝牙设备列表
			funListenDeviceMsgEvent: function(options) {
				switch (options.type) { 
					case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
						if (!options.result) {
							uni.showModal({
								title: '很抱歉提醒你！',
								content: '小程序与设备异常断开',
								showCancel: false,
								//是否显示取消按钮
								success: function(res) {
									this.ver_data = ''
								}
							})
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
						if (options.result) {
							let devicesarr = options.data
							console.log(devicesarr,this.mac,'111');
							devicesarr.forEach(device => {
								const mac = device.name.substring(4);
								if (device.name.slice(5, 17) == this.mac.slice(5, 17)) {
									this.deviceId = device.deviceId
									this.name = device.name
									// console.log(device.name,this.mac,'222');
									this.devicesList.push(device);
									let uniqueDevicesList = Array.from(new Set(this.devicesList));
									// 将去重后的数组重新赋值给 this.devicesList
									this.devicesList = uniqueDevicesList;
								} else {
									
								}
							})
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
						console.log("连接回调：" + JSON.stringify(options));
						if (options.result) {
							// console.log('125451245')  
							{
								xBlufi.notifyInitBleEsp32({
									deviceId: this.deviceId
								});
								this.deviceIds = options.data.deviceId
								this.name = this.name
							}
						}else{
							
						}

						break;
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
						this.ver_data = this.parseCustomData(options.data)
						console.log("1收到设备发来的自定义数据结果：",options.data);
						setTimeout(()=>{
							this.czflag = false
							this.zhifuflag = false
							uni.hideLoading()
							this.imglanya = 'https://api.ccttiot.com/smartmeter/img/static/uzmkQ6a3gBrJ7SjbfmmU'
							 if (!this.hasCalledGetczly) {  
								    this.getlyxx(options.data)
							        this.getczly()
							        this.hasCalledGetczly = true 
								}
						    },1000)
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_STOP:
						if (options.result) {
							let uniqueDevicesList = Array.from(new Set(this.devicesList));
							let filteredDevices = uniqueDevicesList.filter(device => device.name.substring(0, 4) === "CTKG");
							// 将过滤后的数组重新赋值给 this.devicesList
							this.devicesList = filteredDevices;
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
						if (!options.result) {
							this.lanyaflag = true
							uni.showToast({
								title: '蓝牙未开启',
								icon: 'none',
								duration: 3000
							});
							return
						} else {
							this.lanyaflag = false
						}
						break;
				}
			},
			
			funListenDeviceMsgEvents: function(options) {
				switch (options.type) { 
					case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
						if (!options.result) {
							uni.showModal({
								title: '很抱歉提醒你！',
								content: '小程序与设备异常断开',
								showCancel: false,
								//是否显示取消按钮
								success: function(res) {
									this.ver_data = ''
								}
							})
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
						if (options.result) {
							let devicesarr = options.data
							console.log(devicesarr,this.mac,'111');
							devicesarr.forEach(device => {
								const mac = device.name.substring(4);
								if (device.name.slice(5, 17) == this.mac.slice(5, 17)) {
									this.deviceId = device.deviceId
									this.name = device.name
									// console.log(device.name,this.mac,'222');
									this.devicesList.push(device);
									let uniqueDevicesList = Array.from(new Set(this.devicesList));
									// 将去重后的数组重新赋值给 this.devicesList
									this.devicesList = uniqueDevicesList;
								} else {
									// uni.showToast({
									// 	title: '未找到该设备，请确认该设备在附近',
									// 	icon: 'none',
									// 	duration: 3000
									// })
								}
							})
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
						console.log("连接回调：" + JSON.stringify(options));
						if (options.result) {
							// console.log('125451245')  
							{
								xBlufi.notifyInitBleEsp32({
									deviceId: this.deviceId
								});
								this.deviceIds = options.data.deviceId
								this.name = this.name
							}
						}else{
							
						}
			
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
						this.ver_data = this.parseCustomData(options.data)
						console.log("1收到设备发来的自定义数据结果：", this.ver_data);
						setTimeout(()=>{
							this.czflag = false
							this.zhifuflag = false
							uni.hideLoading()
							
							 if (!this.hasCalledGetczlys) { 
								    this.getlyxx(options.data)
							        this.hasCalledGetczlys = true 
									let that = this
									let datas = {
										mac:that.mac,
										reason:'下单',
										command:'11open',
										result:'成功'
									}
									console.log(datas,'555');
									that.$u.post(`/app/commandLog/bluetooth`,datas).then(res => {})
									uni.getNetworkType({
										success(res) {
											if (res.networkType !== 'none') {
												uni.getConnectedBluetoothDevices({
													success(res) { 
														that.jzflag = true
														that.startLoading()
														setTimeout(()=> {
															xBlufi.notifySendCustomData({
																	customData: 'open'
																})
																xBlufi.notifySendCustomData({
																		customData: '11open'
																	})
																	
																setTimeout(() => {
																	that.zhifuflag = false
																	uni.reLaunch({
																		url:'/page_components/eletj?id=' + that.orderno
																	})
																},1000)
														},1500)
													},
													fail(err) {
														console.error('获取已连接蓝牙设备信息失败：',err)
													}
												})
											} else {
												console.log('手机未连接网络')
											}
										}
									})
								}
						    },1000)
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_STOP:
						if (options.result) {
							let uniqueDevicesList = Array.from(new Set(this.devicesList));
							let filteredDevices = uniqueDevicesList.filter(device => device.name.substring(0, 4) === "CTKG");
							// 将过滤后的数组重新赋值给 this.devicesList
							this.devicesList = filteredDevices;
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
						if (!options.result) {
							this.lanyaflag = true
							uni.showToast({
								title: '蓝牙未开启',
								icon: 'none',
								duration: 3000
							});
							return
						} else {
							this.lanyaflag = false
						}
						break;
				}
			},
			
			funListenDeviceMsgEventss: function(options) {
				switch (options.type) { 
					case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
						if (!options.result) {
							uni.showModal({
								title: '很抱歉提醒你！',
								content: '小程序与设备异常断开',
								showCancel: false,
								//是否显示取消按钮
								success: function(res) {
									this.ver_data = ''
								}
							})
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
						if (options.result) {
							let devicesarr = options.data
							console.log(devicesarr,this.mac,'111');
							devicesarr.forEach(device => {
								const mac = device.name.substring(4);
								if (device.name.slice(5, 17) == this.mac.slice(5, 17)) {
									this.deviceId = device.deviceId
									this.name = device.name
									// console.log(device.name,this.mac,'222');
									this.devicesList.push(device);
									let uniqueDevicesList = Array.from(new Set(this.devicesList));
									// 将去重后的数组重新赋值给 this.devicesList
									this.devicesList = uniqueDevicesList;
								} else {
									// uni.showToast({
									// 	title: '未找到该设备，请确认该设备在附近',
									// 	icon: 'none',
									// 	duration: 3000
									// })
								}
							})
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
						console.log("连接回调：" + JSON.stringify(options));
						if (options.result) {
							// console.log('125451245')  
							{
								xBlufi.notifyInitBleEsp32({
									deviceId: this.deviceId
								});
								this.deviceIds = options.data.deviceId
								this.name = this.name
							}
						}else{
							
						}
			
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
						this.ver_data = this.parseCustomData(options.data)
						console.log("1收到设备发来的自定义数据结果：", this.ver_data);
						setTimeout(()=>{
							this.czflag = false
							this.zhifuflag = false
							uni.hideLoading()
							
							 if (!this.hasCalledGetczlyss) {  
								    this.getlyxx(options.data)
							        this.hasCalledGetczlyss = true 
									let that = this
									that.$u.put(`/app/bill/${that.orderno}/refreshPayResult`).then(res =>{
										// if(res.code == 200 || res.code == 500){
											that.$u.put(`/app/bill/rechargeBillDevice?billNo=${that.orderno}`).then(res=>{
												that.$u.get('/app/bill/recharge/device/fail/list').then(res => { //充值失败调用
														if (res.code == 200) {
															console.log('获取订单状态',res);
															if(res.data.length > 0 && res.data != null){
																let dingobj = res.data[0].billNo
																console.log(dingobj,'订单号')
																let datas = {
																	mac:that.mac,
																	reason:'下单' + that.orderno,
																	command:'time@',
																	result:'成功'
																}
																console.log(datas,'666');
																that.$u.post(`/app/commandLog/bluetooth`,datas).then(res => {})
																uni.getNetworkType({
																	success(res) {
																		if (res.networkType !== 'none') {
																			uni.getConnectedBluetoothDevices({
																				success(res) {
																					that.jzflag = true
																					that.startLoading()
																					setTimeout(()=> {
																						xBlufi.notifySendCustomData({
																								customData: "time@" + that.jine
																							})
																					},1500)
																				},
																				fail(err) {
																					console.error('获取已连接蓝牙设备信息失败：',err)
																				}
																			})
																			if(that.ver_data != ''){
																				that.$u.get(`/app/bill/recharge/${dingobj}/bluetoothSuccess`).then(res => {
																							if (res.code == 200) {
																								that.zhifuflag = false
																								console.log('蓝牙离线充值成功11')
																								setTimeout(() => {
																									if(that.ver_data == ''){
																										uni.showToast({
																											title: '蓝牙已断开，蓝牙充值失败',
																											icon: 'none',
																											duration: 2000
																										})
																									}else{
																										that.zhifuflag = false
																										uni.reLaunch({
																											url:'/page_components/eletj?id=' + that.orderno
																										})
																									}
																								},1000)
																							}else{
																								uni.showToast({
																									title: res.msg,
																									icon: 'none',
																									duration: 2000
																								})
																							}
																						})
																			}
																		} else {
																			console.log('手机未连接网络')
																			// this.baiflag = false
																		}
																	}
																})
															}else{
																setTimeout(() => {
																	uni.reLaunch({
																		url:'/pages/shouye/index'
																	})
																},1000)
															}
														}
													})
											})
										// }
									})
								}
						    },1000)
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_STOP:
						if (options.result) {
							let uniqueDevicesList = Array.from(new Set(this.devicesList));
							let filteredDevices = uniqueDevicesList.filter(device => device.name.substring(0, 4) === "CTKG");
							// 将过滤后的数组重新赋值给 this.devicesList
							this.devicesList = filteredDevices;
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
						if (!options.result) {
							this.lanyaflag = true
							uni.showToast({
								title: '蓝牙未开启',
								icon: 'none',
								duration: 3000
							});
							return
						} else {
							this.lanyaflag = false
						}
						break;
				}
			},
			// 同步蓝牙信息
			getlyxx(data){
				this.$u.put(`/app/device/bltSyncIot?sn=${this.id}&info=${data}`).then(res => {
					if (res.code == 200) {
						
					}else{
						uni.showToast({
							title: res.msg,
							icon: 'none',
							duration: 2000
						})
					}
				})
			},
			
			parseCustomData(data) {
				const dataArray = data.split('@');
				const parsedData = {};
				const prefixMap = {
					'V': 'voltage',
					'S': 'switchState',
					'A': 'current',
					'P': 'power',
					'M': 'remainingPower',
					'T': 'setMode',
					'W': 'temperature'
				};
				// 遍历数组并解析每个字段  
				for (let i = 0; i < dataArray.length; i++) {
					const field = dataArray[i]
					for (const prefix in prefixMap) {
						if (field.startsWith(prefix)) {
							const value = field.substring(1)
							const propertyName = prefixMap[prefix]
							parsedData[propertyName] = isNaN(parseFloat(value)) ? value : parseFloat(value)
							break
						}
					}
				}
				return parsedData;
			},

		}
	}
</script>

<style lang="scss">
	.fangswindle{
		position: fixed;
		top: 500rpx;
		left: 50%;
		transform: translateX(-50%);
		z-index: 99;
		image{
			width: 584rpx;
			height: 456rpx;
		}
		.zhixiao{
			width: 530rpx;
			height: 76rpx;
			background: #8883F0;
			border-radius: 47rpx 47rpx 47rpx 47rpx;
			text-align: center;
			line-height: 76rpx;
			font-size: 32rpx;
			color: #FFFFFF;
			position: fixed;
			top: 340rpx;
			left: 50%;
			transform: translateX(-50%);
			z-index: 99;
		}
	}
	.czdh{
		width: 100%;
		height: 100vh;
		position: fixed;
		top: 0;
		left: 0;
		background-color: rgba(0, 0, 0, .5);
		padding-top: 700rpx;
		.bj{
			width: 500rpx;
			height: 300rpx;
			background-color: #fff;
			margin: auto;
			border-radius: 20rpx;
			.tittop{
				width: 100%;
				text-align: center;
				padding-top: 50rpx;
				box-sizing: border-box;
			}
			.bfb{
				width: 100%;
				text-align: center;
				padding-top: 50rpx;
				box-sizing: border-box;
				font-size: 50rpx;
			}
		}
	}
	.u-icon__icon{
		// margin-right: 20rpx;
	}
	.mask {
		width: 100%;
		height: 100vh;
		position: fixed;
		top: 0;
		left: 50%;
		transform: translateX(-50%);
		background-color: #000;
		opacity: .5;
	}
    .ulbox{
		width: 100%;
		overflow: scroll;
		.ulli{
			display: flex;
			width: 170vh;
			.li{
				flex: 1;
				border: 1rpx solid #ccc;
				text-align: center;
				font-size: 32rpx;
				color: #8883F0;
				height: 88rpx;
				line-height: 88rpx;
			}
		}
		.olli{
			display: flex;
			width: 170vh;
			.li{
				flex: 1;
				border: 1rpx solid #ccc;
				text-align: center;
				font-size: 22rpx;
				color: #262B37;
				height: 88rpx;
				line-height: 88rpx;
			}
		}
	}
	.shibai {
		margin-top: 50rpx;
		text-align: center;
		padding-bottom: 600rpx;
		height: 100vh;
		overflow: scroll;

		.jxcz {
			width: 563rpx;
			height: 100rpx;
			background: #8883F0;
			border-radius: 60rpx 60rpx 60rpx 60rpx;
			text-align: center;
			line-height: 100rpx;
			font-size: 45rpx;
			color: #FFFFFF;
			position: fixed;
			bottom: 62rpx;
			left: 50%;
			transform: translateX(-50%);
		}

		.top {
			font-size: 40rpx;
			color: #3D3D3D;
		}

		.tishi {
			font-size: 31rpx;
			color: #3D3D3D;
			margin-top: 50rpx;
		}

		.li {
			margin-top: 50rpx;
			font-size: 31rpx;
			color: #3D3D3D;

			image {
				margin-top: 30rpx;
			}
		}
	}

	/deep/ .u-title {
		padding-bottom: 22rpx;
	}

	/deep/ .u-checkbox__label {
		margin-right: 0 !important;
	}

	// /deep/ .u-icon__icon{
	// 	padding-bottom: 41rpx;
	// }
	page {
		background: linear-gradient(180deg, #8883F0 0%, rgba(255, 255, 255, 0) 100%);
	}

	.active {
		// background-color: #8883F0 !important;
		// color: #fff !important;
		border: 4rpx solid #8883F0 !important;
		box-sizing: border-box;
	}

	.page {
		width: 750rpx;
		// position: fixed;
		// top: 0;
		// left: 0;
		overflow: hidden;
		height: 100vh;

		.tip_box {
			position: fixed;
			left: 72rpx;
			top: 700rpx;
			width: 610rpx;
			// height: 282rpx;
			background: #F7FAFE;
			border-radius: 30rpx 30rpx 30rpx 30rpx;
			z-index: 10000000;

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

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

			.bot {
				border-top: 2rpx solid #D8D8D8;
				display: flex;
				flex-wrap: nowrap;
				height: 100%;

				.bot_left {
					width: 50%;
					height: 98rpx;
					display: flex;
					align-items: center;
					justify-content: center;
					font-weight: 500;
					font-size: 36rpx;
					color: #3D3D3D;
				}

				.bot_right {
					width: 50%;
					height: 98rpx;
					display: flex;
					align-items: center;
					justify-content: center;

					border-left: 2rpx solid #D8D8D8;
					font-weight: 500;
					font-size: 36rpx;
					color: #8883F0;

				}

			}
		}

		.title {
			margin-top: 40rpx;
			padding-left: 32rpx;
			font-weight: 600;
			font-size: 40rpx;
			color: #fff;
			margin-bottom: 30rpx;
			margin-top: 110rpx;
			height: 126rpx;

			.wz {
				font-weight: 400;
				font-size: 32rpx;
				margin-top: 30rpx;
			}
		}

		.box {
			width: 750rpx;
			height: 71vh;
			overflow: scroll;
			background: #F4F5F7;
			border-radius: 0rpx 0rpx 0rpx 0rpx;
			padding: 36rpx 54rpx;
			box-sizing: border-box;
			border-radius: 30rpx 30rpx 0 0;

			.tongyi {
				width: 590rpx;
				position: fixed;
				bottom: 50rpx;
				left: 50%;
				transform: translateX(-50%);

				text {
					color: #638DFF;
					height: 50rpx;
					line-height: 50rpx;
				}

				.zf {
					width: 590rpx;
					height: 84rpx;
					background: #8883F0;
					filter: blur(0px);
					border-radius: 50rpx;
					text-align: center;
					line-height: 84rpx;
					font-size: 36rpx;
					color: #FFFFFF;
					margin-top: 10rpx;
				}
			}

			.shuom {
				width: 648rpx;
				max-height: 100%;
				background: #FFFFFF;
				box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
				filter: blur(0px);
				border-radius: 30rpx;
				margin: auto;
				margin-top: 36rpx;
				padding: 20rpx 36rpx;
				box-sizing: border-box;

				.tits {
					font-size: 32rpx;
					font-weight: 600;
					margin-top: 30rpx;
				}


			}

			.wz {
				font-size: 28rpx;
				color: #ccc;
				margin-top: 30rpx;
				font-weight: 400;
			}

			.list_val {
				.tc {
					font-weight: 600;
					font-size: 34rpx;
					color: #525252;
				}

				.date {
					font-size: 26rpx;
					color: #525252;
					margin-top: 10rpx;
				}

				.rt {
					font-size: 40rpx;
					color: #525252;
					padding-top: 20rpx;
				}
			}

			.tit {
				font-size: 40rpx;
				color: #383838;
				font-weight: 600;
				margin-bottom: 32rpx;
			}
		}
	}
</style>