消息中心监听新消息

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 UniDividerText from "../../components/uni-divider/uni-divider-text.vue";
import {isTodayDate,formatTime} from "@/utils/agri"; import {isTodayDate,formatTime} from "@/utils/agri";
import {getMsgOverview, removeBatch, updateRead} from "@/api/warn/message"; import {getMsgOverview, removeBatch, updateRead} from "@/api/warn/message";
import * as mqttUtil from "@/utils/mqtt";
export default { export default {
components: { components: {
UniDividerText UniDividerText
@ -163,8 +164,22 @@ export default {
} }
}, },
onShow() { onShow() {
console.info("消息中心监听")
mqttUtil.setOnMessageCallback(this.ackMsg);
this.getMsgOverview(); this.getMsgOverview();
}, },
onHide() {
console.info("消息中心取消监听")
mqttUtil.removeOnMessageCallback();
},
onUnload() {
console.info("消息中心取消监听")
mqttUtil.removeOnMessageCallback();
},
beforeDestroy() {
console.info("消息中心取消监听")
mqttUtil.removeOnMessageCallback();
},
methods: { methods: {
isTodayDate, isTodayDate,
formatTime, formatTime,
@ -219,6 +234,12 @@ export default {
getMsgOverview().then(response => { getMsgOverview().then(response => {
if (response.code === 200) { if (response.code === 200) {
this.messageList = response.data; 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) => { this.msgList.forEach((item, index) => {
item.numBadge = null; item.numBadge = null;
item.content = null; item.content = null;
@ -275,6 +296,42 @@ export default {
change(e, type) { change(e, type) {
console.log((type === 'showLeft' ? '左窗口' : '右窗口') + (e ? '打开' : '关闭')); console.log((type === 'showLeft' ? '左窗口' : '右窗口') + (e ? '打开' : '关闭'));
this[type] = 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) { gotoDevice(item) {
const agriList = uni.getStorageSync('agri_list') const agriList = uni.getStorageSync('agri_list')
if (agriList.length === 0 || !agriList.includes(item.imei)) { if (agriList.length === 0 || !agriList.includes(item.imei)) {
return return;
} }
this.$tab.navigateTo(item.linkUrl) this.$tab.navigateTo(item.linkUrl)
}, },
ackAlarm(topic, payload) { ackAlarm(topic, payload) {
const regex = /^device\/\d+\/alarm$/; const regex = /^device\/\d+\/alarm$/;
if (!regex.test(topic)) return; 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 = {}; let msgData = {};
// JSON // JSON
try { try {