210设备管控页弹框功能

This commit is contained in:
fengerli
2025-08-06 18:33:33 +08:00
parent 566fb77648
commit 77d1fdbe64
7 changed files with 250 additions and 189 deletions

View File

@ -507,29 +507,29 @@
this.getData(this.deviceType); // 重新加载第一页数据
},
updateDeviceStatus(data) {
// 只更新 communicationMode == 0 的设备
this.deviceList = this.deviceList.map(item => {
console.log(item,'item444');
if (item.communicationMode == 0) {
console.log(item, 'item2222');
let messageData;
try {
messageData = data.message; // 双重解析(如果消息被转义)
} catch (e) {
return item; // 解析失败则不更新
this.deviceList = this.deviceList
.map(item => {
if (!item) return null; // 如果 item 是 undefined/null返回 null
if (item.communicationMode == 0) {
let messageData;
try {
messageData = data.message;
} catch (e) {
return item; // 解析失败则返回原 item
}
const [deviceId, onlineStatus, battery] = messageData.state || [];
console.log('我收到消息了没',item.battery);
return {
...item,
battery: battery ?? item.battery,
onlineStatus: onlineStatus ?? item.onlineStatus,
lastUpdate: data.timestamp,
};
}
const [deviceId, onlineStatus, batteryPercentage] = messageData.state || [];
// 只更新电量 & 在线状态(避免覆盖其他字段)
return {
...item,
batteryPercentage: batteryPercentage ?? item.batteryPercentage, // 如果新电量有效则更新,否则保留旧值
onlineStatus: onlineStatus ?? item.onlineStatus, // 如果新状态有效则更新,否则保留旧值
lastUpdate: data.timestamp // 更新时间戳
};
return item;
}
});
}
})
.filter(Boolean);
},
},
onLoad() {
this.getTab()
@ -539,22 +539,19 @@
this.getTab() // 刷新数据
this.onIntall()
});
// 监听设备状态更新事件
uni.$on('deviceStatusUpdate', (data) => {
console.log('收到设备状态更新通知:', data);
this.onIntall()
});
},
beforeDestroy() {
// 组件销毁前移除监听器
uni.$off('refreshDeviceList');
},
onShow() {
// 监听设备状态更新事件
uni.$on('deviceStatusUpdate', (data) => {
console.log('收到设备状态更新通知:', data);
this.updateDeviceStatus(data);
});
},
onHide() {
// 页面隐藏时取消监听,避免内存泄漏
onUnload() {
uni.$off('deviceStatusUpdate');
},
}
}
</script>