消息中心监听新消息

feasure-livedata
lld 2026-04-03 23:02:03 +08:00
parent a14e2b9b0d
commit d83f75f2d6
2 changed files with 63 additions and 2 deletions

View File

@ -102,6 +102,7 @@
import UniDividerText from "../../components/uni-divider/uni-divider-text.vue";
import {isTodayDate,formatTime} from "@/utils/agri";
import {getMsgOverview, removeBatch, updateRead} from "@/api/warn/message";
import * as mqttUtil from "@/utils/mqtt";
export default {
components: {
UniDividerText
@ -163,8 +164,22 @@ export default {
}
},
onShow() {
console.info("消息中心监听")
mqttUtil.setOnMessageCallback(this.ackMsg);
this.getMsgOverview();
},
onHide() {
console.info("消息中心取消监听")
mqttUtil.removeOnMessageCallback();
},
onUnload() {
console.info("消息中心取消监听")
mqttUtil.removeOnMessageCallback();
},
beforeDestroy() {
console.info("消息中心取消监听")
mqttUtil.removeOnMessageCallback();
},
methods: {
isTodayDate,
formatTime,
@ -219,6 +234,12 @@ export default {
getMsgOverview().then(response => {
if (response.code === 200) {
this.messageList = response.data;
// this.messageList.forEach((msgItem, msgIndex) => {
// this.msgList[msgItem.msgType].numBadge = msgItem.unreadCount || null
// this.msgList[msgItem.msgType].content = msgItem.content || null
// this.msgList[msgItem.msgType].createTime = msgItem.createTime || null
// })
this.msgList.forEach((item, index) => {
item.numBadge = null;
item.content = null;
@ -275,6 +296,42 @@ export default {
change(e, type) {
console.log((type === 'showLeft' ? '左窗口' : '右窗口') + (e ? '打开' : '关闭'));
this[type] = e
},
ackMsg(topic, payload) {
var words = topic.split("/");
if (words.length!==3) {
return;
}
const agriList = uni.getStorageSync('agri_list')
if (agriList.length === 0 || !agriList.includes(words[1])) {
return;
}
const tag = topic.match(/[^/]+$/)?.[0]
var regex = {
alarm:1,
notice:2,
event:3
}
if (!regex[tag]) return;
console.info("收到消息2222",topic)
let msgData = {};
// JSON
try {
msgData = JSON.parse(payload);
var msg = msgData.msgType;
console.info("收到消息5555",msg)
if (!regex[tag]) return;
const item = this.msgList[regex[tag]];
item.numBadge+=1;
item.content = msg.content;
item.createTime = msg.createTime;
console.info("收到消息3333",item)
} catch (e) {
console.error("MQTT消息解析失败", e, payload);
}
}
}
}

View File

@ -190,14 +190,18 @@ export default {
gotoDevice(item) {
const agriList = uni.getStorageSync('agri_list')
if (agriList.length === 0 || !agriList.includes(item.imei)) {
return
return;
}
this.$tab.navigateTo(item.linkUrl)
},
ackAlarm(topic, payload) {
const regex = /^device\/\d+\/alarm$/;
if (!regex.test(topic)) return;
var words = topic.split("/");
const agriList = uni.getStorageSync('agri_list')
if (agriList.length === 0 || !agriList.includes(words[1])) {
return;
}
let msgData = {};
// JSON
try {