fix: 全局只显示一个useTips弹框,不会有多个叠在一起
This commit is contained in:
parent
d1f364e230
commit
d066302c31
@ -10,6 +10,7 @@ let monitorTimer: ReturnType<typeof setInterval> | null = null
|
|||||||
let monitorSessionId = ''
|
let monitorSessionId = ''
|
||||||
let isUploadingMonitorSnapshot = false
|
let isUploadingMonitorSnapshot = false
|
||||||
let monitorState: 0 | 1 = 0
|
let monitorState: 0 | 1 = 0
|
||||||
|
let closeMonitorTip: (() => void) | null = null
|
||||||
|
|
||||||
const MONITOR_SNAPSHOT_INTERVAL = 10000
|
const MONITOR_SNAPSHOT_INTERVAL = 10000
|
||||||
const MONITOR_MSG_TYPE = 'monitorStart'
|
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 monitorWarn = (...args: unknown[]) => console.warn(MONITOR_LOG_PREFIX, ...args)
|
||||||
const monitorError = (...args: unknown[]) => console.error(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 = () => {
|
const getServerOrigin = () => {
|
||||||
try {
|
try {
|
||||||
return new URL(import.meta.env.VITE_SERVER_URL).origin
|
return new URL(import.meta.env.VITE_SERVER_URL).origin
|
||||||
@ -372,10 +381,7 @@ export const stopClassMonitor = (showTip = false) => {
|
|||||||
monitorTimer = null
|
monitorTimer = null
|
||||||
}
|
}
|
||||||
if (showTip && isMonitoring) {
|
if (showTip && isMonitoring) {
|
||||||
useTips({
|
showMonitorTip('已结束课堂监控')
|
||||||
tips: '已结束课堂监控',
|
|
||||||
showCancel: false,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
monitorSessionId = ''
|
monitorSessionId = ''
|
||||||
monitorState = 0
|
monitorState = 0
|
||||||
@ -396,10 +402,7 @@ const startClassMonitor = (msg: anyObj) => {
|
|||||||
stopClassMonitor()
|
stopClassMonitor()
|
||||||
monitorSessionId = sessionId
|
monitorSessionId = sessionId
|
||||||
monitorState = 1
|
monitorState = 1
|
||||||
useTips({
|
showMonitorTip('已进入课堂监控状态')
|
||||||
tips: '已进入课堂监控状态',
|
|
||||||
showCancel: false,
|
|
||||||
})
|
|
||||||
reportMonitorSnapshot(sessionId)
|
reportMonitorSnapshot(sessionId)
|
||||||
monitorTimer = setInterval(() => reportMonitorSnapshot(sessionId), MONITOR_SNAPSHOT_INTERVAL)
|
monitorTimer = setInterval(() => reportMonitorSnapshot(sessionId), MONITOR_SNAPSHOT_INTERVAL)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,6 +15,7 @@ interface Tips_Config {
|
|||||||
|
|
||||||
export const useTips = (config: Tips_Config) => {
|
export const useTips = (config: Tips_Config) => {
|
||||||
const container = document.createElement('div')
|
const container = document.createElement('div')
|
||||||
|
let closed = false
|
||||||
const dia = createVNode(XDia, {
|
const dia = createVNode(XDia, {
|
||||||
modelValue: true,
|
modelValue: true,
|
||||||
title: config.title || '提示',
|
title: config.title || '提示',
|
||||||
@ -31,6 +32,8 @@ export const useTips = (config: Tips_Config) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const close = () => {
|
const close = () => {
|
||||||
|
if (closed) return
|
||||||
|
closed = true
|
||||||
dia.component!.props.modelValue = false
|
dia.component!.props.modelValue = false
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
render(null, container)
|
render(null, container)
|
||||||
@ -39,4 +42,5 @@ export const useTips = (config: Tips_Config) => {
|
|||||||
|
|
||||||
render(dia, container)
|
render(dia, container)
|
||||||
document.querySelector('body')?.appendChild(container.firstElementChild!)
|
document.querySelector('body')?.appendChild(container.firstElementChild!)
|
||||||
|
return close
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user