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