From d066302c3131757e2762ceb4813614c45e101799 Mon Sep 17 00:00:00 2001 From: shawko Date: Tue, 12 May 2026 14:19:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=20=E5=85=A8=E5=B1=80=E5=8F=AA=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=B8=80=E4=B8=AAuseTips=E5=BC=B9=E6=A1=86=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E6=9C=89=E5=A4=9A=E4=B8=AA=E5=8F=A0=E5=9C=A8?= =?UTF-8?q?=E4=B8=80=E8=B5=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useClassMonitor.ts | 19 +++++++++++-------- src/hooks/useTips.ts | 4 ++++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/hooks/useClassMonitor.ts b/src/hooks/useClassMonitor.ts index d9deca0..6b4bd59 100644 --- a/src/hooks/useClassMonitor.ts +++ b/src/hooks/useClassMonitor.ts @@ -10,6 +10,7 @@ let monitorTimer: ReturnType | null = null let monitorSessionId = '' let isUploadingMonitorSnapshot = false let monitorState: 0 | 1 = 0 +let closeMonitorTip: (() => void) | null = null const MONITOR_SNAPSHOT_INTERVAL = 10000 const MONITOR_MSG_TYPE = 'monitorStart' @@ -23,6 +24,14 @@ const monitorLog = (...args: unknown[]) => console.log(MONITOR_LOG_PREFIX, ...ar const monitorWarn = (...args: unknown[]) => console.warn(MONITOR_LOG_PREFIX, ...args) const monitorError = (...args: unknown[]) => console.error(MONITOR_LOG_PREFIX, ...args) +const showMonitorTip = (tips: string) => { + closeMonitorTip?.() + closeMonitorTip = useTips({ + tips, + showCancel: false, + }) +} + const getServerOrigin = () => { try { return new URL(import.meta.env.VITE_SERVER_URL).origin @@ -372,10 +381,7 @@ export const stopClassMonitor = (showTip = false) => { monitorTimer = null } if (showTip && isMonitoring) { - useTips({ - tips: '已结束课堂监控', - showCancel: false, - }) + showMonitorTip('已结束课堂监控') } monitorSessionId = '' monitorState = 0 @@ -396,10 +402,7 @@ const startClassMonitor = (msg: anyObj) => { stopClassMonitor() monitorSessionId = sessionId monitorState = 1 - useTips({ - tips: '已进入课堂监控状态', - showCancel: false, - }) + showMonitorTip('已进入课堂监控状态') reportMonitorSnapshot(sessionId) monitorTimer = setInterval(() => reportMonitorSnapshot(sessionId), MONITOR_SNAPSHOT_INTERVAL) } diff --git a/src/hooks/useTips.ts b/src/hooks/useTips.ts index 7b08e58..bd41e6d 100644 --- a/src/hooks/useTips.ts +++ b/src/hooks/useTips.ts @@ -15,6 +15,7 @@ interface Tips_Config { export const useTips = (config: Tips_Config) => { const container = document.createElement('div') + let closed = false const dia = createVNode(XDia, { modelValue: true, title: config.title || '提示', @@ -31,6 +32,8 @@ export const useTips = (config: Tips_Config) => { }) const close = () => { + if (closed) return + closed = true dia.component!.props.modelValue = false setTimeout(() => { render(null, container) @@ -39,4 +42,5 @@ export const useTips = (config: Tips_Config) => { render(dia, container) document.querySelector('body')?.appendChild(container.firstElementChild!) + return close }