From 8f8dcdae7e40ba4e94a363aa8eb91c7665810bc3 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 31 八月 2026 15:29:17 +0800
Subject: [PATCH] fix: 新疆-绿能 1.报工自动生成产品入库单 + 勾选入库 + 不合格仓库兜底

---
 src/views/mes/pro/feedback/modules/batch-feedback.vue |   69 ++++++++++++++++++++--------------
 1 files changed, 40 insertions(+), 29 deletions(-)

diff --git a/src/views/mes/pro/feedback/modules/batch-feedback.vue b/src/views/mes/pro/feedback/modules/batch-feedback.vue
index e8e08b2..2f38bcb 100644
--- a/src/views/mes/pro/feedback/modules/batch-feedback.vue
+++ b/src/views/mes/pro/feedback/modules/batch-feedback.vue
@@ -1,13 +1,14 @@
 <script lang="ts" setup>
 import type { MesProTaskApi } from '#/api/mes/pro/task';
 
-import { ref } from 'vue';
+import { computed, ref } from 'vue';
 
 import { useVbenModal } from '@vben/common-ui';
 
 import { Button, message, Tag } from 'ant-design-vue';
 
 import { batchCreateFeedback } from '#/api/mes/pro/feedback';
+import { getRouteProcessByRouteAndProcess } from '#/api/mes/pro/route/process';
 import ProTaskSelectDialog from '#/views/mes/pro/task/components/select-dialog.vue';
 
 defineOptions({ name: 'BatchFeedbackForm' });
@@ -24,8 +25,6 @@
       selectedTasks.value = [];
       formData.value = {
         feedbackQuantity: undefined,
-        qualifiedQuantity: undefined,
-        unqualifiedQuantity: undefined,
         remark: '',
       };
     }
@@ -34,24 +33,49 @@
 
 const taskDialogRef = ref<InstanceType<typeof ProTaskSelectDialog>>();
 const selectedTasks = ref<MesProTaskApi.Task[]>([]);
+const needReportQuantityMap = ref<Record<number, boolean>>({});
 const formData = ref({
   feedbackQuantity: undefined as number | undefined,
-  qualifiedQuantity: undefined as number | undefined,
-  unqualifiedQuantity: undefined as number | undefined,
   remark: '',
 });
 const submitting = ref(false);
+
+/** 鏄惁闇�瑕佸~鍐欐姤宸ユ暟閲忥紙浠讳竴閫変腑浠诲姟宸ュ簭瑕佹眰濉啓鏁伴噺鍗冲繀濉級 */
+const needQuantity = computed(() =>
+  selectedTasks.value.some(
+    (t) => needReportQuantityMap.value[t.id!] ?? true,
+  ),
+);
 
 function handleOpenTaskDialog() {
   taskDialogRef.value?.open([], { multiple: true });
 }
 
-function handleTaskSelected(rows: MesProTaskApi.Task[]) {
+/** 鎸夐�変腑浠诲姟宸ュ簭鍔犺浇鏄惁闇�瑕佹姤宸ユ暟閲� */
+async function handleTaskSelected(rows: MesProTaskApi.Task[]) {
   selectedTasks.value = rows;
+  needReportQuantityMap.value = {};
+  for (const task of rows) {
+    if (!task.routeId || !task.processId) {
+      continue;
+    }
+    try {
+      const routeProcess = await getRouteProcessByRouteAndProcess(
+        task.routeId,
+        task.processId,
+      );
+      needReportQuantityMap.value[task.id!] =
+        routeProcess?.needReportQuantity ?? true;
+    } catch {
+      // 鍔犺浇澶辫触鎸夐粯璁ゅ鐞嗭紙鏁伴噺蹇呭~锛�
+      needReportQuantityMap.value[task.id!] = true;
+    }
+  }
 }
 
 function handleRemoveTask(taskId: number) {
   selectedTasks.value = selectedTasks.value.filter((t) => t.id !== taskId);
+  delete needReportQuantityMap.value[taskId];
 }
 
 async function handleSubmit() {
@@ -59,7 +83,7 @@
     message.warning('璇烽�夋嫨浠诲姟');
     return;
   }
-  if (!formData.value.feedbackQuantity) {
+  if (needQuantity.value && !formData.value.feedbackQuantity) {
     message.warning('璇疯緭鍏ユ姤宸ユ暟閲�');
     return;
   }
@@ -67,9 +91,9 @@
   try {
     const result = await batchCreateFeedback({
       taskIds: selectedTasks.value.map((t) => t.id!),
-      feedbackQuantity: formData.value.feedbackQuantity,
-      qualifiedQuantity: formData.value.qualifiedQuantity,
-      unqualifiedQuantity: formData.value.unqualifiedQuantity,
+      feedbackQuantity: needQuantity.value
+        ? (formData.value.feedbackQuantity ?? 0)
+        : 0,
       remark: formData.value.remark || undefined,
     });
     if (result.failCount) {
@@ -107,30 +131,17 @@
           </Tag>
         </div>
       </a-form-item>
-      <a-form-item label="鎶ュ伐鏁伴噺" required>
+      <a-form-item
+        v-if="needQuantity"
+        label="鎶ュ伐鏁伴噺"
+        required
+        tooltip="宸ュ簭閰嶇疆涓轰笉闇�濉啓鎶ュ伐鏁伴噺鏃讹紝鍚堟牸鍝�/涓嶈壇鍝佹暟閲忕敱璐ㄦ纭畾"
+      >
         <a-input-number
           v-model:value="formData.feedbackQuantity"
           :min="0.01"
           :precision="2"
           placeholder="璇疯緭鍏ユ姤宸ユ暟閲忥紙搴旂敤鍒版墍鏈夐�変腑浠诲姟锛�"
-          class="!w-full"
-        />
-      </a-form-item>
-      <a-form-item label="鍚堟牸鍝佹暟閲�">
-        <a-input-number
-          v-model:value="formData.qualifiedQuantity"
-          :min="0"
-          :precision="2"
-          placeholder="璇疯緭鍏ュ悎鏍煎搧鏁伴噺"
-          class="!w-full"
-        />
-      </a-form-item>
-      <a-form-item label="涓嶈壇鍝佹暟閲�">
-        <a-input-number
-          v-model:value="formData.unqualifiedQuantity"
-          :min="0"
-          :precision="2"
-          placeholder="璇疯緭鍏ヤ笉鑹搧鏁伴噺"
           class="!w-full"
         />
       </a-form-item>

--
Gitblit v1.9.3