diff --git a/src/components/Header.vue b/src/components/Header.vue index 763158f..e285c7c 100644 --- a/src/components/Header.vue +++ b/src/components/Header.vue @@ -344,6 +344,10 @@ function frameAppName(frame: any) { } function onNewMessage(frame: any) { + // 他校新消息对当前学校口径无信息量(不计未读、不打扰、也不触发 /msg 页重拉) + if (!bellVisibleForCurrentSchool(frame)) { + return; + } store.incUnread(); // /msg 页开着时自刷新(页内监听该事件重拉第一页与摘要) mittBus.emit("msgCenter:newMessage", frame); @@ -354,6 +358,23 @@ function onNewMessage(frame: any) { }); } +/** + * 铃铛按校过滤(消息按学校隔离 批次4):口径必须与批次3 服务端列表一致—— + * 平台级消息(帧无 schId)任何身份都提醒;平台/超管身份(getCurSchId 非正数,含 schId=0 + * 被 store 归一成 -1 的形态)看全部,一律提醒;其余只认当前激活身份学校。 + */ +function bellVisibleForCurrentSchool(frame: any): boolean { + const frameSchId = frame ? frame.schId : null; + if (frameSchId === null || frameSchId === undefined) { + return true; + } + const curSchId = store.getCurSchId; + if (!curSchId || curSchId <= 0) { + return true; + } + return Number(frameSchId) === Number(curSchId); +} + function closeMsgWs() { msgWsClosed = true; clearTimeout(msgWsReconnectTimer);