922 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			922 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<template>
 | 
						||
	<view class="page">
 | 
						||
		<u-navbar :title="tittxt" :border-bottom="false" :background="bgc" back-icon-color="#fff" title-color='#fff'
 | 
						||
			title-size='36' height='58' id="navbar">
 | 
						||
		</u-navbar>
 | 
						||
		<view class="zhuhu">
 | 
						||
			<view class="card1">
 | 
						||
				<view class="top">
 | 
						||
					<view class="left">
 | 
						||
						设备
 | 
						||
					</view>
 | 
						||
					<view class="right">
 | 
						||
						<!-- <image class="img1" src="https://api.ccttiot.com/smartmeter/img/static/uGvS4RQvbw7OOfhzy6xf" mode="" style="margin-right: 30rpx;" @click="opendevices"></image>
 | 
						||
						<image class="img1" src="https://api.ccttiot.com/smartmeter/img/static/uNEKwe2WKsJdtQzOdEay" mode="" @click="toewm()"></image> -->
 | 
						||
					</view>
 | 
						||
				</view>
 | 
						||
				<view class="mid">
 | 
						||
					<view class="mid_left" @click="btnpic">
 | 
						||
						<image :src="imglist" mode=""></image>
 | 
						||
					</view>
 | 
						||
					<view class="mid_right">
 | 
						||
						<view class="mid_top">
 | 
						||
							{{ deviceInfo.deviceName }}
 | 
						||
						</view>
 | 
						||
						<view class="mid_bot">
 | 
						||
							<view class="txt" v-if="deviceInfo">S/N码:{{ deviceInfo.deviceNo }}</view>
 | 
						||
							<div class="tip" v-if="deviceInfo.onlineStatus==1">在线</div>
 | 
						||
							<div class="tip" v-if="deviceInfo.onlineStatus==0">离线</div>
 | 
						||
							<div class="tip" v-if="deviceInfo.powerStatus==0">断电</div>
 | 
						||
							<div class="tip" v-if="deviceInfo.powerStatus==1">正常</div>
 | 
						||
						</view>
 | 
						||
					</view>
 | 
						||
				</view>
 | 
						||
				<view class="bot">
 | 
						||
					<!-- <view class="bot_left">
 | 
						||
						<view class="echarts">
 | 
						||
							<l-echart ref="chart" @finished="initChart"></l-echart>
 | 
						||
							<uni-ec-canvas class="uni-ec-canvas" id="uni-ec-canvas" ref="canvas"
 | 
						||
								canvas-id="uni-ec-canvas" :ec="ec">
 | 
						||
							</uni-ec-canvas>
 | 
						||
						</view>
 | 
						||
					</view> -->
 | 
						||
					<view class="bot_right">
 | 
						||
						<view class="cont" style="text-align: center;">
 | 
						||
							<view class="tit">
 | 
						||
								{{deviceInfo.orderAmount == null ? 0 : deviceInfo.orderAmount}}
 | 
						||
							</view>
 | 
						||
							<view class="txt">
 | 
						||
								订单金额
 | 
						||
							</view>
 | 
						||
						</view>
 | 
						||
						<view class="cont" style="text-align: center;">
 | 
						||
							<view class="tit">
 | 
						||
								{{deviceInfo.orderCount == null ? 0 : deviceInfo.orderCount}}
 | 
						||
							</view>
 | 
						||
							<view class="txt">
 | 
						||
								订单数
 | 
						||
							</view>
 | 
						||
						</view>
 | 
						||
						<view class="cont" style="text-align: center;">
 | 
						||
							<view class="tit">
 | 
						||
								{{timeday}}
 | 
						||
							</view>
 | 
						||
							<view class="txt">
 | 
						||
								剩余分钟
 | 
						||
							</view>
 | 
						||
						</view>
 | 
						||
					</view>
 | 
						||
				</view>
 | 
						||
			</view>
 | 
						||
			<view class="card2">
 | 
						||
				<view class="tit">实时</view>
 | 
						||
				<view class="cont_box">
 | 
						||
					<view class="cont">
 | 
						||
						<view class="top">{{deviceInfo.realTimePower}}KW</view>
 | 
						||
						<view class="bot">实时功率</view>
 | 
						||
					</view>
 | 
						||
					<view class="cont" style="width: 70rpx;">
 | 
						||
						<view class="top">{{deviceInfo.electricity}}A</view>
 | 
						||
						<view class="bot">电流</view>
 | 
						||
					</view>
 | 
						||
					<view class="cont" style="width: 110rpx;">
 | 
						||
						<view class="top">{{deviceInfo.voltage}}V</view>
 | 
						||
						<view class="bot">电压</view>
 | 
						||
					</view>
 | 
						||
 | 
						||
				</view>
 | 
						||
			</view>
 | 
						||
			<view class="card3">
 | 
						||
				<view class="tit">其他</view>
 | 
						||
				<view class="cont_box" style="display: block;">
 | 
						||
					<view class="" style="display: flex;justify-content: space-between;">
 | 
						||
						<view class="cont" style="width: 120rpx;" @click="topage(0)">
 | 
						||
							<view class="top">
 | 
						||
								<image src="https://api.ccttiot.com/smartmeter/img/static/uj4DT6WructS782RY0J7" mode=""
 | 
						||
									style="width: 58rpx;height: 56rpx;"></image>
 | 
						||
							</view>
 | 
						||
							<view class="bot">充值记录</view>
 | 
						||
						</view>
 | 
						||
						<view class="cont" style="width: 60rpx;" @click="topage(1)">
 | 
						||
							<view class="top">
 | 
						||
								<image src="https://api.ccttiot.com/smartmeter/img/static/uGaAuulryhDmaDwWLuwo" mode=""
 | 
						||
									style="width: 58rpx;height: 58rpx;"></image>
 | 
						||
							</view>
 | 
						||
							<view class="bot">归零</view>
 | 
						||
						</view>
 | 
						||
						<view class="cont" style="width: 60rpx;" @click="topage(2)">
 | 
						||
							<view class="top">
 | 
						||
								<image src="https://api.ccttiot.com/smartmeter/img/static/u8QfFAKCq8wE32dFA9Go" mode=""
 | 
						||
									style="width: 58rpx;height: 60rpx;"></image>
 | 
						||
							</view>
 | 
						||
							<view class="bot">异常</view>
 | 
						||
						</view>
 | 
						||
						<view class="cont" style="width: 120rpx;" @click="toydfx()">
 | 
						||
							<view class="top">
 | 
						||
								<image src="https://api.ccttiot.com/smartmeter/img/static/u0N4pFke1isIzNrNT6Wh" mode="">
 | 
						||
								</image>
 | 
						||
							</view>
 | 
						||
							<view class="bot">用电分析</view>
 | 
						||
						</view>
 | 
						||
					</view>
 | 
						||
					<view class="" style="display: flex;margin-top: 20rpx;">
 | 
						||
						<view class="cont" style="width: 120rpx;" @click="topage(3)">
 | 
						||
							<view class="top">
 | 
						||
								<image src="https://api.ccttiot.com/smartmeter/img/static/uW2T5sbuiMPbPaJp9p2U" mode=""
 | 
						||
									style="width: 58rpx;height: 60rpx;"></image>
 | 
						||
							</view>
 | 
						||
							<view class="bot">收费方式</view>
 | 
						||
						</view>
 | 
						||
						<view class="cont" style="width: 60rpx;" @click="topage(4)">
 | 
						||
							<view class="top">
 | 
						||
								<image src="https://api.ccttiot.com/smartmeter/img/static/ubxoYVnbIK1rk0cfoL3j" mode="">
 | 
						||
								</image>
 | 
						||
							</view>
 | 
						||
							<view class="bot">设置</view>
 | 
						||
						</view>
 | 
						||
						<view class="cont" style="width: 60rpx;" @click="topage(5)">
 | 
						||
							<view class="top">
 | 
						||
								<image src="https://api.ccttiot.com/smartmeter/img/static/uWaQjL7vph474LWTyGfs" mode="">
 | 
						||
								</image>
 | 
						||
							</view>
 | 
						||
							<view class="bot">配网</view>
 | 
						||
						</view>
 | 
						||
					</view>
 | 
						||
 | 
						||
				</view>
 | 
						||
				<view class="cont_box" style="padding-left: 30rpx;">
 | 
						||
 | 
						||
				</view>
 | 
						||
			</view>
 | 
						||
		</view>
 | 
						||
 | 
						||
	</view>
 | 
						||
</template>
 | 
						||
 | 
						||
<script>
 | 
						||
	var xBlufi = require("@/page_components/blufi/xBlufi.js")
 | 
						||
	import uniEcCanvas from '@/components/uni-ec-canvas/uni-ec-canvas.vue'
 | 
						||
	import * as echarts from '@/components/uni-ec-canvas/echarts'
 | 
						||
	let chart = null
 | 
						||
	export default {
 | 
						||
		components: {
 | 
						||
			uniEcCanvas
 | 
						||
		},
 | 
						||
		data() {
 | 
						||
			return {
 | 
						||
				bgc: {
 | 
						||
					backgroundColor: "#8883f0",
 | 
						||
 | 
						||
				},
 | 
						||
				ec: {
 | 
						||
					lazyLoad: true
 | 
						||
				},
 | 
						||
				deviceInfo: {},
 | 
						||
				loadings: false,
 | 
						||
				info: '',
 | 
						||
				tittxt: "设备列表",
 | 
						||
				titlist: [
 | 
						||
					"全部",
 | 
						||
					"电表",
 | 
						||
					"水表",
 | 
						||
 | 
						||
				],
 | 
						||
				curtitidx: 0,
 | 
						||
				id: '',
 | 
						||
				timeday: '',
 | 
						||
				imglist: '',
 | 
						||
				token: '',
 | 
						||
				userImgs: '',
 | 
						||
				imgflag: true,
 | 
						||
				mac:"",
 | 
						||
				name:'',
 | 
						||
				deviceId:'',
 | 
						||
				storeId:'',
 | 
						||
				qrResult:''
 | 
						||
			}
 | 
						||
		},
 | 
						||
		onLoad(option) {
 | 
						||
			// setTimeout(() => {
 | 
						||
			// 	this.$refs.canvas.init(this.initChart)
 | 
						||
			// }, 1000)
 | 
						||
			let id = option.id
 | 
						||
			this.id = id
 | 
						||
			this.getDevice(id)
 | 
						||
		},
 | 
						||
		onShow() {
 | 
						||
			setTimeout(() => {
 | 
						||
				this.getDevice(this.id)
 | 
						||
			}, 1000)
 | 
						||
			this.getQiniuToken()
 | 
						||
		},
 | 
						||
		onUnload: function() {
 | 
						||
			xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
 | 
						||
			xBlufi.notifyStartDiscoverBle({
 | 
						||
				'isStart': false
 | 
						||
			});
 | 
						||
		},
 | 
						||
		onHide() {
 | 
						||
			xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
 | 
						||
			xBlufi.notifyStartDiscoverBle({
 | 
						||
				'isStart': false
 | 
						||
			});
 | 
						||
		},
 | 
						||
		onBeforeUnmount() {
 | 
						||
			xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
 | 
						||
			xBlufi.notifyStartDiscoverBle({
 | 
						||
				'isStart': false
 | 
						||
			});
 | 
						||
		},
 | 
						||
		methods: {
 | 
						||
			async initChart() {
 | 
						||
				let value = 100;
 | 
						||
				let value2 = this.deviceInfo.orderAmount
 | 
						||
				const option = {
 | 
						||
					series: [{
 | 
						||
						type: 'pie', // 饼图类型
 | 
						||
						radius: ['98%', '70%'], // 饼图半径,第一个值是内半径,第二个值是外半径
 | 
						||
						silent: true,
 | 
						||
						clockwise: true,
 | 
						||
						startAngle: 90, // 起始角度
 | 
						||
						z: 0,
 | 
						||
						zlevel: 0,
 | 
						||
						data: [{
 | 
						||
							value: value,
 | 
						||
							name: '占比', // 数据项名称
 | 
						||
							itemStyle: {
 | 
						||
								normal: {
 | 
						||
									color: '#8883F0', // 数据项颜色
 | 
						||
								},
 | 
						||
							},
 | 
						||
							label: {
 | 
						||
								normal: {
 | 
						||
									position: 'center',
 | 
						||
									formatter: ` {a|${value2 == null ? 0 : value2}}\n\n{b|订单金额}`, // 标签内容格式
 | 
						||
									rich: {
 | 
						||
										a: {
 | 
						||
											fontSize: 15,
 | 
						||
											fontWeight: '700',
 | 
						||
											color: '#333',
 | 
						||
										},
 | 
						||
										b: {
 | 
						||
											fontSize: 11,
 | 
						||
											color: '#888',
 | 
						||
										},
 | 
						||
									},
 | 
						||
								},
 | 
						||
							},
 | 
						||
						}, ],
 | 
						||
					}, ],
 | 
						||
				};
 | 
						||
 | 
						||
				// console.log( this.$refs.chartRef,'1111');
 | 
						||
				const chart = await this.$refs.chart.init(echarts);
 | 
						||
				// console.log(option,11);
 | 
						||
				chart.setOption(option)
 | 
						||
				return chart
 | 
						||
			},
 | 
						||
 | 
						||
			getQiniuToken() {
 | 
						||
				this.$u.get("/common/qiniu/uploadInfo").then((res) => {
 | 
						||
					if (res.code == 200) {
 | 
						||
						this.token = res.token
 | 
						||
					}
 | 
						||
				});
 | 
						||
			},
 | 
						||
			btnpic() {
 | 
						||
				let _this = this
 | 
						||
				let math = 'static/' + _this.$u.guid(20)
 | 
						||
				uni.chooseImage({
 | 
						||
					count: 1,
 | 
						||
					type: 'all',
 | 
						||
					success(res) {
 | 
						||
						const tempFilePaths = res.tempFiles
 | 
						||
						wx.uploadFile({
 | 
						||
							url: 'https://up-z2.qiniup.com',
 | 
						||
							name: 'file',
 | 
						||
							filePath: tempFilePaths[0].path,
 | 
						||
							formData: {
 | 
						||
								token: _this.token, //后端返回的token
 | 
						||
								key: 'smartmeter/img/' + math
 | 
						||
							},
 | 
						||
							success: function(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)
 | 
						||
 | 
						||
							}
 | 
						||
						});
 | 
						||
					}
 | 
						||
				})
 | 
						||
			},
 | 
						||
			putdevice(data) {
 | 
						||
				this.$u.put('/app/device', data).then((res) => {
 | 
						||
					if (res.code == 200) {
 | 
						||
						uni.showToast({
 | 
						||
							title: '修改成功',
 | 
						||
							icon: 'success',
 | 
						||
							duration: 2000
 | 
						||
						})
 | 
						||
					}else if(res.code == 500){
 | 
						||
						uni.showToast({
 | 
						||
							title: '设备不在线',
 | 
						||
							icon: 'none',
 | 
						||
							duration: 2000
 | 
						||
						})
 | 
						||
					}
 | 
						||
				})
 | 
						||
			},
 | 
						||
 | 
						||
			// 获取设备详情
 | 
						||
			getDevice(id) {
 | 
						||
				this.$u.get("/app/device/" + id).then((res) => {
 | 
						||
					// this.$forceUpdate()
 | 
						||
					if (res.code == 200) {
 | 
						||
						this.deviceInfo = res.data
 | 
						||
						this.storeId = res.data.storeId
 | 
						||
						this.qrResult = 'CTKG-' + res.data.mac
 | 
						||
						if (res.data.customPicture != '自定义图片路径') {
 | 
						||
							this.imglist = res.data.customPicture
 | 
						||
						} else {
 | 
						||
							this.imglist = res.data.picture
 | 
						||
						}
 | 
						||
						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]
 | 
						||
						); // 注意月份是从0开始的,所以要减1  
 | 
						||
						let now = new Date();
 | 
						||
						let differenceInMs = expireDate - now;
 | 
						||
						if (differenceInMs <= 0) {
 | 
						||
							this.timeday = 0
 | 
						||
						} else {
 | 
						||
							this.timeday = Math.abs(Math.floor(differenceInMs / (1000 * 60)));
 | 
						||
						}
 | 
						||
						this.loadings = true
 | 
						||
						// this.initChart()
 | 
						||
					}
 | 
						||
				});
 | 
						||
 | 
						||
			},
 | 
						||
			opendevice() {
 | 
						||
				let stause = 0
 | 
						||
				if (this.deviceInfo.powerStatus == 1) {
 | 
						||
					stause = 0
 | 
						||
				} else {
 | 
						||
					stause = 1
 | 
						||
				}
 | 
						||
				console.log(stause, 'stausestause');
 | 
						||
				this.$u.put(`/app/device/${this.deviceInfo.deviceId}/changePower?status=` + stause).then((res) => {
 | 
						||
					// this.$forceUpdate()
 | 
						||
					if (res.code == 200) {
 | 
						||
						// this.groupList=res.rows
 | 
						||
						setTimeout(() => {
 | 
						||
							this.getDevice(this.id)
 | 
						||
						}, 2000)
 | 
						||
 | 
						||
						// this.loadings=true
 | 
						||
						// this.initChart()
 | 
						||
					} else {
 | 
						||
						uni.showToast({
 | 
						||
							title: res.msg,
 | 
						||
							icon: 'none'
 | 
						||
						});
 | 
						||
					}
 | 
						||
				});
 | 
						||
			},
 | 
						||
			opendevices() {
 | 
						||
 | 
						||
			},
 | 
						||
			swiperchange(e) {
 | 
						||
				this.curtitidx = e.detail.current
 | 
						||
				console.log(e, 'aaaa');
 | 
						||
			},
 | 
						||
			changeidx(index) {
 | 
						||
				this.curtitidx = index
 | 
						||
			},
 | 
						||
 | 
						||
			toydfx() {
 | 
						||
				uni.navigateTo({
 | 
						||
					url: "/page_components/eletj?id=" + this.id
 | 
						||
				})
 | 
						||
			},
 | 
						||
 | 
						||
 | 
						||
			// 其他部分 点击进行跳转
 | 
						||
			topage(num) {
 | 
						||
				if (num == 0) {
 | 
						||
					uni.navigateTo({ //抄表
 | 
						||
						url: '/page_user/cbRecord?id=' + this.id
 | 
						||
					})
 | 
						||
				} else if (num == 1) {
 | 
						||
					//归零
 | 
						||
					this.$u.put(`/app/device/${this.id}/reset`).then((res) => {
 | 
						||
						if (res.code == 200) {
 | 
						||
							console.log(res.data);
 | 
						||
							uni.showToast({
 | 
						||
								title: res.data,
 | 
						||
								icon: 'none',
 | 
						||
								duration: 2000
 | 
						||
							});
 | 
						||
							this.getDevice(this.id)
 | 
						||
						} else if (res.msg == '设备剩余时间不足,无需归零') {
 | 
						||
							uni.showToast({
 | 
						||
								title: '设备剩余时间不足,无需归零',
 | 
						||
								icon: 'none',
 | 
						||
								duration: 2000
 | 
						||
							});
 | 
						||
							this.getDevice(this.id)
 | 
						||
						}
 | 
						||
					})
 | 
						||
 | 
						||
				} else if (num == 2) { //异常
 | 
						||
					uni.navigateTo({
 | 
						||
						url: '/page_fenbao/statulist/fault/yichang/index'
 | 
						||
					})
 | 
						||
				} else if (num == 3) {
 | 
						||
 | 
						||
					uni.navigateTo({
 | 
						||
						url: "/page_fenbao/statulist/taocanlist/index?id=" + this.id
 | 
						||
					})
 | 
						||
				} else if (num == 4) { //设置
 | 
						||
					uni.navigateTo({
 | 
						||
						url: '/page_user/setting?id=' + this.id
 | 
						||
					})
 | 
						||
				} else if (num == 5) {
 | 
						||
					console.log(this.deviceInfo);
 | 
						||
					// uni.navigateTo({
 | 
						||
					// 	url: '/page_fenbao/device/lianjie?mac=' + this.deviceInfo.mac + '&storeId=' + this
 | 
						||
					// 		.deviceInfo.storeId
 | 
						||
					// })
 | 
						||
                    uni.showLoading({
 | 
						||
                        title: '加载中...'
 | 
						||
                    });
 | 
						||
					xBlufi.initXBlufi(1);
 | 
						||
					xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent);
 | 
						||
					xBlufi.notifyStartDiscoverBle({
 | 
						||
						'isStart': true
 | 
						||
					});
 | 
						||
 | 
						||
 | 
						||
					// 停止蓝牙搜索  
 | 
						||
					setTimeout(() => {
 | 
						||
						xBlufi.notifyStartDiscoverBle({
 | 
						||
							'isStart': false
 | 
						||
						});
 | 
						||
						xBlufi.notifyConnectBle({
 | 
						||
							isStart: true,
 | 
						||
							deviceId: this.deviceId,
 | 
						||
							name: this.name
 | 
						||
						});
 | 
						||
					}, 2000)
 | 
						||
 | 
						||
				}
 | 
						||
			},
 | 
						||
 | 
						||
            funListenDeviceMsgEvent: function(options) {
 | 
						||
            	switch (options.type) {
 | 
						||
            		case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
 | 
						||
            			if (options.result) {
 | 
						||
            				let devicesarr = options.data
 | 
						||
            				// console.log(devicesarr,'devicesarrdevicesarr');
 | 
						||
            				devicesarr.forEach(device => {
 | 
						||
            					const mac = device.name.substring(5);
 | 
						||
            					if (device.name == this.qrResult) {
 | 
						||
            						this.deviceId = device.deviceId
 | 
						||
            						this.name = device.name
 | 
						||
            						this.mac = device.name.slice(5,17)
 | 
						||
									console.log(this.mac,'macmacmac');
 | 
						||
            						this.devicesList = uniqueDevicesList;
 | 
						||
            					}
 | 
						||
            
 | 
						||
            				});
 | 
						||
            			}
 | 
						||
            			break;
 | 
						||
            
 | 
						||
            		case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
 | 
						||
            			console.log("连接回调:" + JSON.stringify(options));
 | 
						||
            			if (options.result) {
 | 
						||
            				uni.hideLoading();
 | 
						||
            				// uni.showToast({
 | 
						||
            				// 	title: '连接成功',
 | 
						||
            				// 	icon: 'none'
 | 
						||
            				// }); 
 | 
						||
            				{
 | 
						||
            					console.log("连接回调options.data.deviceId:" + options.data.deviceId,
 | 
						||
            						"连接回调options.data.name:" + options.data.name);
 | 
						||
            					let name = ''
 | 
						||
            					let index = this.name.indexOf('-');
 | 
						||
            					if (index !== -1) {
 | 
						||
            						name = this.name.slice(index + 1);
 | 
						||
            					} 
 | 
						||
            					let data = {
 | 
						||
            						storeId:this.storeId,
 | 
						||
            						mac:this.mac
 | 
						||
            					}
 | 
						||
            					this.$u.put('/app/device/bind', data).then((res) => {
 | 
						||
            						if (res.code == 200) {
 | 
						||
            							uni.showToast({
 | 
						||
            								title: '绑定成功',
 | 
						||
            								icon: 'none',
 | 
						||
            								duration: 2000
 | 
						||
            							});
 | 
						||
            							uni.hideLoading();
 | 
						||
            							uni.removeStorageSync('mac');
 | 
						||
            							let vm = this
 | 
						||
            							uni.showModal({  
 | 
						||
            							    title: '提示',  
 | 
						||
            							    content: '你已绑定成功,需前去配网吗?',  
 | 
						||
            							    success: function (res) {  
 | 
						||
            							        if (res.confirm) { 
 | 
						||
            										let systemInfo = uni.getSystemInfoSync();
 | 
						||
            										if (systemInfo.platform === 'android') {
 | 
						||
            											// 当前设备是 Android  
 | 
						||
            											uni.navigateTo({
 | 
						||
            												url: '/page_components/wifilist/index?deviceId=' + options
 | 
						||
            													.data.deviceId + '&name=' + options.data.name
 | 
						||
            											})
 | 
						||
            										} else if (systemInfo.platform === 'ios') {
 | 
						||
            											// 当前设备是 iOS  
 | 
						||
            											uni.navigateTo({
 | 
						||
            												url: '/page_fenbao/device/wifivideo?deviceId=' + options
 | 
						||
            													.data.deviceId + '&name=' + options.data.name
 | 
						||
            											})
 | 
						||
            										}
 | 
						||
            							        } else if (res.cancel) {  
 | 
						||
            							            console.log('用户点击了取消');  
 | 
						||
            							        }  
 | 
						||
            							    }  
 | 
						||
            							})
 | 
						||
            						}else if(res.code == 500){
 | 
						||
            										uni.showToast({
 | 
						||
            											title: '该设备已被绑定',
 | 
						||
            											icon: 'none',
 | 
						||
            											duration: 2000
 | 
						||
            										});
 | 
						||
            									} else {
 | 
						||
            							uni.showToast({
 | 
						||
            								title: '连接失败',
 | 
						||
            								icon: 'none',
 | 
						||
            								duration: 2000
 | 
						||
            							});
 | 
						||
            							// uni.navigateBack()
 | 
						||
            						}
 | 
						||
            					})
 | 
						||
            				}
 | 
						||
            			}
 | 
						||
            
 | 
						||
            			break;
 | 
						||
            
 | 
						||
            		case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
 | 
						||
            			if (!options.result) {
 | 
						||
            				console.log("蓝牙未开启", options);
 | 
						||
            				uni.showToast({
 | 
						||
            					title: '蓝牙未开启',
 | 
						||
            					icon: 'none',
 | 
						||
            					duration: 3000
 | 
						||
            				});
 | 
						||
            			} else {
 | 
						||
            				// this.searching = true
 | 
						||
            				//蓝牙搜索开始
 | 
						||
            				// _this.setData({
 | 
						||
            				// 	searching: true
 | 
						||
            				// });
 | 
						||
            			}
 | 
						||
            
 | 
						||
            			break;
 | 
						||
            
 | 
						||
            		case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_STOP:
 | 
						||
            			if (options.result) {
 | 
						||
            				let uniqueDevicesList = Array.from(new Set(this.devicesList));
 | 
						||
            
 | 
						||
            				// 将去重后的数组重新赋值给 this.devicesList
 | 
						||
            				this.devicesList = uniqueDevicesList;
 | 
						||
            				let list = []
 | 
						||
            				filteredDevices.forEach(device => {
 | 
						||
            					// 从设备名称中提取 MAC 地址(假设 MAC 地址是设备名称的后6个字符)
 | 
						||
            					let macFromName = device.name.substring(device.name.length - 12);
 | 
						||
            					this.$u.get(`/app/device/${macFromName}/isBind`).then((res) => {
 | 
						||
            						if (res.data == false) {
 | 
						||
            							list.push(device)
 | 
						||
            						} else {
 | 
						||
            
 | 
						||
            						}
 | 
						||
            					})
 | 
						||
            
 | 
						||
            				});
 | 
						||
            				setTimeout(() => {
 | 
						||
            					this.devicesList = list
 | 
						||
            				}, 200)
 | 
						||
            
 | 
						||
            				console.log('蓝牙停止搜索ok');
 | 
						||
            			} else {
 | 
						||
            				//蓝牙停止搜索失败
 | 
						||
            				console.log('蓝牙停止搜索失败');
 | 
						||
            			}
 | 
						||
            			this.searching = false
 | 
						||
            			// _this.setData({
 | 
						||
            			// 	searching: false
 | 
						||
            			// });
 | 
						||
            
 | 
						||
            			break;
 | 
						||
            	}
 | 
						||
            },
 | 
						||
 | 
						||
		}
 | 
						||
	}
 | 
						||
</script>
 | 
						||
 | 
						||
<style lang="scss">
 | 
						||
	page {
 | 
						||
		background-color: #F7FAFE;
 | 
						||
	}
 | 
						||
 | 
						||
	.page {
 | 
						||
		.zhuhu {
 | 
						||
			margin-top: 20rpx;
 | 
						||
			padding: 0 40rpx;
 | 
						||
 | 
						||
			.card1 {
 | 
						||
				padding: 34rpx 0 0 40rpx;
 | 
						||
				width: 670rpx;
 | 
						||
				height: 470rpx;
 | 
						||
				background: #FFFFFF;
 | 
						||
				box-shadow: 0rpx 14rpx 35rpx 0rpx rgba(53, 140, 255, 0.1);
 | 
						||
				border-radius: 28rpx 28rpx 28rpx 28rpx;
 | 
						||
 | 
						||
				.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;
 | 
						||
 | 
						||
					.mid_left {
 | 
						||
						image {
 | 
						||
							width: 170rpx;
 | 
						||
							height: 160rpx;
 | 
						||
							border-radius: 20rpx;
 | 
						||
						}
 | 
						||
					}
 | 
						||
 | 
						||
					.mid_right {
 | 
						||
						margin-left: 40rpx;
 | 
						||
						display: flex;
 | 
						||
						flex-wrap: wrap;
 | 
						||
 | 
						||
						.mid_top {
 | 
						||
							width: 100%;
 | 
						||
							font-size: 42rpx;
 | 
						||
							font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
 | 
						||
							font-weight: 400;
 | 
						||
							color: #262B37;
 | 
						||
						}
 | 
						||
 | 
						||
						.mid_bot {
 | 
						||
							display: flex;
 | 
						||
							flex-wrap: nowrap;
 | 
						||
							align-items: center;
 | 
						||
 | 
						||
							.txt {
 | 
						||
								font-size: 24rpx;
 | 
						||
								font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
 | 
						||
								font-weight: 400;
 | 
						||
								color: #95989D;
 | 
						||
							}
 | 
						||
 | 
						||
							.tip {
 | 
						||
								display: flex;
 | 
						||
								align-items: center;
 | 
						||
								justify-content: center;
 | 
						||
								margin-left: 19rpx;
 | 
						||
								// width: 38rpx;
 | 
						||
								// height: 23rpx;
 | 
						||
								padding: 5rpx 10rpx;
 | 
						||
								box-sizing: border-box;
 | 
						||
								background: rgba(204, 204, 204, 0);
 | 
						||
								opacity: 1;
 | 
						||
								border: 2rpx solid #8883F0;
 | 
						||
								border-radius: 40rpx;
 | 
						||
								font-size: 24rpx;
 | 
						||
								font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
 | 
						||
								font-weight: 400;
 | 
						||
								color: #8883F0;
 | 
						||
							}
 | 
						||
						}
 | 
						||
					}
 | 
						||
				}
 | 
						||
 | 
						||
				.bot {
 | 
						||
					margin-top: 53rpx;
 | 
						||
					display: flex;
 | 
						||
					flex-wrap: nowrap;
 | 
						||
					align-items: center;
 | 
						||
 | 
						||
					.bot_left {
 | 
						||
						width: 210rpx;
 | 
						||
						height: 180rpx;
 | 
						||
						margin-right: 34rpx;
 | 
						||
 | 
						||
						.echarts {
 | 
						||
							// width: 210rpx;
 | 
						||
							height: 200rpx;
 | 
						||
 | 
						||
							.uni-ec-canvas {
 | 
						||
								width: 100%;
 | 
						||
								height: 100rpx !important;
 | 
						||
								display: block;
 | 
						||
								// margin-top: 30rpx;
 | 
						||
							}
 | 
						||
						}
 | 
						||
					}
 | 
						||
 | 
						||
					.bot_right {
 | 
						||
						// margin-top: 50rpx;
 | 
						||
						display: flex;
 | 
						||
						// flex-wrap: nowrap;
 | 
						||
                        width: 100%;
 | 
						||
						justify-content: space-between;
 | 
						||
						padding-left: 80rpx;
 | 
						||
						padding-right: 120rpx;
 | 
						||
						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: 24rpx;
 | 
						||
								font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
 | 
						||
								font-weight: 400;
 | 
						||
								color: #262B37;
 | 
						||
							}
 | 
						||
						}
 | 
						||
					}
 | 
						||
				}
 | 
						||
			}
 | 
						||
 | 
						||
			.card2 {
 | 
						||
				padding-top: 40rpx;
 | 
						||
				margin-top: 24rpx;
 | 
						||
				width: 670rpx;
 | 
						||
				height: 254rpx;
 | 
						||
				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: #8883F0;
 | 
						||
				}
 | 
						||
 | 
						||
				.cont_box {
 | 
						||
					margin-top: 32rpx;
 | 
						||
					display: flex;
 | 
						||
					flex-wrap: nowrap;
 | 
						||
					justify-content: space-around;
 | 
						||
 | 
						||
 | 
						||
					.cont {
 | 
						||
						width: 25%;
 | 
						||
						display: flex;
 | 
						||
						flex-wrap: wrap;
 | 
						||
						align-items: center;
 | 
						||
						justify-content: center;
 | 
						||
						text-align: center;
 | 
						||
 | 
						||
						.top {
 | 
						||
							width: 110rpx;
 | 
						||
							font-size: 32rpx;
 | 
						||
							font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
 | 
						||
							font-weight: 400;
 | 
						||
							color: #262B37;
 | 
						||
						}
 | 
						||
 | 
						||
						.bot {
 | 
						||
							margin-top: 20rpx;
 | 
						||
							font-size: 24rpx;
 | 
						||
							font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
 | 
						||
							font-weight: 400;
 | 
						||
							color: #262B37;
 | 
						||
						}
 | 
						||
					}
 | 
						||
				}
 | 
						||
			}
 | 
						||
 | 
						||
			.card3 {
 | 
						||
				padding-top: 40rpx;
 | 
						||
				margin-top: 24rpx;
 | 
						||
				width: 670rpx;
 | 
						||
				// height: 318rpx;
 | 
						||
				background: #FFFFFF;
 | 
						||
				box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(53, 140, 255, 0.1);
 | 
						||
				border-radius: 28rpx;
 | 
						||
				padding-bottom: 20rpx;
 | 
						||
 | 
						||
				.tit {
 | 
						||
					margin-left: 40rpx;
 | 
						||
 | 
						||
					font-size: 35rpx;
 | 
						||
					font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
 | 
						||
					font-weight: 400;
 | 
						||
					color: #8883F0;
 | 
						||
				}
 | 
						||
 | 
						||
				.cont_box {
 | 
						||
					// padding-left: 30rpx;
 | 
						||
					// 	padding-right: 30rpx;
 | 
						||
					padding: 0 40rpx;
 | 
						||
					margin-top: 32rpx;
 | 
						||
					display: flex;
 | 
						||
					flex-wrap: nowrap;
 | 
						||
					justify-content: space-around;
 | 
						||
 | 
						||
					.cont:last-child {
 | 
						||
						margin-right: 0rpx;
 | 
						||
					}
 | 
						||
 | 
						||
					.cont {
 | 
						||
						width: 112rpx;
 | 
						||
						display: flex;
 | 
						||
						flex-wrap: wrap;
 | 
						||
						align-items: center;
 | 
						||
						justify-content: center;
 | 
						||
						margin-right: 80rpx;
 | 
						||
 | 
						||
						.top {
 | 
						||
							image {
 | 
						||
								width: 56rpx;
 | 
						||
								height: 56rpx;
 | 
						||
							}
 | 
						||
						}
 | 
						||
 | 
						||
						.bot {
 | 
						||
							margin-top: 15rpx;
 | 
						||
							font-size: 28rpx;
 | 
						||
							font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
 | 
						||
							font-weight: 400;
 | 
						||
							color: #808080;
 | 
						||
						}
 | 
						||
					}
 | 
						||
				}
 | 
						||
			}
 | 
						||
 | 
						||
			.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> |