diff --git a/src/assets/logo2.png b/src/assets/logo2.png new file mode 100644 index 0000000..7214e8b Binary files /dev/null and b/src/assets/logo2.png differ diff --git a/src/assets/logoBg2.png b/src/assets/logoBg2.png new file mode 100644 index 0000000..239b88c Binary files /dev/null and b/src/assets/logoBg2.png differ diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 577fc6a..84eb30d 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -1,131 +1,157 @@ \ No newline at end of file diff --git a/src/views/VideoStream.vue b/src/views/VideoStream.vue index 7b64ba4..51309f4 100644 --- a/src/views/VideoStream.vue +++ b/src/views/VideoStream.vue @@ -304,18 +304,12 @@ const normalizeSseLimit = (val, fallback) => { watch(sseCrawlerEnabled, v => { localStorage.setItem('SSE_CRAWLER_ENABLED', JSON.stringify(v)) - if (v && sseCrawlerRemaining.value <= 0) { - sseCrawlerEnabled.value = false - ElMessage.warning('请先设置监听爬虫条数') - } }) + watch(sseBossEnabled, v => { localStorage.setItem('SSE_BOSS_ENABLED', JSON.stringify(v)) - if (v && sseBossRemaining.value <= 0) { - sseBossEnabled.value = false - ElMessage.warning('请先设置监听大哥条数') - } + }) watch(sseCrawlerLimit, v => { @@ -362,9 +356,15 @@ const bumpSseCount = (type) => { const remainingRef = isCrawler ? sseCrawlerRemaining : sseBossRemaining if (remainingRef.value <= 0) { if (isCrawler) { - sseCrawlerEnabled.value = false + if (sseCrawlerEnabled.value) { + sseCrawlerEnabled.value = false + window.electronAPI.toggleMq('crawler', false) + } } else { - sseBossEnabled.value = false + if (sseBossEnabled.value) { + sseBossEnabled.value = false + window.electronAPI.toggleMq('boss', false) + } } return false } @@ -373,8 +373,10 @@ const bumpSseCount = (type) => { if (remainingRef.value <= 0) { if (isCrawler) { sseCrawlerEnabled.value = false + window.electronAPI.toggleMq('crawler', false) } else { sseBossEnabled.value = false + window.electronAPI.toggleMq('boss', false) } ElMessage.info(`监听${isCrawler ? '爬虫' : '大哥'}条数已用完,已自动关闭`) } @@ -814,7 +816,11 @@ onMounted(async () => { console.log("sse过滤的数据", getHostfilters()) //MQ链接 - window.electronAPI.startMq(userdata.tenantId, userdata.id) + window.electronAPI.startMq(userdata.tenantId, userdata.id).then(() => { + // 初始化时同步状态 + window.electronAPI.toggleMq('crawler', sseCrawlerEnabled.value) + window.electronAPI.toggleMq('boss', sseBossEnabled.value) + }) // 初始化时获取设备列表 @@ -1771,12 +1777,40 @@ const markPendingForOffline = (ids) => { }; const onToggleCrawler = (val) => { - if (val) sseBossEnabled.value = false; -}; + // 🔒 想打开,但剩余为 0,直接拦截 + if (val === true && sseCrawlerRemaining.value <= 0) { + ElMessage.warning('请先设置监听爬虫条数') + // 立即回滚(但这是“主动控制”,不是 watch 回滚) + sseCrawlerEnabled.value = false + return + } + + // 互斥逻辑 + if (val) { + sseBossEnabled.value = false + window.electronAPI.toggleMq('boss', false) + } + + // 真正同步给后端 / MQ + window.electronAPI.toggleMq('crawler', val) +} + const onToggleBoss = (val) => { - if (val) sseCrawlerEnabled.value = false; -}; + if (val === true && sseBossRemaining.value <= 0) { + ElMessage.warning('请先设置监听大哥条数') + sseBossEnabled.value = false + return + } + + if (val) { + sseCrawlerEnabled.value = false + window.electronAPI.toggleMq('crawler', false) + } + + window.electronAPI.toggleMq('boss', val) +} + function timestampToTime(timestamp_ms) {