From 9dcde5b27b70a4b0c0885347af5405eb2d1ef089 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期五, 12 十二月 2025 17:00:54 +0800
Subject: [PATCH] 修改前端状态显示变更,保持前端实时更新
---
mes-web/src/views/plcTest/components/MultiDeviceTest/ExecutionMonitor.vue | 39 +++++++++++++++++++++++++++++++++------
1 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/mes-web/src/views/plcTest/components/MultiDeviceTest/ExecutionMonitor.vue b/mes-web/src/views/plcTest/components/MultiDeviceTest/ExecutionMonitor.vue
index 1502b50..b4dfb0c 100644
--- a/mes-web/src/views/plcTest/components/MultiDeviceTest/ExecutionMonitor.vue
+++ b/mes-web/src/views/plcTest/components/MultiDeviceTest/ExecutionMonitor.vue
@@ -86,7 +86,7 @@
鏌ョ湅璇︽儏
</el-button>
<el-button
- v-if="row.status === 'RUNNING'"
+ v-if="row.status === 'RUNNING' || row.status === 'FAILED'"
link
type="danger"
size="small"
@@ -127,6 +127,9 @@
<div class="step-desc">鑰楁椂锛歿{ formatDuration(step.durationMs) }}</div>
<div class="step-desc" v-if="step.retryCount > 0">
閲嶈瘯娆℃暟锛歿{ step.retryCount }}
+ </div>
+ <div class="step-desc" v-if="step.successMessage">
+ 鎻愮ず锛歿{ step.successMessage }}
</div>
<div class="step-desc error-message" v-if="step.errorMessage">
<el-icon><Warning /></el-icon>
@@ -175,6 +178,12 @@
const sseConnecting = ref(false)
let eventSource = null
const baseURL = import.meta.env.VITE_API_BASE_URL || ''
+
+// 缁熶竴鐨処D姣旇緝锛岄伩鍏嶆暟瀛�/瀛楃涓蹭笉涓�鑷村鑷碨SE鏇存柊琚拷鐣�
+const isSameId = (a, b) => {
+ if (a == null || b == null) return false
+ return String(a) === String(b)
+}
const fetchTasks = async () => {
try {
@@ -259,9 +268,11 @@
// 鐩戝惉姝ラ鏇存柊
eventSource.addEventListener('stepUpdate', (event) => {
try {
- const data = JSON.parse(event.data)
+ const raw = JSON.parse(event.data)
+ // 鍚庣鍏ㄩ噺鐩戝惉鏃剁殑鏁版嵁缁撴瀯涓� { taskId, step: { ... } }锛岄渶瑕佸睍寮� step
+ const data = raw?.step ? { ...raw.step, taskId: raw.taskId || raw.step.taskId } : raw
// 濡傛灉鏁版嵁涓寘鍚� taskId锛屾鏌ユ槸鍚﹀尮閰嶅綋鍓嶆煡鐪嬬殑浠诲姟
- if (data.taskId && data.taskId === currentTaskId.value) {
+ if (data.taskId && isSameId(data.taskId, currentTaskId.value)) {
updateStepFromSSE(data)
} else if (!data.taskId) {
// 濡傛灉娌℃湁 taskId锛屽彲鑳芥槸姝ラ鏁版嵁鐩存帴浼犻��
@@ -308,7 +319,7 @@
return
}
- const taskIndex = tasks.value.findIndex(t => t.taskId === data.taskId)
+ const taskIndex = tasks.value.findIndex(t => isSameId(t.taskId, data.taskId))
if (taskIndex >= 0) {
// 鏇存柊浠诲姟 - 淇濈暀鍘熸湁瀛楁锛屽彧鏇存柊SSE浼犳潵鐨勫瓧娈�
const existingTask = tasks.value[taskIndex]
@@ -341,7 +352,7 @@
if (!data) return
// 濡傛灉鏁版嵁涓寘鍚� taskId锛屾鏌ユ槸鍚﹀尮閰嶅綋鍓嶆煡鐪嬬殑浠诲姟
- if (data.taskId && data.taskId !== currentTaskId.value) {
+ if (data.taskId && !isSameId(data.taskId, currentTaskId.value)) {
return
}
@@ -367,6 +378,7 @@
endTime: data.endTime ? new Date(data.endTime) : existingStep.endTime,
durationMs: data.durationMs !== undefined ? data.durationMs : existingStep.durationMs,
retryCount: data.retryCount !== undefined ? data.retryCount : existingStep.retryCount,
+ successMessage: data.successMessage !== undefined ? data.successMessage : existingStep.successMessage,
errorMessage: data.errorMessage || existingStep.errorMessage
}
} else if (data.stepOrder !== undefined) {
@@ -419,6 +431,20 @@
} finally {
stepsLoading.value = false
}
+}
+
+// 鏍规嵁taskId鎵撳紑浠诲姟璇︽儏鎶藉眽锛堜緵鐖剁粍浠惰皟鐢級
+const openTaskDrawer = async (taskId) => {
+ if (!taskId) return
+ // 濡傛灉浠诲姟鍒楄〃涓虹┖锛屽厛鍔犺浇涓�娆�
+ if (!tasks.value || tasks.value.length === 0) {
+ await fetchTasks()
+ }
+ const task = tasks.value.find(t => t.taskId === taskId)
+ if (!task) {
+ return
+ }
+ await handleRowClick(task)
}
const statusType = (status) => {
@@ -562,7 +588,8 @@
defineExpose({
fetchTasks,
connectSSE,
- disconnectSSE
+ disconnectSSE,
+ openTaskDrawer
})
</script>
--
Gitblit v1.8.0