From d1a371d257609d2528f380b263ace6749f2597bb Mon Sep 17 00:00:00 2001 From: chenxing Date: Fri, 9 Oct 2026 12:23:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(header):=20=E9=93=83=E9=93=9B=E6=96=B0?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8C=89=E5=BD=93=E5=89=8D=E8=BA=AB=E4=BB=BD?= =?UTF-8?q?=E5=AD=A6=E6=A0=A1=E8=BF=87=E6=BB=A4=EF=BC=88getCurSchId=20?= =?UTF-8?q?=E5=8F=A3=E5=BE=84=EF=BC=8C=E5=B9=B3=E5=8F=B0=E7=BA=A7/?= =?UTF-8?q?=E8=B6=85=E7=AE=A1=E6=94=BE=E8=A1=8C=EF=BC=89=E2=80=94=E2=80=94?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8C=89=E5=AD=A6=E6=A0=A1=E9=9A=94=E7=A6=BB?= =?UTF-8?q?=20=E6=89=B9=E6=AC=A14=E5=89=8D=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Header.vue | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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);