210设备管控页弹框功能
This commit is contained in:
@ -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>
|
||||
|
Reference in New Issue
Block a user