From dad0263459b30dbfa75f06dff062a0c85183517b Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期一, 01 十二月 2025 17:01:51 +0800
Subject: [PATCH] 添加卧转立扫码设备交互逻辑,任务流转

---
 mes-web/src/views/plcTest/components/MultiDeviceTest/TaskOrchestration.vue |   57 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 41 insertions(+), 16 deletions(-)

diff --git a/mes-web/src/views/plcTest/components/MultiDeviceTest/TaskOrchestration.vue b/mes-web/src/views/plcTest/components/MultiDeviceTest/TaskOrchestration.vue
index 74906ce..649cd93 100644
--- a/mes-web/src/views/plcTest/components/MultiDeviceTest/TaskOrchestration.vue
+++ b/mes-web/src/views/plcTest/components/MultiDeviceTest/TaskOrchestration.vue
@@ -26,21 +26,34 @@
     </div>
 
     <el-form :model="form" label-width="120px" :rules="rules" ref="formRef">
-      <el-form-item label="鐜荤拑ID鍒楄〃" prop="glassIds" required>
+      <el-form-item label="鐜荤拑ID鍒楄〃" prop="glassIds">
         <el-input
           v-model="glassIdsInput"
           type="textarea"
           :rows="4"
-          placeholder="璇疯緭鍏ョ幓鐠冩潯鐮侊紝鏀寔澶氳鎴栭�楀彿鍒嗛殧锛屾瘡琛屼竴涓垨閫楀彿鍒嗛殧"
+          placeholder="鍙�夛細濡傛灉杈撳叆鐜荤拑ID锛屽皢浣跨敤杈撳叆鐨処D杩涜娴嬭瘯锛堜唬鏇垮崸杞珛鎵爜锛夛紱濡傛灉涓嶈緭鍏ワ紝灏嗕粠鏁版嵁搴撹鍙栨渶杩戞壂鐮佺殑鐜荤拑ID杩涜娴嬭瘯"
           show-word-limit
           :maxlength="5000"
         />
         <div class="form-tip">
-          宸茶緭鍏� {{ glassIds.length }} 涓幓鐠僆D
+          <span v-if="glassIds.length > 0">宸茶緭鍏� {{ glassIds.length }} 涓幓鐠僆D锛堟祴璇曟ā寮忥細浣跨敤杈撳叆鐨処D锛�</span>
+          <span v-else>鏈緭鍏ョ幓鐠僆D锛堟甯告ā寮忥細灏嗕粠鏁版嵁搴撹鍙栨渶杩戞壂鐮佺殑鐜荤拑ID锛�</span>
         </div>
       </el-form-item>
       
       <el-divider content-position="left">鎵ц閰嶇疆</el-divider>
+      
+      <el-form-item label="鍗曠墖闂撮殧 (绉�)">
+        <el-input-number
+          v-model="form.glassIntervalSeconds"
+          :min="0"
+          :max="60"
+          :step="0.1"
+          :precision="1"
+          placeholder="姣忎釜鐜荤拑ID涔嬮棿鐨勯棿闅旀椂闂�"
+        />
+        <div class="form-tip">澶氫釜鐜荤拑ID鏃讹紝姣忎釜鐜荤拑ID浼犻�掍箣闂寸殑闂撮殧鏃堕棿锛堢锛夛紝鐢ㄤ簬妯℃嫙鐜荤拑姣忕墖杩愬姩鐨勬椂闂淬��0琛ㄧず涓�娆℃�у叏閮ㄤ紶閫�</div>
+      </el-form-item>
       
       <el-form-item label="鎵ц闂撮殧 (ms)">
         <el-input-number
@@ -93,8 +106,9 @@
 })
 
 const emit = defineEmits(['task-started'])
-
+//閰嶇疆榛樿鍊�
 const form = reactive({
+  glassIntervalSeconds: 10, // 鍗曠墖闂撮殧锛岄粯璁�10绉�
   executionInterval: 1000,
   timeoutMinutes: 30,
   retryCount: 3
@@ -106,8 +120,10 @@
   glassIds: [
     {
       validator: (rule, value, callback) => {
+        // 濡傛灉杈撳叆浜嗙幓鐠僆D锛屽垯杩涜楠岃瘉锛涘鏋滄病鏈夎緭鍏ワ紝鍒欏厑璁革紙灏嗕粠鏁版嵁搴撹鍙栵級
         if (glassIds.value.length === 0) {
-          callback(new Error('璇疯嚦灏戣緭鍏ヤ竴涓幓鐠僆D'))
+          // 鍏佽涓虹┖锛屽皢浠庢暟鎹簱璇诲彇鏈�杩戞壂鐮佺殑鐜荤拑ID
+          callback()
         } else if (glassIds.value.length > 100) {
           callback(new Error('鐜荤拑ID鏁伴噺涓嶈兘瓒呰繃100涓�'))
         } else {
@@ -151,6 +167,8 @@
     .filter((item) => item.length > 0)
 })
 
+const normalizeType = (type) => (type || '').trim().toUpperCase()
+
 const fetchLoadDevice = async () => {
   loadDeviceId.value = null
   loadDeviceName.value = ''
@@ -172,9 +190,15 @@
       : Array.isArray(rawList?.data)
       ? rawList.data
       : []
-    const targetDevice =
-      deviceList.find((item) => (item.deviceType || '').toUpperCase() === 'LOAD_VEHICLE') ||
-      deviceList[0]
+    const scannerDevice = deviceList.find((item) => {
+      const type = normalizeType(item.deviceType)
+      return type.includes('SCANNER') || type.includes('鎵爜')
+    })
+    const loadVehicleDevice = deviceList.find((item) => {
+      const type = normalizeType(item.deviceType)
+      return type.includes('LOAD_VEHICLE') || type.includes('澶ц溅')
+    })
+    const targetDevice = scannerDevice || loadVehicleDevice || deviceList[0]
     if (targetDevice && targetDevice.id) {
       loadDeviceId.value = targetDevice.id
       loadDeviceName.value = targetDevice.deviceName || targetDevice.deviceCode || `ID: ${targetDevice.id}`
@@ -202,17 +226,18 @@
     return
   }
   
-  if (glassIds.value.length === 0) {
-    ElMessage.warning('璇疯嚦灏戣緭鍏ヤ竴涓幓鐠僆D')
-    return
-  }
-  
   try {
     loading.value = true
     
     // 鏋勫缓浠诲姟鍙傛暟
+    // 濡傛灉杈撳叆浜嗙幓鐠僆D锛屼娇鐢ㄨ緭鍏ョ殑锛涘鏋滄病鏈夎緭鍏ワ紝glassIds涓虹┖鏁扮粍锛屽悗绔細浠庢暟鎹簱璇诲彇
+    // 灏嗙杞崲涓烘绉掍紶缁欏悗绔�
+    const glassIntervalMs = form.glassIntervalSeconds != null && form.glassIntervalSeconds !== undefined 
+      ? Math.round(form.glassIntervalSeconds * 1000) 
+      : 1000
     const parameters = {
-      glassIds: glassIds.value,
+      glassIds: glassIds.value.length > 0 ? glassIds.value : [],
+      glassIntervalMs: glassIntervalMs,
       executionInterval: form.executionInterval || 1000
     }
     
@@ -261,14 +286,14 @@
     return
   }
   if (!loadDeviceId.value) {
-    ElMessage.warning('鏈壘鍒颁笂澶ц溅璁惧锛屾棤娉曟竻绌篜LC')
+    ElMessage.warning('鏈壘鍒板搴旇澶囷紝鏃犳硶娓呯┖PLC')
     return
   }
   try {
     clearLoading.value = true
     const response = await deviceInteractionApi.executeOperation({
       deviceId: loadDeviceId.value,
-      operation: 'clearGlass',
+      operation: 'clearPlc',
       params: {}
     })
     if (response?.code !== 200) {

--
Gitblit v1.8.0