From 04e8e3a312ed1f2d9dc40354ae5847ef9cc11360 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 29 八月 2026 16:22:35 +0800
Subject: [PATCH] fix: 新疆-绿能 1.报工等待时长倒计时 + 报工数量可选 2.报工自动生成产品入库单 + 勾选入库 + 不合格仓库兜底

---
 src/views/mes/pro/workorder-center/modules/quick-feedback.vue |   50 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 46 insertions(+), 4 deletions(-)

diff --git a/src/views/mes/pro/workorder-center/modules/quick-feedback.vue b/src/views/mes/pro/workorder-center/modules/quick-feedback.vue
index 9df47ce..fc91d88 100644
--- a/src/views/mes/pro/workorder-center/modules/quick-feedback.vue
+++ b/src/views/mes/pro/workorder-center/modules/quick-feedback.vue
@@ -9,10 +9,13 @@
 import { message } from 'ant-design-vue';
 
 import { quickCreateFeedback } from '#/api/mes/pro/feedback';
+import { getRouteProcessByRouteAndProcess } from '#/api/mes/pro/route/process';
+import { getTask } from '#/api/mes/pro/task';
 import {
   loadParamDetails,
   paramDetails,
 } from '#/views/mes/pro/feedback/param-state';
+import WaitCountdown from '#/views/mes/pro/feedback/modules/wait-countdown.vue';
 import ProTaskSelect from '#/views/mes/pro/task/components/select.vue';
 
 defineOptions({ name: 'QuickFeedbackForm' });
@@ -41,9 +44,15 @@
         feedbackQuantity: undefined,
         remark: '',
       };
-      // 棰勮浠诲姟鏃跺姞杞藉叾宸ヨ壓鍙傛暟锛涘惁鍒欑瓑寰呴�夋嫨浠诲姟鍚庡啀鍔犺浇
+      waitDuration.value = undefined;
+      needReportQuantity.value = true;
+      waitStartTime.value = undefined;
+      // 棰勮浠诲姟鏃跺姞杞藉叾宸ヨ壓鍙傛暟涓庣瓑寰呴厤缃紱鍚﹀垯绛夊緟閫夋嫨浠诲姟鍚庡啀鍔犺浇
       if (props.taskId) {
         loadParamDetails(props.taskId);
+        getTask(props.taskId)
+          .then(applyTaskWaitConfig)
+          .catch(() => {});
       } else {
         paramDetails.value = [];
       }
@@ -59,6 +68,9 @@
   remark: '',
 });
 const submitting = ref(false);
+const waitDuration = ref<number>();
+const needReportQuantity = ref<boolean>(true);
+const waitStartTime = ref<string>();
 
 const hasPredefinedTask = computed(() => !!props.taskId);
 
@@ -77,6 +89,27 @@
   selectedTask.value = task;
   selectedTaskId.value = task?.id;
   loadParamDetails(task?.id);
+  applyTaskWaitConfig(task);
+}
+
+/** 鎸変换鍔″伐搴忓姞杞界瓑寰呮椂闀夸笌鎶ュ伐鏁伴噺瑙勫垯 */
+async function applyTaskWaitConfig(task?: MesProTaskApi.Task) {
+  waitDuration.value = undefined;
+  needReportQuantity.value = true;
+  waitStartTime.value = task?.waitStartTime;
+  if (!task?.routeId || !task?.processId) {
+    return;
+  }
+  try {
+    const routeProcess = await getRouteProcessByRouteAndProcess(
+      task.routeId,
+      task.processId,
+    );
+    waitDuration.value = routeProcess?.waitDuration;
+    needReportQuantity.value = routeProcess?.needReportQuantity ?? true;
+  } catch {
+    // 鍔犺浇澶辫触鎸夐粯璁ゅ鐞嗭紙鏃犻渶鍊掕鏃躲�佹暟閲忓繀濉級
+  }
 }
 
 async function handleSubmit() {
@@ -85,7 +118,7 @@
     message.warning('璇烽�夋嫨浠诲姟');
     return;
   }
-  if (!formData.value.feedbackQuantity) {
+  if (needReportQuantity.value && !formData.value.feedbackQuantity) {
     message.warning('璇疯緭鍏ユ姤宸ユ暟閲�');
     return;
   }
@@ -93,7 +126,9 @@
   try {
     await quickCreateFeedback({
       taskId,
-      feedbackQuantity: formData.value.feedbackQuantity,
+      feedbackQuantity: needReportQuantity.value
+        ? (formData.value.feedbackQuantity ?? 0)
+        : 0,
       paramValues: paramDetails.value.map((detail) => ({
         detailId: detail.id,
         value: detail.paramValue,
@@ -127,7 +162,14 @@
           class="!w-full"
         />
       </a-form-item>
-      <a-form-item label="鏈鎶ュ伐鏁伴噺" required>
+      <a-form-item v-if="waitDuration" label="鎶ュ伐鍊掕鏃�">
+        <WaitCountdown
+          :task-id="selectedTaskId"
+          :wait-duration="waitDuration"
+          :wait-start-time="waitStartTime"
+        />
+      </a-form-item>
+      <a-form-item v-if="needReportQuantity" label="鏈鎶ュ伐鏁伴噺" required>
         <a-input-number
           v-model:value="formData.feedbackQuantity"
           :min="0.01"

--
Gitblit v1.9.3