<template>
	<view class="page">
		<u-navbar  :title="tittxt" :border-bottom="false" :background="bgc" back-icon-color="#000" title-color='#000'
			title-size='36' height='50' id="navbar" :custom-back="btns">
		</u-navbar>
		<view class="zhuhu">
			<view class="card1">
				<view class="mid">
					<view class="mid_right">
						<view class="mid_top" @click="btnxgname">
							{{ deviceInfo.deviceName == null ? '' : deviceInfo.deviceName }} <u-icon name="edit-pen-fill" color="#333" size="32"></u-icon>
						</view>
						<view class="txt" v-if="deviceInfo" style="width: 100%;margin-top: 6rpx;">
							SN：{{ deviceInfo.deviceNo == null ? '' : deviceInfo.deviceNo }}</view>
						<view class="mid_bot">
							<div class="tip" v-if="deviceInfo.onlineStatus==1">
								<text style="color: #00BA88;border: 1px solid #00BA88;padding: 2rpx 8rpx;box-sizing: border-box;border-radius: 10rpx;">在线</text>
							</div>
							<div class="tip" v-if="deviceInfo.onlineStatus==0">
								<text style="color: #F76D6D;border: 1px solid #F76D6D;padding: 2rpx 8rpx;box-sizing: border-box;border-radius: 10rpx;">离线</text>
							</div>
							<div class="tip" v-if="deviceInfo.status==1">
								<text style="color: #00BA88;border: 1px solid #00BA88;padding: 2rpx 8rpx;box-sizing: border-box;border-radius: 10rpx;">空闲</text>
							</div>
							<div class="tip" v-if="deviceInfo.status==2">
								<text style="color: #00BA88;border: 1px solid #00BA88;padding: 2rpx 8rpx;box-sizing: border-box;border-radius: 10rpx;">使用中</text>
							</div>
							<div class="tip" v-if="deviceInfo.storeName != null">
								<text style="color: #8883F0;border: 1px solid #8883F0;padding: 2rpx 8rpx;box-sizing: border-box;border-radius: 10rpx;">{{deviceInfo.storeName}}</text>
							</div>
						</view>
						<view  v-if="deviceInfo.onlineStatus==0" style="font-size: 28rpx;color: #95989D;margin-top: 18rpx;">
						  	<view style="display: flex;align-items: center;">
								<image style="width: 38rpx;height: 38rpx;margin-right: 10rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uFCAaWnRnqQK4SwPp7dm" mode=""></image>
						  		<text style="color: #00BA88;" v-if="ver_dataflag == 3">蓝牙已连接</text>
						  		<text style="color: #0079F5;" v-if="ver_dataflag == 2">蓝牙连接中</text>
						  		<text style="color: #F76D6D;" v-if="ver_dataflag == 1">蓝牙未连接</text>
						  	</view>
						</view>
					</view>
					<view class="mid_left" style="position: relative;">
						<view v-if="opflag"
							style="border: 0;outline: none;width: 196rpx;padding-left: 0rpx;height: 196rpx;border-radius: 16rpx;"
							@click="btnpic">
							<image :src="imglist" mode="aspectFit"
								style="width: 196rpx;height: 196rpx;border-radius: 10rpx;"></image>
						</view>
						<image v-else :src="imglist" mode="aspectFit"
							style="width: 196rpx;height: 196rpx;border-radius: 0rpx;"></image>
						<text class="lanyalx">{{deviceInfo.model == undefined ? '' : deviceInfo.model}}</text>

						<ksp-cropper mode="free" :width="142" :height="142" :maxWidth="1024" :maxHeight="1024"
							:url="url" @cancel="oncancel" @ok="onok"></ksp-cropper>
					</view>
				</view>
				<view class="bot">
					
				</view>
			</view>
			<view class="card2">
				<view class="" style="display: flex;justify-content: space-between;padding-right: 66rpx;box-sizing: border-box;align-items: center;">
					<view class="tit" style="border-left: 14rpx solid #8883F0;padding-left: 24rpx;">实时参数</view>
					<view @click="shuaxin" style="display: flex;color: #8883F0;justify-content: center;align-items: center;box-sizing: border-box;">
						<!-- 点击刷新 -->
						<image style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uOXH8rIsA5tSRyYynLgD" mode="aspectFit"></image>
					</view>
				</view>
				<view class="bot_right">
					<view class="cont" style="text-align: center;">
						<view class="tit">
							{{deviceInfo.voltage == null ? 0 : deviceInfo.voltage}}
						</view>
						<view class="txt">
							电压（V）
						</view>
					</view>
					<view class="cont" style="text-align: center;">
						<view class="tit">
							{{deviceInfo.electricity == null ? 0 : deviceInfo.electricity}}
						</view>
						<view class="txt">
							电流（A）
						</view>
					</view>
					<view class="cont" style="text-align: center;">
						<view class="tit">
							{{deviceInfo.realTimePower == null ? 0 : deviceInfo.realTimePower}}
						</view>
						<view class="txt">
							功率（W）
						</view>
					</view>
				</view>
               <view class="" style="display: flex;margin-top: 20rpx;padding: 50rpx;box-sizing: border-box;width: 100%;
               height: 80rpx;align-items: center;justify-content: space-between;background-color: #fff;border-radius: 20rpx;font-size: 32rpx;color: #3D3D3D;">
               	<view class="bot">开关状态：{{tdtxt}}</view>
               	<view class="cont" @click="btnkq">
               		<view class="top" style="padding-top: 10rpx;">
               			<view class="rt">
               				<image v-if="imgflag" style="width: 160rpx;height: 80rpx;"
               					src="https://api.ccttiot.com/smartmeter/img/static/uccaWar4FDp37op7haWM " mode="aspectFit">
               				</image>
               				<image style="width: 160rpx;height: 80rpx;" v-else
               					src="https://api.ccttiot.com/smartmeter/img/static/ur9HRtZKY7YcxGewJARz" mode="aspectFit">
               				</image>
               			</view>
               		</view>
               	</view>
               </view>
			</view>
			<view class="card2" style="padding-bottom: 40rpx;">
				<view class="tit" style="border-left: 14rpx solid #8883F0;padding-left: 24rpx;">设备剩余</view>
				<view class="bot_right">
					<view class="cont" style="text-align: center;">
						<view class="tit">
							{{deviceInfo.surplusEle == null || Number(deviceInfo.surplusEle) < 0 ? '--' : deviceInfo.surplusEle}}
						</view>
						<view class="txt">
							剩余度数
						</view>
					</view>
					<view class="cont" style="text-align: center;">
						<view class="tit">
							{{formattedTime}}
						</view>
						<view class="txt">
							剩余时长
						</view>
					</view>
				</view>
			</view>
			<!-- 当前订单 -->
			<view v-if="sklistflag" @click="btnshdd" class="card2" style="padding-bottom: 30rpx;box-sizing: border-box;margin-top: 20rpx;">
				<view class="tit" style="border-left: 14rpx solid #8883F0;padding-left: 24rpx;display: flex;justify-content: space-between;padding-right: 40rpx;margin-bottom: 20rpx;">当前订单 <text style="color: #8883F0;font-size: 32rpx;font-weight: 400;">查看</text> </view>
                 <view class="aa">
                 	<text>用户</text> <text>{{sklist.userName}}</text>
                 </view>
				 <view class="aa">
				 	<text>计价方式</text> <text v-if="sklist.suitFeeType == 1">计时收费</text>
				<text v-if="sklist.suitFeeType == 2">按量收费</text>
				<text v-if="sklist.suitFeeType == 3">分时段按量收费</text>
				<text v-if="sklist.suitFeeType == 4">分时段按时收费</text>
				 </view>
				 <view class="aa">
				 	<text>下单时间</text> <text>{{sklist.suitStartTime}}</text>
				 </view>
			</view>
			<view class="card3" v-if="opflag">
				<view class="tit" style="border-left: 14rpx solid #8883F0;padding-left: 24rpx;font-weight: 600;">其他功能</view>
				<view class="cont_box">
						<view class="cont" @click="topage(0)">
							<view class="top">
								<image src="https://api.ccttiot.com/smartmeter/img/static/u2ALEsvAJrHnW7nhrTVD" mode="aspectFit"
									style="width: 44rpx;height: 40rpx;"></image>
									<view class="bot">充值记录</view>
							</view>
						</view>
						<view class="cont" @click="topage(3)" v-if="userTpye_userid == deviceInfo.userId">
							<view class="top">
								<image src="https://api.ccttiot.com/smartmeter/img/static/uJmpaxyrv34a1EW5lWQv" mode="aspectFit"
									style="width: 44rpx;height: 44rpx;"></image>
									<view class="bot">收费方式</view>
							</view>
						</view>
						<view class="cont" @click="topage(1)">
							<view class="top">
								<image src="https://api.ccttiot.com/smartmeter/img/static/uhsqQVT62DOTdW8qW7ez" mode="aspectFit"
									style="width: 44rpx;height: 44rpx;"></image>
									<view class="bot">归零</view>
							</view>
						</view>
						<view class="cont" @click="topage(6)" v-if="deviceInfo.allowSwitch == true">
							<view class="top">
								<image style="width: 44rpx;height: 44rpx;"
									src="https://api.ccttiot.com/smartmeter/img/static/u9vzIeLLorfYuoZnxBDZ" mode="aspectFit">
								</image>
								<view class="bot">充值</view>
							</view>
						</view>
						<view class="cont" @click="topage(5)" v-if="modelId.some(tag => tag == 2)">
							<view class="top">
								<image style="width: 44rpx;height: 44rpx;"
									src="https://api.ccttiot.com/smartmeter/img/static/ule3wEEDaXzfXCUCM1Ks" mode="aspectFit">
								</image>
								<view class="bot">配网</view>
							</view>
						</view>
						<view class="cont" @click="qrFun">
							<view class="top">
								<image style="width: 44rpx;height: 44rpx;"
									src="https://api.ccttiot.com/smartmeter/img/static/uGjm0qpPFeDJZ2hUFexi" mode="aspectFit">
								</image>
								<view class="bot">二维码</view>
							</view>
						</view>
						<view class="cont" @click="topage(2)">
							<view class="top">
								<image src="https://api.ccttiot.com/smartmeter/img/static/ueQ5V8QAidDZGt0FpqXb" mode="aspectFit"
									style="width: 44rpx;height: 40rpx;"></image>
									<view class="bot">上报异常</view>
							</view>
						</view>
						<view class="cont" @click="sremakes">
							<view class="top">
								<image src="https://api.ccttiot.com/smartmeter/img/static/u6iXsrzPKTQXsY1Zq1i7" mode="aspectFit"
									style="width: 44rpx;height: 40rpx;"></image>
									<view class="bot">所属店铺</view>
							</view>
						</view>
						<view class="cont" @click="deldevice">
							<view class="top">
								<image src="https://api.ccttiot.com/smartmeter/img/static/ucjqb5QAYLn1694aY5LX" mode="aspectFit"
									style="width: 44rpx;height: 40rpx;"></image>
									<view class="bot">解除绑定</view>
							</view>
						</view>
						<!-- <view class="cont" @click="topage(4)">
							<view class="top" style="border: 0;">
								<image style="width: 44rpx;height: 44rpx;"
									src="https://api.ccttiot.com/smartmeter/img/static/uOUM2aclDz2ZnRxOll9g" mode="aspectFit">
								</image>
								<view class="bot">设置</view>
							</view>
						</view> -->
				</view>
			</view>
		</view>

		<view class="tanc" v-if="vipflag">
			<view class="tit">请输入您需要充值的时长或度数</view>
			<input type="number" :focus="focus" v-model="cztime" placeholder="请输入时长或度数" />
			<view class="inpss"  @click="btnxzdw">{{danwei}}</view>
			<!-- #ifdef MP-WEIXIN -->
			<u-icon name="arrow-down" style="position: fixed;top: 234rpx;right: 60rpx;" color="#999" size="28"></u-icon>
			<!-- #endif -->
			<view class="xian"></view>
			<view class="anniu">
				<text @click="btnqx">取消</text> <text style="border-left: 1px solid #eee;color: #8883F0;"
					@click="trueje">确定</text>
			</view>
		</view>
		<view class="maskss" v-if="vipflag"></view>
		<!-- 蓝牙连接 -->
		<view class="bluetoothbox" v-if="bluetoothflag">
			<view class="stop">
				正在连接该设备蓝牙
			</view>
			<view class="xtop">
				请将手机与设备尽量靠近
			</view>
			<image src="https://api.ccttiot.com/smartmeter/img/static/ucDphMKsozqwwllJTAKL" mode="aspectFit"></image>
		</view>

		<!-- 蓝牙连接失败 -->
		<view class="bluetoothbox" v-if="shibaiflag">
			<image class="img" src="https://api.ccttiot.com/smartmeter/img/static/uTb3vSlbcHdPMFQMBjyL" mode="aspectFit"></image>
			<view class="one">
				蓝牙连接失败
			</view>
			<view class="two">
				请确保手机足够靠近设备
			</view>
			<view class="thr">
				并且设备处于上电状态
			</view>
			<view class="anfour">
				<view class="qx" @click="btnlyqx">
					取消
				</view>
				<view class="cx" @click="btnkq">
					重新连接
				</view>
			</view>
		</view>
		<!-- 选择单位 -->
		<u-select v-model="showflag" :list="listdanwei" title='选择单位' @confirm="btnconfirm"></u-select>
        <!-- 选择店铺 -->
        <u-select v-model="showshop" :list="wateringList" @confirm="confirms"></u-select>
		<!-- 展示二维码 -->
		<view class="imgewm" v-if="wemflag" @longpress="saveCanvas">
			<canvas canvas-id="qrcode" style="height: 100%;margin: 0 auto;" />
			<view class="" style="width: 100%;text-align: center;margin-top: 20rpx;">
				SN:{{deviceNo}}
			</view>
			<view class=""
				style="border: 1px solid; padding: 20rpx;box-sizing: border-box;width: 100%;text-align: center;margin-top: 40rpx;"
				@click="wemflag = false">
				关闭二维码
			</view>
		</view>
		<view class="imgewmflag" v-if="wemflag" @click.stop="ewmyc"></view>

		<view v-if="btnmsk"
			style="width: 100%;height: 100vh;position: fixed;top: 0;left: 0;background-color: #000;opacity: .1;z-index: 999;">
		</view>
		
		<u-popup v-model="showmc" mode="center" border-radius='20'>
			<view class="popcard" v-if="showmc">
				<view class="tit">
					修改名称
				</view>
				<view class="ipt">
					<u-input v-model="xgname" placeholder=" " border='surround' placeholder-style='font-size: 24rpx;' />
				</view>
				<view class="btnbox">
					<view class="btn2" @click="close">
						取消
					</view>
					<view class="btn1" @click="subname">
						确定
					</view>
				</view>
			</view>
		 </u-popup>
		
	</view>
</template>

<script>
	var xBlufi = require("@/page_components/blufi/xBlufi.js")
	export default {
		data() { 
			return {
				showmc:false,
				xgname:'',
				suitSurplus:'',
				showflag: false,
				imgflag: false,
				wemflag: false,
				btnmsk: false,
				bluetoothflag: false,
				shibaiflag: false,
				danwei: '请选择时长单位',
				wateringList: [],
				listdanwei: [{
					value: 2,
					label: '小时'
				}, {
					value: 3,
					label: '分钟'
				}, {
					value: 4,
					label: '秒钟'
				}, {
					value: 0,
					label: '度'
				}],
				bgc: {
					backgroundColor: "#F9F8FF",
				},
				ec: {
					lazyLoad: true
				},
				deviceInfo: {},
				loadings: false,
				info: '',
				checked: false,
				tittxt: "设备详情",
				titlist: [],
				tdtxt: '开启',
				curtitidx: 0,
				id: '',
				focus: false,
				timeday: '',
				imglist: '',
				token: '',
				userImgs: '',
				imgflag: true,
				mac: "",
				name: '',
				deviceId: '',
				storeId: '',
				qrResult: '',
				devicesList: [],
				setMode: null,
				vipflag: false,
				cztime: '',
				opflag: true,
				timer: null,
				url: "",
				deviceNo: '',
				modelId: [],
				damweiid: '',
				intervalId: null,
				sklist:{},
				sklistflag:false,
				ljtype:'2',
				userTpye_userid:'',
				ver_dataflag:2,
				showshop: false,
			}
		},
		onLoad(option) {
			let id = option.id
			this.id = id
			this.gettanc()
			if(this.setMode == null){
				this.Binddevice()
			}
			if (option.flag) {
				this.opflag = false
			} else {
				this.opflag = true
			}
		},
		// 分享到好友（会话）
		onShareAppMessage: function() {
			return {
				title: '创想物联',
				path: '/pages/shouye/index'
			}
		},

		// 分享到朋友圈  
		onShareTimeline: function() {
			return {
				title: '创想物联',
				query: '',
				path: '/pages/shouye/index'
			}
		},
		computed: {
			formattedTime() {
				if (this.timeday.days > 0) {
					// 只展示天和小时  
					return `${this.timeday.days}天${this.timeday.hours}小时`
				} else if (this.timeday.hours > 0) {
					// 展示小时和分钟  
					return `${this.timeday.hours}小时${this.timeday.minutes}分钟`
				} else if (this.timeday.minutes > 0) {
					// 展示分钟和秒  
					return `${this.timeday.minutes}分钟${this.timeday.seconds}秒`
				} else if (this.timeday.seconds == 0) {
					this.deviceInfo.status = 1
					this.imgflag = false
					this.tdtxt = '关闭'
					return this.timeday.seconds > 0 ? `${this.timeday.seconds}秒` : '0'
				} else {
					// 展示秒或0（如果秒也为0）  
					return this.timeday.seconds > 0 ? `${this.timeday.seconds}秒` : '0'
				}
			}
		},
		beforeDestroy() {
			// 组件销毁前清除定时器，防止内存泄漏  
			if (this.timer) {
				clearInterval(this.timer)
				this.timer = null
				console.log('已销毁')
			}
		},
		onHide() {
			if (this.timer || this.intervalId) {
				clearInterval(this.intervalId)
				clearInterval(this.timer)
				this.timer = null
				this.intervalId = null
				console.log('已销毁')
			}
		},
		onUnload: function() {
			if (this.timer || this.intervalId) {
				clearInterval(this.intervalId)
				clearInterval(this.timer)
				this.timer = null
				this.intervalId = null
				console.log('已销毁')
			}
			xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
			wx.closeBLEConnection({
				deviceId: this.deviceId,
			})
		},
		onShow() {
			this.userTpye_userid = uni.getStorageSync('userType').userId
			this.shibaiflag = false
			this.getshuax()
			this.getQiniuToken()
		},
		mounted() {
			this.drawCanvas()
		},
		methods: {
			// 点击修改名称
			btnxgname(){
				this.xgname = this.deviceInfo.deviceName
				this.showmc = true
			},
			// 点击修改名称
			subname(){
				let data = {
					deviceId: this.id,
					deviceName: this.xgname,
				}
				this.$u.put('/app/device', data).then(res => {
					if (res.code == 200) {
						this.showmc = false
						this.getshuax()
						uni.showToast({
							title: '修改成功',
							icon: 'success',
							duration: 2000
						})
					}
				})
			},
			// 点击取消修改名称
			close() {
			    this.showmc = false
			},
			// 点击更换店铺
			confirms(e){
				let data = {
					deviceId: this.id,
					storeId:e[0].value
				}
				this.$u.put('/app/device', data).then(res => {
					if (res.code == 200) {
						this.getshuax()
						uni.showToast({
							title: '修改成功',
							icon: 'success',
							duration: 2000
						})
					}
				})
			},
			sremakes() {
				this.showshop = true
			},
			gettanc(){
				this.$u.get('/app/store/listCount').then((res) => {
					if (res.code == 200) {
						this.total = res.total
						if (res.data.length > 0) {
							let arr = res.data.map(row => ({
								value: row.storeId,
								label: row.name 
							}))
							this.wateringList = arr.slice(1)
						} 
					}
				})
			},
			// 解绑设备
			deldevice() {
				uni.showModal({  
				    title: '确认解绑',  
				    content: '您确定要解绑设备吗？',  
				    success: (resModal) => {  
				        if (resModal.confirm) { 
				            this.$u.delete(`/app/device/mch/unbind/${this.id}`).then((res) => {  
				                if (res.code == 200) {  
				                    uni.showToast({  
				                        title: '解除成功',  
				                        icon: 'success',  
				                        duration: 2000  
				                    })
				                    uni.reLaunch({
				                    	url:'/pages/index/index'
				                    })
				                } else if(res.code == 500){  
				                    uni.showToast({  
				                        title: res.msg,  
				                        icon: 'none',  
				                        duration: 2000  
				                    })
				                }  
				            })
				        } else if (resModal.cancel) {
				          
				        }  
				    }  
				})
			},
			// 自定义返回
			btns(){
				uni.reLaunch({
					url:'/pages/index/index'
				})
			},
			// 连接蓝牙
			Binddevice() {
				this.devicesList = []
				xBlufi.initXBlufi(1);
				xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent);
				xBlufi.notifyStartDiscoverBle({
					'isStart': true
				})
				// 两秒后停止蓝牙搜索
				setTimeout(() => {
					xBlufi.notifyStartDiscoverBle({
						'isStart': false
					});
					setTimeout(() => {
						if (this.devicesList.length == 0) {
							
						} else {
							let uniqueDevicesList = Array.from(new Set(this.devicesList));
							this.devicesList = uniqueDevicesList;
							console.log(this.devicesList);
							this.devicesList.forEach(device => {
								let macFromName = device.name.substring(device.name.length - 12);
								// console.log(macFromName, 'macFromNamemacFromName');
								if (macFromName == this.qrResult) {
									this.deviceInfoss = device
									this.createBLEConnection(device)
								} else {
									// console.log('对比错误');
								}
							});
						}
					}, 200)
				}, 2000)
				setTimeout(() =>{
					if(this.setMode == null){
						setTimeout(() =>{
							this.Binddevice()
						},3000)
					}else{
						console.log('已连接11111');
					}
				},15000)
			},
			// 匹配到了之后进行连接
			createBLEConnection(e) {
				xBlufi.notifyStartDiscoverBle({
					'isStart': false
				});
				console.log(e, '蓝牙信息')
				this.deviceId = e.deviceId
				let name = e.name;
				console.log('点击了，蓝牙准备连接的deviceId:' + e.deviceId);
				xBlufi.notifyConnectBle({
					isStart: true,
					deviceId: e.deviceId,
					name
				})
			},
			
			
			 groupChange(n) {
			   console.log('groupChange', n);
			 },
			 radioChange(n) {
			   console.log('radioChange', n);
			 },
			// 商户跳转进行中订单
			btnshdd(){
				uni.navigateTo({
					url:'/pages/shanghudd?id=' + this.sklist.billNo
				})
			},
			// 刷新
			getshuax() {
				this.$u.get(`/app/device/${this.id}/refreshIot`).then((res) => {
					this.getDevice(this.id)
				})
			},
			getshoukuan(){
				this.$u.get(`/app/bill/incomeList?isUsing=true&deviceId=${this.deviceInfo.deviceId}`).then((res) => {
					if(res.code == 200){
						if(res.rows == null || res.rows.length == 0){
							this.sklistflag = false
						}else{
							this.sklistflag = true
							this.sklist = res.rows[0]
							this.suitSurplus = res.rows[0].surplusEle
						}
					}else{
						uni.showToast({
							title: res.msg,
							icon: 'none',
							duration: 1500
						})
					}
				})
			},
			// 点击刷新
			shuaxin(){
				this.$u.get(`/app/device/${this.id}/refreshIot`).then((res) => {
					if(res.code == 200){
						this.getDevice(this.id)
						uni.showToast({
							title: res.msg,
							icon: 'success',
							duration: 1500
						})
					}else{
						uni.showToast({
							title: res.msg,
							icon: 'none',
							duration: 1500
						})
					}
				})
			},
			
			// 点击跳转固件更新页面
			btnfirmware(){
				uni.navigateTo({
					url:'/pages/daili/gujian'
				})
			},

			// 点击显示选择单位
			btnxzdw(){
				this.showflag = true
				console.log(1);
			},


			// 选择时长单位
			btnconfirm(e) {
				console.log(e);
				this.danwei = e[0].label
				this.damweiid = e[0].value
			},


			drawCanvas() {
				const ctx = uni.createCanvasContext('qrcode', this)
				ctx.setFillStyle('#fff')
				ctx.fillRect(10, 10, 250, 250)
				ctx.draw();
			},
			// 长按保存二维码
			saveCanvas() {
				uni.canvasToTempFilePath({
					canvasId: 'qrcode',
					success: (res) => {
						console.log(res.tempFilePath)// 打印图片路径  
						uni.saveImageToPhotosAlbum({
							filePath: res.tempFilePath,
							success: function() {
								uni.showToast({
									title: '保存成功',
									icon: 'success'
								})
							}
						})
					},
					fail: (err) => {
						console.error(err)
					}
				});
			},
			//**生成二维码**//
			qrFun: function() {
				uni.navigateTo({
					url:'/page_fenbao/fenxiang?id=' + this.deviceNo
				})
			},
			ewmyc() {
				this.wemflag = false
			},
            // 点击连接取消
			btnlyqx() {
				this.shibaiflag = false
				this.bluetoothflag = false
			},

			// 开启和关闭
			btnkq() {
				if(this.deviceInfo.allowSwitch == true){
					if (this.deviceInfo.onlineStatus == 1) {
						if (this.tdtxt == '开启') {
							this.$u.put(`/app/device/${this.id}/changePower?status=0`).then((res) => {
								if (res.code == 200) {
									this.tdtxt = '关闭'
									this.imgflag = false
									this.deviceInfo.status = 1
									uni.showToast({
										title: res.msg,
										icon: 'success',
										duration: 2000
									})
								} else {
									this.imgflag = true
									this.tdtxt = '开启'
									uni.showToast({
										title: res.msg,
										icon: 'none', 
										duration: 2000
									})
								}
							})
						} else {
							this.$u.put(`/app/device/${this.id}/changePower?status=1`).then((res) => {
								if (res.code == 200) {
									this.imgflag = true
									this.tdtxt = '开启'
									this.deviceInfo.status = 2
									uni.showToast({
										title: res.msg,
										icon: 'success',
										duration: 2000
									})
								} else {
									this.imgflag = false
									this.tdtxt = '关闭'
									uni.showToast({
										title: res.msg,
										icon: 'none',
										duration: 2000
									})
								}
							})
						}
					} else {
						if (this.setMode == null) {
							uni.showModal({
								title: '温馨提示',
								content: '蓝牙连接中，请尽量靠近设备！',
								showCancel: false,
								success: function(res) {
									
								}
							})
						} else {
							this.shibaiflag = false
							if (this.tdtxt == '开启') {
								let that = this
								that.tdtxt = '关闭'
								that.imgflag = false
								that.deviceInfo.status = 1
								xBlufi.notifySendCustomData({
									customData: 'close'
								})
								xBlufi.notifySendCustomData({
									customData: '11close'
								})
								let data = {
									mac:that.qrResult,
									reason:'商户操作临时开关关闭',
									command:'11close',
									result:'成功'
								}
								that.$u.post(`/app/commandLog/bluetooth`,data).then(res => {})
							} else {
								let that = this
								that.tdtxt = '开启'
								that.imgflag = true
								that.deviceInfo.status = 2
								xBlufi.notifySendCustomData({
									customData: 'open'
								})
								xBlufi.notifySendCustomData({
									customData: '11open'
								})
                                let data = {
                                	mac:that.qrResult,
                                	reason:'商户操作临时开关开启',
                                	command:'11open',
                                	result:'成功'
                                }
                                that.$u.post(`/app/commandLog/bluetooth`,data).then(res => {})
							}
						}
					}
				}else{
					uni.showToast({
						title: '您没有权限操作',
						icon: 'none',
						duration: 2000
					})
				}
			},
			// 获取七牛云token
			getQiniuToken() {
				this.$u.get("/common/qiniu/uploadInfo").then((res) => {
					if (res.code == 200) {
						this.token = res.token
					}
				});
			},

            // 选择图像
			btnpic() {
				uni.chooseImage({
					count: 1,
					success: (rst) => {
						this.url = rst.tempFilePaths[0]
					}
				})
			},
			onok(ev) {
				this.url = ""
				this.path = ev.path
				let _this = this
				let math = 'static/' + _this.$u.guid(20)
				wx.uploadFile({
					url: 'https://up-z2.qiniup.com',
					name: 'file',
					filePath: _this.path,
					formData: {
						token: _this.token,
						key: 'smartmeter/img/' + math
					},
					success: function(res) {
						// console.log(res);
						let str = JSON.parse(res.data)
						_this.userImgs = 'https://api.ccttiot.com/' + str.key
						_this.imglist = _this.userImgs
						let data = {
							deviceId: _this.id,
							customPicture: _this.imglist
						}
						_this.putdevice(data)
					}
				})
			},
			oncancel() {
				// url设置为空，隐藏控件
				this.url = ""
			},
			putdevice(data) {
				this.$u.put('/app/device', data).then((res) => {
					if (res.code == 200) {
						uni.showToast({
							title: '修改成功',
							icon: 'success',
							duration: 2000
						})
					} else {
						uni.showToast({
							title: res.msg,
							icon: 'none',
							duration: 2000
						})
					}
				})
			},

			// 获取设备详情
			getDevice(id) {
				this.$u.get("/app/device/" + id).then((res) => {
					if (res.code == 200) {
						this.deviceInfo = res.data
						this.qrResult = res.data.mac
						this.modelId = res.data.modelTags
						this.storeId = res.data.storeId
						this.deviceNo = res.data.deviceNo
						this.getshoukuan()
						if (res.data.customPicture != null) {
							this.imglist = res.data.customPicture
						} else {
							this.imglist = res.data.picture
						}
						if (this.deviceInfo.expireTime == null) {
							this.timeday = 0
						} else {
							let expireTimeStr = this.deviceInfo.expireTime
							let expireTimeParts = expireTimeStr.split(" ");
							let expireDateParts = expireTimeParts[0].split("-");
							let expireTimePartsTime = expireTimeParts[1].split(":");
							let expireDate = new Date(expireDateParts[0], expireDateParts[1] - 1, expireDateParts[
								2], expireTimePartsTime[0], expireTimePartsTime[1], expireTimePartsTime[2])
							let now = new Date()
							let differenceInMs = expireDate - now
							if (differenceInMs <= 0) {
								this.timeday = 0
							} else {
								clearInterval(this.timer)
								this.timer = null
								this.timeday = this.formatMilliseconds(differenceInMs)
								this.startTimer()
							}
						}
						if (res.data.powerStatus == 0) {
							this.imgflag = false
							this.tdtxt = '关闭'
						} else {
							this.imgflag = true
							this.tdtxt = '开启'
						}
						this.loadings = true
					}
				})
			},
			startTimer() {
				this.timer = setInterval(() => {
					if (this.timeday.seconds > 0) {
						this.timeday.seconds--
					} else if (this.timeday.minutes > 0) {
						this.timeday.seconds = 59 // 重置秒数为59  
						this.timeday.minutes--
					} else if (this.timeday.hours > 0) {
						this.timeday.minutes = 59 // 重置分钟数为59  
						this.timeday.hours--
						this.timeday.seconds = 0 // 同时重置秒数为0  
					} else if (this.timeday.days > 0) {
						this.timeday.hours = 23 // 重置小时数为23  
						this.timeday.minutes = 59 // 重置分钟数为59  
						this.timeday.seconds = 0 // 重置秒数为0  
						this.timeday.days--
					} else {
						// 所有时间单位都已减为0，停止定时器  
						clearInterval(this.timer)
						this.timer = null;
						// console.log('时间已到期') 
					}
				}, 1000); // 每秒执行一次  
			},
			// 计算天时分秒
			formatMilliseconds(milliseconds) {
				// 计算天数  
				let days = Math.floor(milliseconds / (1000 * 60 * 60 * 24))
				// 计算剩余的小时数  
				let hours = Math.floor((milliseconds % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))
				// 计算剩余的分钟数  
				let minutes = Math.floor((milliseconds % (1000 * 60 * 60)) / (1000 * 60))
				// 计算剩余的秒数  
				let seconds = Math.floor((milliseconds % (1000 * 60)) / 1000)
				// 返回一个对象，包含天、小时、分钟和秒  
				return {
					days: days,
					hours: hours,
					minutes: minutes,
					seconds: seconds
				}
			},

			// 其他部分 点击进行跳转
			topage(num) {
				this.btnmsk = true
				if (num == 0) {
					this.btnmsk = false
					uni.navigateTo({ //抄表
						url: '/page_user/cbRecord?id=' + this.id
					})
				} else if (num == 1) {
					if (this.deviceInfo.onlineStatus == 1) {
						let that = this
						uni.showModal({
							title: '提示',
							content: '您确定要将设备时间归零吗？',
							success: function(res) {
								if (res.confirm) {
									that.btnmsk = false
									//归零
									that.$u.put(`/app/device/${that.id}/reset`).then((res) => {
										if (res.code == 200) {
											uni.showToast({
												title: res.msg,
												icon: 'success',
												duration: 2000
											})
											that.getDevice(that.id)
											setTimeout(()=>{
												that.deviceInfo.status = 1
												that.imgflag = false
												that.tdtxt = '关闭'
											},1000)
											// that.getshuax()
										} else if (res.code == 500) {
											uni.showToast({
												title: res.msg,
												icon: 'none',
												duration: 2000
											})
										}
									})
								} else if (res.cancel) {
									that.btnmsk = false
									console.log('用户点击了取消')
								}
							}
						})
					}else{
						this.btnmsk = false
						if (this.setMode == null) {
							uni.showModal({
								title: '温馨提示',
								content: '蓝牙连接中，请尽量靠近设备！',
								showCancel: false,
								success: function(res) {
									
								}
							})
						} else {
							let that = this
							uni.showModal({
								title: '提示',
								content: '您确定要将设备时间归零吗？',
								success: function(res) {
									if (res.confirm) {
										that.btnmsk = false
										setTimeout(() => {
													that.deviceInfo.status = 1
													that.imgflag = false
													that.tdtxt = '关闭'
													that.timeday = 0
													xBlufi.notifySendCustomData({
															customData: 'time0@'
														})
													xBlufi.notifySendCustomData({
															customData: 'mmney0@'
														})
													xBlufi.notifySendCustomData({
															customData: '11time0@'
														})
													xBlufi.notifySendCustomData({
															customData: '11mmney0@'
														})
													let data = {
														mac:that.qrResult,
														reason:'归零',
														command:'@time0@mmney0close',
														result:'成功'
													}
													that.$u.post(`/app/commandLog/bluetooth`,data).then(res => {})
													uni.showToast({
														title: '归零成功',
														icon: 'success',
														duration: 2000
													})
										}, 1000)
									}
								}
							})
						}
					}
				} else if (num == 2) { //异常
					this.btnmsk = false
					uni.navigateTo({
						url: '/page_fenbao/statulist/fault/yichang/index'
					})
				} else if (num == 3) {
					this.btnmsk = false
					uni.navigateTo({
						url: "/page_fenbao/statulist/taocanlist/index?id=" + this.id + '&modevalue=' + 1
					})
				} else if (num == 4) { //设置
					this.btnmsk = false
					uni.navigateTo({
						url: '/page_user/setting?id=' + this.id
					})
				} else if (num == 5) {
					this.btnmsk = false
					let that = this
					uni.openBluetoothAdapter({
					  success: function (res) {
						  uni.getLocation({
						  	type: 'wgs84',
						  	success: (res) => { 
						  		if(that.deviceInfo.wifi == null){
						  			let systemInfo = uni.getSystemInfoSync()
						  			if (systemInfo.platform == 'android') {
						  				// 当前设备是 Android  
						  				uni.navigateTo({
						  					url: '/page_components/wifilist/index?deviceId=' + that
						  						.qrResult + '&name=' + that.name + '&wifi=' + '暂无配网' + '&id=' + that.id
						  				})
						  			} else if (systemInfo.platform == 'ios') {
						  				// 当前设备是 iOS  
						  				uni.navigateTo({
						  					url: '/page_fenbao/device/wifivideo?deviceId=' + that
						  						.qrResult + '&name=' + that.name + '&wifi=' + '暂无配网' + '&id=' + that.id
						  				})
						  			}else{ 
						  				uni.showToast({
						  					title: '目前仅支持安卓和iOS系统',
						  					icon: 'none',
						  					duration: 2000
						  				})
						  			}
						  		}else{
						  			let systemInfo = uni.getSystemInfoSync()
						  			if (systemInfo.platform == 'android') {
						  				// 当前设备是 Android  
						  				uni.navigateTo({
						  					url: '/page_components/wifilist/index?deviceId=' + that
						  						.qrResult + '&name=' + that.name + '&wifi=' + that.deviceInfo.wifi  + '&id=' + that.id
						  				})
						  			} else if (systemInfo.platform == 'ios') {
						  				// 当前设备是 iOS  
						  				uni.navigateTo({
						  					url: '/page_fenbao/device/wifivideo?deviceId=' + that
						  						.qrResult + '&name=' + that.name + '&wifi=' + that.deviceInfo.wifi  + '&id=' + that.id
						  				})
						  			}else{ 
						  				uni.showToast({
						  					title: '目前仅支持安卓和iOS系统',
						  					icon: 'none',
						  					duration: 2000
						  				})
						  			}
						  		}
						  	},
						  	fail: (err) => {
						  		console.error('获取位置失败：', err);
								uni.showToast({
								  title: '位置信息未打开，无法配网，请授权后重试',
								  icon: 'none',
								  duration:2000
								})
						  	}
						  })
					  },
					  fail: function (err) {
					    console.error('蓝牙适配器初始化失败', err);
					    // 蓝牙未打开或初始化失败
					    uni.showToast({
					      title: '手机蓝牙未打开',
					      icon: 'none'
					    });
					  }
					})

				} else if (num == 6) {
					uni.pageScrollTo({
					        scrollTop: 0,//滚动到距离顶部为0
					        duration: 0//滚动时长
					    })
					this.btnmsk = false
					this.vipflag = true
					this.focus = true
				}
			},
			getaddtime() {
				this.$u.put('/app/device/addTime/' + this.id + '?amount=' + this.cztime + '&timeUnit=' + this.damweiid +'&withIot=false').then(res => {})
			},
			trueje() {
				if (this.timer) {
					clearInterval(this.timer)
					this.timer = null
				}
				let id = this.deviceInfo.deviceId
				this.vipflag = false
				if (this.deviceInfo.onlineStatus == 1) {
					this.$u.put('/app/device/addTime/' + id + '?amount=' + this.cztime + '&timeUnit=' + this.damweiid)
						.then(res => {
							if (res.code == 200) {
								uni.showToast({
									title: '充值成功',
									icon: 'success',
									duration: 2000
								})
								// this.getshuax()
								setTimeout(() => {
									this.getshuax()
									this.cztime = ''
									this.danwei = ''
									this.deviceInfo.status = 2
									this.tdtxt = '开启'
									this.imgflag = true
								}, 2000)
							} else if (res.code == 500) {
								uni.showToast({
									title: res.msg,
									icon: 'none',
									duration: 2000
								})
							}
						})
				} else {
					if (this.setMode == null) {
						uni.showModal({
							title: '温馨提示',
							content: '蓝牙连接中，请尽量靠近设备！',
							showCancel: false,
							success: function(res) {
								
							}
						})
					} else {
						let that = this
						uni.getNetworkType({
							success(res) {
								if (res.networkType !== 'none') {
									uni.getConnectedBluetoothDevices({
										success(res) {
											setTimeout(() => {
												that.deviceInfo.status = 2
												that.imgflag = true
												that.tdtxt = '开启'
												if (that.damweiid == 0) {
													xBlufi.notifySendCustomData({
														customData: 'mmney' + that.cztime + '@'
													})
													xBlufi.notifySendCustomData({
														customData: '11mmney' + that.cztime + '@'
													})
													that.getaddtime()
												} else if (that.damweiid == 4) {
													xBlufi.notifySendCustomData({
														customData: 'time' + that.cztime + '@'
													})
													xBlufi.notifySendCustomData({
														customData: '11time' + that.cztime + '@'
													})
													that.getaddtime()
												} else if (that.damweiid == 3) {
													xBlufi.notifySendCustomData({
														customData: 'time' + that.cztime * 60 + '@'
													})
													xBlufi.notifySendCustomData({
														customData: '11time' + that.cztime * 60 + '@'
													})
													that.getaddtime()
												} else if (that.damweiid == 2) {
													xBlufi.notifySendCustomData({
														customData: 'time' + that.cztime * 60 * 60 + '@'
													})
													xBlufi.notifySendCustomData({
														customData: '11time' + that.cztime * 60 * 60 + '@'
													})
													that.getaddtime()
												}
												let data = {
													mac:that.qrResult,
													reason:'增加时长',
													command:'11time@',
													result:'成功'
												}
												console.log(data,'111');
												that.$u.post(`/app/commandLog/bluetooth`,data).then(res => {})
											}, 1000)
										},
										fail(err) {
											console.error('获取已连接蓝牙设备信息失败：', err)
										}
									})
								}
							}
						})
					}
				}
			},
			btnqx() {
				this.vipflag = false
				this.cztime = ''
			},
			// 蓝牙回调
			// funListenDeviceMsgEvent: function(options) {
			// 	switch (options.type) {
			// 		case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
			// 			if (options.result) {
			// 				let devicesarr = options.data
			// 				devicesarr.forEach(device => {
			// 					const mac = device.name.substring(4)
			// 					if (device.name.slice(5, 17) == this.qrResult) {
			// 						this.deviceId = device.deviceId
			// 						this.name = device.name
			// 						this.devicesList.push(device)
			// 						let uniqueDevicesList = Array.from(new Set(this.devicesList))
			// 						this.devicesList = uniqueDevicesList
			// 					} 
			// 				})
			// 			}
			// 			break;
			// 		case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
			// 			console.log("连接回调：" + JSON.stringify(options))
			// 			if (options.result) {
			// 				{
			// 					xBlufi.notifyInitBleEsp32({
			// 						deviceId: this.deviceId
			// 					})
			// 					xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvents)
			// 					this.deviceIds = options.data.deviceId
			// 					this.name = this.name
			// 				}
			// 			} else {
			
			// 			}
			// 			break;
			// 		case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
			// 			this.setMode = this.parseCustomData(options.data)
			// 			console.log("1收到设备发来的自定义数据结果：", this.setMode)
			// 			setTimeout(() => {
			// 				this.ver_dataflag = 3
			// 			}, 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.ver_dataflag = 1
			// 				return
			// 			} else {

			// 			}
			// 			break
			// 	}
			// },
			funListenDeviceMsgEvent: function(options) {
				let that = this;
				switch (options.type) {
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
						if (options.result) {
							let devicesarr = options.data
							devicesarr.forEach(device => {
								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) {
							setTimeout(()=>{
							},2000)
							{
								xBlufi.notifyInitBleEsp32({
									deviceId: options.data.deviceId
								});
							}
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_MY_DATA:
						console.log("文件读取中", options.data);
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
						this.setMode = this.parseCustomData(options.data)
						this.ver_dataflag = 3
						console.log("1收到设备发来的自定义数据结果：", this.setMode);
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_INIT_ESP32_RESULT:
						if (options.result) {
							console.log('初始化成功');
						} else {
							console.log('初始化失败');
							this.ver_dataflag = 1
							break;
						}
						break;
				}
			},
			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">
	.pagesac{
		top: 0 !important;
	}
	/deep/ .panel {
		position: fixed;
		width: 100%;
		height: 100%;
		top: 0;
		bottom: 0;
		left: 0;
		z-index: 99 !important;
		overflow: hidden;
	}

	.imgewmflag {
		width: 750rpx;
		height: 100vh;
		background: #fff;
		border-radius: 0rpx 0rpx 0rpx 0rpx;
		z-index: 1;
		position: fixed;
		top: 0;
		left: 0;
	}

	.imgewm {
		width: 250px;
		height:250px;
		position: fixed;
		top:400rpx;
		left: 50%;
		transform: translateX(-50%);
		z-index: 2;
	}

	.lanyalx {
		display: inline-block;
		text-align: center;
		font-size: 26rpx;
		width: 196rpx;
		height: 40rpx;
		line-height: 40rpx;
		background-color: #8883F0;
		color: #fff;
		position: absolute;
		bottom: 0;
		border-radius: 0 0 10rpx 10rpx;
	}

	.conts {
		display: flex;
		justify-content: space-between;
		margin-top: 50rpx;
		align-items: center;
		width: 100%;
		height: 100%;
		padding: 20rpx;
		border-radius: 30rpx;
		box-sizing: border-box;
		background-color: #fff;

		.bot {
			// width: 100%;
			// height: 80rpx;
			// line-height: 80rpx;
			// text-align: center;
			// border-radius: 30rpx;
			// background-color: #fff;
			// margin-top: 30rpx;
			font-size: 30rpx;
		}
	}

	.picjt {
		position: fixed;
		top: 190rpx;
		right: 60rpx;
		width: 16rpx;
		height: 30rpx;
	}

	.bluetoothbox {
		width: 100%;
		height: 100vh;
		background-color: #f4f1f6;
		position: fixed;
		top: 0;
		left: 0;
		z-index: 99;
		text-align: center;

		.img {
			margin-top: 400rpx;
			width: 320rpx;
			height: 320rpx;
		}

		.one {
			font-size: 36rpx;
			color: #000;
		}

		.two {
			margin-top: 30rpx;
			font-size: 24rpx;
			color: #ccc;
		}

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

		.anfour {
			display: flex;
			margin-top: 30rpx;
			justify-content: space-between;
			padding: 0 220rpx;
			box-sizing: border-box;

			.qx {
				width: 100rpx;
				height: 70rpx;
				line-height: 70rpx;
				text-align: center;
				border: 1px solid #3D3D3D;
				border-radius: 10rpx;
			}

			.cx {
				width: 200rpx;
				height: 70rpx;
				line-height: 70rpx;
				text-align: center;
				background-color: #8883F0;
				color: #fff;
				border-radius: 10rpx;
			}
		}

		.stop {
			font-size: 36rpx;
			color: #000;
			margin-top: 380rpx;
		}

		.xtop {
			margin-top: 30rpx;
			font-size: 24rpx;
			color: #ccc;
		}

		.xqx {
			width: 530rpx;
			height: 90rpx;
			line-height: 90rpx;
			border-radius: 20rpx;
			text-align: center;
			background-color: #fff;
			margin: auto;
			margin-top: 200rpx;
		}

		image {
			width: 500rpx;
			height: 500rpx;
			margin-top: 100rpx;
		}
	}
    .popcard {
    	display: flex;
    	justify-content: center;
    	flex-wrap: wrap;
    	width: 550rpx;
    	height: 400rpx;
    	border-radius: 20rpx;
    
    	.tit {
    		display: flex;
    		justify-content: center;
    		width: 100%;
    		align-items: center;
    		font-size: 28rpx;
    		font-weight: 700;
    	}
    
    	.ipt {
    		margin-top: 60rpx;
    		width: 80%;
    
    		.u-input::placeholder {
    			font-size: 20px;
    			color: red;
    		}
    	}
    
    	.btnbox {
    		width: 100%;
    		display: flex;
    		flex-wrap: nowrap;
    		border-radius: 0 0 20rpx 20rpx;
    
    		.btn2 {
    			display: flex;
    			align-items: center;
    			justify-content: center;
    			width: 50%;
    			font-size: 32rpx;
    			font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
    			font-weight: 400;
    			color: #000;
    			background-color: #fff;
    		}
    
    		.btn1 {
    			display: flex;
    			align-items: center;
    			justify-content: center;
    			width: 50%;
    			font-size: 32rpx;
    			font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
    			font-weight: 400;
    			color: #fff;
    			background-color: #8883f0;
    			border: 1rpx solid #ccc;
    		}
    	}
    
    }
	/deep/ .u-title {
		padding-bottom: 22rpx;
	}

	/deep/ .uicon-nav-back {
		padding-bottom: 22rpx;
	}

	page {
		background-color: #F9F8FF;
	}

	.maskss {
		width: 750rpx;
		height: 100vh;
		background: #000000;
		border-radius: 0rpx 0rpx 0rpx 0rpx;
		opacity: 0.2;
		z-index: 1;
		position: fixed;
		top: 0;
		left: 0;
	}

	.tanc {
		width: 610rpx;
		max-height: 430rpx;
		background: #FFFFFF;
		border-radius: 30rpx 30rpx 30rpx 30rpx;
		position: fixed;
		top: 528rpx;
		left: 50%;
		transform: translateX(-50%);
		z-index: 2;
        text-align: center;
		.tit {
			width: 100%;
			text-align: center;
			margin-top: 28rpx;
			font-weight: 500;
			font-size: 32rpx;
			color: #3D3D3D;
		}

		input {
			width: 504rpx;
			height: 90rpx;
			background: #EEEEEE;
			border-radius: 6rpx 6rpx 6rpx 6rpx;
			margin: auto;
			margin-top: 22rpx;
			padding-left: 20rpx;
			text-align: left;
		}
        .inpss{
			width: 510rpx;
			height: 90rpx;
			line-height: 90rpx;
			font-size: 32rpx;
			color: #ccc;
			background: #EEEEEE;
			border-radius: 6rpx 6rpx 6rpx 6rpx;
			margin: auto;
			margin-top: 22rpx;
			padding-left: 20rpx;
			text-align: left;
		}
		.xian {
			width: 610rpx;
			height: 2rpx;
			background: #eee;
			border-radius: 0rpx 0rpx 0rpx 0rpx;
			margin-top: 26rpx;
		}

		.anniu {
			display: flex;
			justify-content: space-between;
			height: 98rpx;

			text {
				padding: 24rpx;
				text-align: center;
				box-sizing: border-box;
				font-weight: 500;
				font-size: 36rpx;
				color: #3D3D3D;
				display: inline-block;
				width: 100%;
				height: 100rpx;
			}
		}
	}

	.txt {
		text-align: left;
		font-size: 28rpx;
		color: #808080;
		font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
		font-weight: 400;
		display: flex;
		justify-content: space-between;
	}

	.page {
		// width: 100%;
		// height: 100vh;
		// overflow: scroll;
  //       padding-bottom: 80rpx;
		// box-sizing: border-box;
		.zhuhu {
			margin-top: 46rpx;
			padding: 0 40rpx;
            padding-bottom: 80rpx;
			.card1 {
				// padding: 34rpx 0 0 40rpx;
				width: 670rpx;
				// height: 320rpx;

				.top {
					display: flex;
					flex-wrap: nowrap;
					justify-content: space-between;
					align-items: center;

					.left {
						font-size: 35rpx;
						font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
						font-weight: 400;
						color: #8883F0;
					}

					.right {
						margin-right: 56rpx;

						.img1 {
							width: 76rpx;
							height: 76rpx;
						}
					}
				}

				.mid {
					margin-top: 20rpx;
					display: flex;
					flex-wrap: nowrap;
					align-content: flex-start;
					justify-content: space-between;

					.mid_left {
						border-radius: 20rpx;
						border: 1px solid #ff;
						image {
							width: 160rpx;
							height: 160rpx;
							border-radius: 20rpx;
						}
					}

					.mid_right {
						margin-left: 20rpx;
						display: flex;
						flex-wrap: wrap;

						.mid_top {
							width: 100%;
							font-size: 36rpx;
							font-weight: 600;
							color: #333;
							display: flex;
							align-items: center;
							padding-right: 4rpx;
							box-sizing: border-box;
							text{
								margin-left: 10rpx;
								font-weight: 400;
								font-size: 24rpx;
								padding: 6rpx;
								box-sizing: border-box;
							}
						}

						.mid_bot {
							width: 100%;
							display: flex;
							padding-right: 102rpx;
							box-sizing: border-box;
							margin-top: 10rpx;
							.tip {
								box-sizing: border-box;
								background: rgba(204, 204, 204, 0);
								opacity: 1;
								font-size: 28rpx;
								font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
								font-weight: 400;
								color: #5B5B5B;
								margin-right: 16rpx;
							}
						}
					}
				}

				.bot {
					margin-top: 20rpx;
					display: flex;
					flex-wrap: nowrap;
					align-items: center;

					.bot_left {
						width: 210rpx;
						height: 180rpx;
						margin-right: 34rpx;

						.echarts {
							height: 200rpx;

							.uni-ec-canvas {
								width: 100%;
								height: 100rpx !important;
								display: block;
							}
						}
					}

					.bot_right {
						display: flex;
						width: 100%;
						justify-content: space-between;
						padding-left: 80rpx;
						padding-right: 80rpx;
						box-sizing: border-box;

						.cont {
							.tit {
								font-size: 28rpx;
								font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
								font-weight: 600;
								color: #262B37;
								line-height: 49rpx;
							}

							.txt {
								font-size: 26rpx;
								font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
								font-weight: 400;
								color: #262B37;
							}
						}
					}
				}
			}

			.bot_right {
				display: flex;
				width: 100%;
				justify-content: space-between;
				padding-left: 60rpx;
				padding-right: 60rpx;
				box-sizing: border-box;
				margin-top: 30rpx;

				.cont {
					.tit {
						font-size: 32rpx;
						font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
						font-weight: 600;
						color: #262B37;
						line-height: 49rpx;
						margin-left: 0;
					}

					.txt {
						font-size: 32rpx;
						font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
						font-weight: 400;
						color: #262B37;
					}
				}
			}

			.card2 {
				padding-top: 40rpx;
				margin-top: 20rpx;
				width: 670rpx;
				max-height: 614rpx;
				padding-bottom: 30rpx;
				background: #FFFFFF;
				box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(53, 140, 255, 0.1);
				border-radius: 28rpx;
                .aa{
					padding-left: 40rpx;
					padding-right: 40rpx;
					box-sizing: border-box;
					display: flex;
					justify-content: space-between;
					margin-top: 10rpx;
					font-size: 28rpx;
					color: #808080;
				}
				.tit {
					margin-left: 40rpx;
					font-size: 36rpx;
					color: #3D3D3D;
					font-weight: 600;
				}
			}

			.card3 {
				padding-top: 40rpx;
				margin-top: 24rpx;
				width: 670rpx;
				// height: 490rpx;
				// overflow: scroll;
				background: #FFFFFF;
				box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(53, 140, 255, 0.1);
				border-radius: 28rpx;
				.tit {
					margin-left: 40rpx;

					font-size: 35rpx;
					font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
					font-weight: 400;
					color: #3D3D3D;
				}

				.cont_box {
					padding: 0 40rpx;
					display: flex;
					padding-bottom: 40rpx;
					box-sizing: border-box;
					flex-wrap: wrap;
					align-items: center;
					.cont:last-child {
						margin-right: 0rpx;
					}
					.cont {
						width: 25%;
						text-align: center;
						margin-top: 58rpx;
						.top {
							width: 100%;
							image {
								width: 58rpx !important;
								height: 58rpx !important;
							}
							.bot {
								font-weight: 400;
								font-size: 32rpx;
								color: #3D3D3D;
								margin-top: 24rpx;
							}
						}
					}
				}
			}

			.button {
				margin-left: 76rpx;
				margin-top: 178rpx;
				display: flex;
				justify-content: center;
				align-items: center;
				width: 520rpx;
				height: 104rpx;
				background: #8883F0;
				box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
				border-radius: 52rpx 52rpx 52rpx 52rpx;
				font-size: 32rpx;
				font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
				font-weight: 400;
				color: #FFFFFF;
			}
		}
	}
</style>