2024-08-28 11:04:46 +08:00
|
|
|
|
<template>
|
|
|
|
|
<view class="pages">
|
|
|
|
|
<u-navbar title="设备详情" :border-bottom="false" :background="bgc" back-icon-color="#3D3D3D" title-color='#3D3D3D'
|
|
|
|
|
title-size='36' height='44'></u-navbar>
|
|
|
|
|
<view class="list_item">
|
|
|
|
|
<view class="top">
|
|
|
|
|
<view class="bh">设备编号:{{obj.deviceNo == undefined ? '--' : obj.deviceNo}}</view>
|
|
|
|
|
<view class="zx" v-if="obj.onlineStatus == 1">
|
|
|
|
|
<view class="yuan"></view>
|
|
|
|
|
<view class="wz">在线</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="zx" v-else>
|
|
|
|
|
<view class="yuan" style="background-color: red;"></view>
|
|
|
|
|
<view style="color: red;">离线</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="devixexq">
|
|
|
|
|
<view class="xiaoav">
|
|
|
|
|
<view class="">设备状态</view>
|
2024-09-12 18:02:26 +08:00
|
|
|
|
<view style="color: rgb(18, 210, 172);;" v-if="obj.status == 2">使用中</view>
|
|
|
|
|
<view style="color: rgb(18, 210, 172);;" v-if="obj.status == 1">正常</view>
|
2024-08-28 11:04:46 +08:00
|
|
|
|
<view style="color: red;" v-if="obj.status == 3">不可用</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="xiaoav">
|
2024-08-29 18:02:17 +08:00
|
|
|
|
<view class="">所属合作伙伴</view>
|
2024-08-28 11:04:46 +08:00
|
|
|
|
<view class="">{{obj.agentName == undefined ? '--' : obj.agentName}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="xiaoav">
|
2024-08-29 18:02:17 +08:00
|
|
|
|
<view class="">所属渠道商</view>
|
2024-08-28 11:04:46 +08:00
|
|
|
|
<view class="">{{obj.bizManName == undefined ? '--' : obj.bizManName}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="xiaoav">
|
2024-08-29 18:02:17 +08:00
|
|
|
|
<view class="">所属创业者</view>
|
2024-08-28 11:04:46 +08:00
|
|
|
|
<view class="">{{obj.userName == undefined ? '--' : obj.userName}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="zong">
|
|
|
|
|
<view class="xiaoav">
|
|
|
|
|
<view class="">订单总数</view>
|
|
|
|
|
<view class="">{{obj.orderCount == undefined ? '--' : obj.orderCount}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="xiaoav">
|
|
|
|
|
<view class="">订单总金额</view>
|
|
|
|
|
<view class="">¥{{obj.orderAmount == undefined ? '--' : obj.orderAmount}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
2024-09-26 17:35:25 +08:00
|
|
|
|
<!-- 开关操作 -->
|
|
|
|
|
<view class="lishi" v-if="type">
|
|
|
|
|
<view class="lt">
|
|
|
|
|
开关操作
|
|
|
|
|
</view>
|
|
|
|
|
<view class="rt">
|
|
|
|
|
<image v-if="imgflag" @click="btnimg"
|
|
|
|
|
src="https://api.ccttiot.com/smartmeter/img/static/uccaWar4FDp37op7haWM " mode=""></image>
|
|
|
|
|
<image v-else @click="btnimgs" src="https://api.ccttiot.com/smartmeter/img/static/ur9HRtZKY7YcxGewJARz"
|
|
|
|
|
mode=""></image>
|
|
|
|
|
</view>
|
|
|
|
|
</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=""></image>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 蓝牙连接失败 -->
|
|
|
|
|
<view class="bluetoothbox" v-if="shibaiflag">
|
|
|
|
|
<image class="img" src="https://api.ccttiot.com/smartmeter/img/static/uTb3vSlbcHdPMFQMBjyL" mode=""></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="topage">
|
|
|
|
|
重新连接
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</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>
|
|
|
|
|
|
2024-08-28 11:04:46 +08:00
|
|
|
|
<!-- 商家信息 -->
|
|
|
|
|
<view class="sjmsg">
|
|
|
|
|
<view class="tit">
|
|
|
|
|
商家信息
|
|
|
|
|
</view>
|
|
|
|
|
<view class="jy">
|
|
|
|
|
<view class="one">经营场所:</view>
|
|
|
|
|
<view class="thr">{{obj.storeName == undefined ? '--' : obj.storeName}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="jy">
|
2024-09-14 18:01:18 +08:00
|
|
|
|
<view class="one" style="width: 180rpx;">经营地址:</view>
|
2024-08-28 11:04:46 +08:00
|
|
|
|
<view class="two">{{obj.storeAddress == undefined ? '--' : obj.storeAddress}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="jy">
|
|
|
|
|
<view class="one">所在房间:</view>
|
2024-08-28 18:00:25 +08:00
|
|
|
|
<view class="two">{{obj.room == undefined ? '--' : obj.room}}号</view>
|
2024-08-28 11:04:46 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 设备规格 -->
|
|
|
|
|
<view class="sjmsg">
|
|
|
|
|
<view class="tit">
|
|
|
|
|
设备规格
|
|
|
|
|
</view>
|
|
|
|
|
<view class="jy">
|
|
|
|
|
<view class="one">设备名称:</view>
|
|
|
|
|
<view class="two">{{obj.deviceName == undefined ? '--' : obj.deviceName}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="jy">
|
|
|
|
|
<view class="one">设备尺寸:</view>
|
|
|
|
|
<view class="two">{{obj.size == undefined ? '--' : obj.size}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="jy">
|
|
|
|
|
<view class="one">设备面料:</view>
|
|
|
|
|
<view class="two">{{obj.fabric == undefined ? '--' : obj.fabric}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="jy">
|
|
|
|
|
<view class="one">设备填充物:</view>
|
|
|
|
|
<view class="two">{{obj.fill == undefined ? '--' : obj.fill}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 在线信息 -->
|
|
|
|
|
<view class="sjmsg">
|
|
|
|
|
<view class="tit">
|
|
|
|
|
在线信息
|
|
|
|
|
</view>
|
|
|
|
|
<view class="jy">
|
|
|
|
|
<view class="one">首次上线时间:</view>
|
|
|
|
|
<view class="two">{{obj.firstOnlineTime == undefined ? '--' : obj.firstOnlineTime}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="jy">
|
|
|
|
|
<view class="one">最后登录时间:</view>
|
|
|
|
|
<view class="two">{{obj.lastOnlineTime == undefined ? '--' : obj.lastOnlineTime}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 收益明细 -->
|
|
|
|
|
<view class="sjmsg">
|
|
|
|
|
<view class="tit">
|
2024-08-29 18:02:17 +08:00
|
|
|
|
收益明细
|
2024-08-28 11:04:46 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="jy" v-for="(item,index) in obj.bonusList" :key="index">
|
2024-09-26 17:35:25 +08:00
|
|
|
|
<view class="one">{{item.arrivalName == undefined ? '--' : item.arrivalName}}
|
|
|
|
|
(<text v-if="item.arrivalType == 1">平台</text>
|
|
|
|
|
<text v-if="item.arrivalType == 2">公司</text>
|
|
|
|
|
<text v-if="item.arrivalType == 3">合作伙伴</text>
|
|
|
|
|
<text v-if="item.arrivalType == 4">渠道商</text>
|
|
|
|
|
<text v-if="item.arrivalType == 5">创业者</text>
|
|
|
|
|
<text v-if="item.arrivalType == 6">经营场所</text>){{item.point}}%</view>
|
2024-08-28 11:04:46 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
2024-09-26 17:35:25 +08:00
|
|
|
|
var xBlufi = require("@/components/blufi/xBlufi.js")
|
2024-08-28 11:04:46 +08:00
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
bgc: {
|
|
|
|
|
backgroundColor: "#F7FAFE",
|
|
|
|
|
},
|
2024-09-26 17:35:25 +08:00
|
|
|
|
id:'',
|
|
|
|
|
obj:{},
|
|
|
|
|
setMode: null,
|
|
|
|
|
qrResult: '',
|
|
|
|
|
isUsing: false,
|
|
|
|
|
bluetoothflag: false,
|
|
|
|
|
shibaiflag: false,
|
|
|
|
|
btnmsk: false,
|
2024-08-28 11:04:46 +08:00
|
|
|
|
deviceId:'',
|
2024-09-26 17:35:25 +08:00
|
|
|
|
name: '',
|
|
|
|
|
imgflag:false,
|
|
|
|
|
pictrim:true,
|
|
|
|
|
type:''
|
2024-08-28 11:04:46 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
onLoad(option) {
|
2024-09-26 17:35:25 +08:00
|
|
|
|
this.$u.get('/app/user/userInfo').then(res =>{
|
|
|
|
|
this.type = res.data.type
|
|
|
|
|
})
|
|
|
|
|
this.id = option.deviceId
|
2024-08-28 11:04:46 +08:00
|
|
|
|
this.getxq()
|
|
|
|
|
},
|
|
|
|
|
// 分享到好友(会话)
|
|
|
|
|
onShareAppMessage: function() {
|
|
|
|
|
return {
|
|
|
|
|
title: '创亿康',
|
|
|
|
|
path: '/pages/index/index'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 分享到朋友圈
|
|
|
|
|
onShareTimeline: function() {
|
|
|
|
|
return {
|
|
|
|
|
title: '创亿康',
|
|
|
|
|
query: '',
|
|
|
|
|
path: '/pages/index/index'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
2024-09-26 17:35:25 +08:00
|
|
|
|
|
2024-08-28 11:04:46 +08:00
|
|
|
|
getxq(){
|
2024-09-26 17:35:25 +08:00
|
|
|
|
this.$u.get(`/app/device/${this.id}`).then(res =>{
|
2024-08-28 11:04:46 +08:00
|
|
|
|
if(res.code == 200){
|
|
|
|
|
this.obj = res.data
|
2024-09-26 17:35:25 +08:00
|
|
|
|
this.imgflag = res.data.isUsing
|
|
|
|
|
this.qrResult = res.data.mac
|
2024-08-28 11:04:46 +08:00
|
|
|
|
}
|
|
|
|
|
})
|
2024-09-26 17:35:25 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 点击临时开关
|
|
|
|
|
btnimg() {
|
|
|
|
|
if(this.pictrim == true){ //防止频繁点击
|
|
|
|
|
this.pictrim = false
|
|
|
|
|
setTimeout(()=>{
|
|
|
|
|
this.pictrim = true
|
|
|
|
|
},5000)
|
|
|
|
|
if (this.obj.onlineStatus == 1) {
|
|
|
|
|
this.$u.put(`/app/device/${this.id}/changePower?status=0`).then(res => {
|
|
|
|
|
if (res.code == 200) {
|
|
|
|
|
this.imgflag = false
|
|
|
|
|
} else {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: res.msg,
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 1000
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
if (this.setMode == null) {
|
|
|
|
|
this.btnmsk = false
|
|
|
|
|
this.shibaiflag = false
|
|
|
|
|
this.bluetoothflag = true
|
|
|
|
|
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
|
|
|
|
|
})
|
|
|
|
|
xBlufi.notifyInitBleEsp32({
|
|
|
|
|
deviceId: this.deviceId
|
|
|
|
|
})
|
|
|
|
|
}, 1000)
|
|
|
|
|
} else {
|
|
|
|
|
let that = this
|
|
|
|
|
uni.getNetworkType({
|
|
|
|
|
success(res) {
|
|
|
|
|
if (res.networkType !== 'none') {
|
|
|
|
|
uni.getConnectedBluetoothDevices({
|
|
|
|
|
success(res) {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
xBlufi.notifySendCustomData({
|
|
|
|
|
customData: '11close'
|
|
|
|
|
})
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '操作成功',
|
|
|
|
|
icon: 'success',
|
|
|
|
|
duration: 1000
|
|
|
|
|
})
|
|
|
|
|
this.imgflag = false
|
|
|
|
|
that.btnmsk = false
|
|
|
|
|
that.shibaiflag = false
|
|
|
|
|
that.bluetoothflag = false
|
|
|
|
|
}, 1000)
|
|
|
|
|
},
|
|
|
|
|
fail(err) {
|
|
|
|
|
console.error('获取已连接蓝牙设备信息失败:', err)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '请不要频繁点击',
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 1000
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
btnimgs() {
|
|
|
|
|
if(this.pictrim == true){ //防止频繁点击
|
|
|
|
|
this.pictrim = false
|
|
|
|
|
setTimeout(()=>{
|
|
|
|
|
this.pictrim = true
|
|
|
|
|
},5000)
|
|
|
|
|
if (this.obj.onlineStatus == 1) {
|
|
|
|
|
///app/bill/switchDevice?billId=${this.id}&open=true
|
|
|
|
|
this.$u.put(`/app/device/${this.id}/changePower?status=1`).then(res => {
|
|
|
|
|
if (res.code == 200) {
|
|
|
|
|
this.imgflag = true
|
|
|
|
|
} else {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: res.msg,
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 1000
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
if (this.setMode == null) {
|
|
|
|
|
this.btnmsk = false
|
|
|
|
|
this.shibaiflag = false
|
|
|
|
|
this.bluetoothflag = true
|
|
|
|
|
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
|
|
|
|
|
})
|
|
|
|
|
xBlufi.notifyInitBleEsp32({
|
|
|
|
|
deviceId: this.deviceId
|
|
|
|
|
})
|
|
|
|
|
}, 1000)
|
|
|
|
|
} else {
|
|
|
|
|
let that = this
|
|
|
|
|
uni.getNetworkType({
|
|
|
|
|
success(res) {
|
|
|
|
|
if (res.networkType !== 'none') {
|
|
|
|
|
uni.getConnectedBluetoothDevices({
|
|
|
|
|
success(res) {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
xBlufi.notifySendCustomData({
|
|
|
|
|
customData: '11open'
|
|
|
|
|
})
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '操作成功',
|
|
|
|
|
icon: 'success',
|
|
|
|
|
duration: 1000
|
|
|
|
|
})
|
|
|
|
|
this.imgflag = true
|
|
|
|
|
that.btnmsk = false
|
|
|
|
|
that.shibaiflag = false
|
|
|
|
|
that.bluetoothflag = false
|
|
|
|
|
}, 1000)
|
|
|
|
|
},
|
|
|
|
|
fail(err) {
|
|
|
|
|
console.error('获取已连接蓝牙设备信息失败:', err)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '请不要频繁点击',
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 1000
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
// 蓝牙连接取消
|
|
|
|
|
btnlyqx() {
|
|
|
|
|
this.shibaiflag = false
|
|
|
|
|
this.bluetoothflag = false
|
|
|
|
|
},
|
|
|
|
|
// 蓝牙重新连接
|
|
|
|
|
topage() {
|
|
|
|
|
this.btnmsk = false
|
|
|
|
|
this.shibaiflag = false
|
|
|
|
|
this.bluetoothflag = true
|
|
|
|
|
if (this.setMode == null) {
|
|
|
|
|
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
|
|
|
|
|
})
|
|
|
|
|
xBlufi.notifyInitBleEsp32({
|
|
|
|
|
deviceId: this.deviceId
|
|
|
|
|
})
|
|
|
|
|
}, 1000)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 搜索蓝牙部分
|
|
|
|
|
funListenDeviceMsgEvent: function(options) {
|
|
|
|
|
switch (options.type) {
|
|
|
|
|
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_MY_DATA:
|
|
|
|
|
let loadPercent = options.data;
|
|
|
|
|
let loadText = '文件读取中'
|
|
|
|
|
// console.log("文件读取中", options.data)
|
|
|
|
|
break;
|
|
|
|
|
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
|
|
|
|
|
let ver_data = this.parseCustomData(options.data)
|
|
|
|
|
this.setMode = Math.floor(ver_data.setMode / 60)
|
|
|
|
|
console.log("1收到设备发来的自定义数据结果:", ver_data, this.setMode)
|
|
|
|
|
break;
|
|
|
|
|
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
|
|
|
|
|
if (options.result) {
|
|
|
|
|
let devicesarr = options.data
|
|
|
|
|
devicesarr.forEach(device => {
|
|
|
|
|
const mac = device.name.substring(5)
|
|
|
|
|
if (device.name.slice(5, 17) == this.qrResult) {
|
|
|
|
|
this.deviceId = device.deviceId
|
|
|
|
|
this.name = device.name
|
|
|
|
|
this.mac = device.name.slice(5, 17)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
|
|
|
|
|
// console.log("连接回调:" + JSON.stringify(options))
|
|
|
|
|
if (options.result) {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
this.bluetoothflag = false
|
|
|
|
|
}, 3000)
|
|
|
|
|
uni.hideLoading(); {
|
|
|
|
|
console.log("连接回调options.data.deviceId:" + options.data.deviceId,
|
|
|
|
|
"连接回调options.data.name:" + options.data.name)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.shibaiflag = true
|
|
|
|
|
this.bluetoothflag = false
|
|
|
|
|
uni.hideLoading()
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
|
|
|
|
|
if (!options.result) {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
uni.hideLoading()
|
|
|
|
|
this.bluetoothflag = false
|
|
|
|
|
}, 3000)
|
|
|
|
|
console.log("蓝牙未开启", options)
|
|
|
|
|
this.shibaiflag = true
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
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 = []
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
this.devicesList = list
|
|
|
|
|
}, 200)
|
|
|
|
|
console.log('蓝牙停止搜索ok')
|
|
|
|
|
} else {
|
|
|
|
|
//蓝牙停止搜索失败
|
|
|
|
|
console.log('蓝牙停止搜索失败')
|
|
|
|
|
}
|
|
|
|
|
this.searching = false
|
|
|
|
|
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;
|
|
|
|
|
},
|
2024-08-28 11:04:46 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
/deep/ .u-title {
|
|
|
|
|
padding-bottom: 15rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/deep/ .u-icon__icon {
|
|
|
|
|
padding-bottom: 15rpx;
|
|
|
|
|
}
|
2024-09-26 17:35:25 +08:00
|
|
|
|
.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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.lishi {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 110rpx;
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
padding: 24rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
margin-top: 30rpx;
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
|
|
.lt {
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.rt {
|
|
|
|
|
image {
|
|
|
|
|
width: 160rpx;
|
|
|
|
|
height: 80rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-08-28 11:04:46 +08:00
|
|
|
|
.pages {
|
|
|
|
|
background-color: #F7FAFE !important;
|
|
|
|
|
height: 100%;
|
|
|
|
|
width: 100%;
|
|
|
|
|
padding-bottom: 100rpx !important;
|
|
|
|
|
padding: 0 38rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
|
|
|
|
.sjmsg {
|
|
|
|
|
margin-top: 50rpx;
|
|
|
|
|
|
|
|
|
|
.tit {
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.jy {
|
|
|
|
|
margin-top: 24rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
|
|
.one {
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #808080;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.two {
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.thr {
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #8883F0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.list_item {
|
|
|
|
|
margin-top: 32rpx;
|
2024-09-13 18:02:36 +08:00
|
|
|
|
max-height: 348rpx;
|
2024-08-28 11:04:46 +08:00
|
|
|
|
padding: 24rpx 28rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
background: #FFFFFF;
|
|
|
|
|
box-shadow: 0rpx 4rpx 22rpx 0rpx rgba(0, 0, 0, 0.07);
|
|
|
|
|
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
|
|
|
|
.devixexq {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
margin-top: 14rpx;
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
|
|
.xiaoav {
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
|
|
|
|
|
view {
|
|
|
|
|
margin-top: 12rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.zong {
|
|
|
|
|
margin-top: 30rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
text-align: center;
|
|
|
|
|
padding: 0 50rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
|
|
|
|
|
view {
|
|
|
|
|
margin-top: 12rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.cen {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
margin-top: 22rpx;
|
|
|
|
|
align-items: center;
|
|
|
|
|
border-bottom: 1px solid #D8D8D8;
|
|
|
|
|
padding-bottom: 34rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
|
|
|
|
.fj {
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input {
|
|
|
|
|
width: 346rpx;
|
|
|
|
|
height: 38rpx;
|
|
|
|
|
background: #F0F0F0;
|
|
|
|
|
border-radius: 8rpx 8rpx 8rpx 8rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.btn {
|
|
|
|
|
width: 110rpx;
|
|
|
|
|
height: 38rpx;
|
|
|
|
|
background: #8883F0;
|
|
|
|
|
border-radius: 8rpx 8rpx 8rpx 8rpx;
|
|
|
|
|
text-align: center;
|
|
|
|
|
line-height: 38rpx;
|
|
|
|
|
font-size: 20rpx;
|
|
|
|
|
color: #FFFFFF;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.top {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
border-bottom: 1px solid #D8D8D8;
|
|
|
|
|
padding-bottom: 26rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
|
|
|
|
.bh {
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.zx {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
|
|
.yuan {
|
|
|
|
|
width: 14rpx;
|
|
|
|
|
height: 14rpx;
|
|
|
|
|
background: #12D2AC;
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
margin-right: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.wz {
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #12D2AC;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|