|
|
|
|
@ -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
|
|
|
|
|
|