diff --git a/src/views/home/index.vue b/src/views/home/index.vue index e4232d5..abb7c4e 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -109,7 +109,7 @@ import { getAlgorithmStatusApi, setAlgorithmStatusApi, saveReportApi } from '@/a // ============ 视频流相关 ============ const videoMode = ref('idle') -const streamAddress = ref('rtsp://127.0.0.1:8556/camera2') +const streamAddress = ref(`rtsp://${import.meta.env.VITE_API_BASE_IP}:8556/camera2`) const webrtcUrl = ref('') const webrtcUrl2 = ref('') const streamRunning = ref(false) @@ -318,6 +318,11 @@ function connectDetectStream() { addLog(msg.message || '', 'info') break + case 'process_started': + // 新流程开始,关闭上一个警告弹窗 + sopAlert.visible = false + break + case 'process_status': addLog(msg.message || '', 'warning') // 更新流程统计 @@ -692,6 +697,27 @@ function toggleAlgorithm() { mergeCounts(msg.counts || []) break + case 'process_started': + // 新流程开始,关闭上一个警告弹窗 + sopAlert.visible = false + break + + case 'process_status': + // 离线检测流同样需要 SOP 未完成警告弹窗 + processStats.completed = msg.is_complete ? processStats.completed + 1 : processStats.completed + processStats.incomplete = msg.is_complete ? processStats.incomplete : processStats.incomplete + 1 + if (msg.should_alert || !msg.is_complete) { + const detail = (msg.missing_parts || []) + .map(item => `步骤${item.step_num} ${item.step_name}:${item.part_name}`) + .join('\n') + Object.assign(sopAlert, { + visible: true, + title: `警告:SOP 流程 #${msg.process_id} 未完成!`, + content: detail + }) + } + break + case 'log': addLog(msg.message || '', 'info') break @@ -877,6 +903,27 @@ function connectProcessWs() { }) processWsClient.on('message', async (data) => { + // 流程状态变更:未完成 / 需要告警时弹出警告(仅触发弹窗,计数由检测流负责,避免重复累加) + if (data.type === 'process_started') { + // 新流程开始,关闭上一个警告弹窗 + sopAlert.visible = false + return + } + + if (data.type === 'process_status') { + if (data.should_alert || !data.is_complete) { + const detail = (data.missing_parts || []) + .map(item => `步骤${item.step_num} ${item.step_name}:${item.part_name}`) + .join('\n') + Object.assign(sopAlert, { + visible: true, + title: `警告:SOP 流程 #${data.process_id} 未完成!`, + content: detail + }) + } + return + } + if (data.type !== 'process_result') return stepDetailsItem.message.length = 0 stepDetailsItem.sn = snCode.value diff --git a/src/views/mes/index.vue b/src/views/mes/index.vue index 871f43c..07305a7 100644 --- a/src/views/mes/index.vue +++ b/src/views/mes/index.vue @@ -27,7 +27,7 @@
- +
- +
- +