/** * 未读角标状态(全站唯一来源) * ------------------------------------------------------------ * 角标 = 未读数。对应内容被查看后置 0 → 角标自动隐藏。 * * 使用: * - TabBar:`utils/role.uts` 里用 `badgeText(hrUnread.events)` 生成 dotLabel * - 列表行:`` * - 页面「查看后」:onPageShow 里调 markEventsRead() / markMessagesRead() */ import { reactive } from 'vue' export type HrUnread = { /** 事件 TabBar 角标(救援人员端 · 事件 Tab) */ events : number /** 消息 TabBar 角标(仓管人员端 · 消息 Tab) */ messages : number /** 「我的」页消息中心入口 / 消息中心分组角标 */ msgCenter : number } /** 全局未读数 */ export const hrUnread = reactive({ events: 4, messages: 4, msgCenter: 4 } as HrUnread) /** 角标文案:0 时返回空串 —— x-badge 收到空 label 会自行隐藏,无需额外判断 */ export function badgeText(n : number) : string { return n > 0 ? n.toString() : '' } /** 查看事件列表后调用(救援端事件 Tab 页 onPageShow) */ export function markEventsRead() : void { hrUnread.events = 0 } /** 查看消息中心后调用(消息页 onPageShow) */ export function markMessagesRead() : void { hrUnread.messages = 0 hrUnread.msgCenter = 0 }