From 6b2e46f69c234aa1d18fe8f3a77ede2baa674ce4 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 25 八月 2026 13:10:26 +0800
Subject: [PATCH] feat(mes): 更新种子质量检验功能

---
 src/views/mes/qc/seedQuality/index.vue |   41 ++++++++++++++++++++++++++++++-----------
 1 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/src/views/mes/qc/seedQuality/index.vue b/src/views/mes/qc/seedQuality/index.vue
index 18e8f24..0a61ccc 100644
--- a/src/views/mes/qc/seedQuality/index.vue
+++ b/src/views/mes/qc/seedQuality/index.vue
@@ -1,9 +1,11 @@
 <script setup lang="ts">
 import { computed, nextTick, onMounted, onUnmounted, ref } from 'vue';
 
-import { message } from 'ant-design-vue';
+import { message, Modal } from 'ant-design-vue';
 import { IconifyIcon } from '@vben/icons';
 import { gsap } from 'gsap';
+
+import MdItemSelect from '#/views/mes/md/item/components/select.vue';
 
 import {
   submitSeedQuality,
@@ -61,7 +63,7 @@
 
 async function submit() {
   if (!code.value.trim() || !itemId.value) {
-    message.warning('璇峰~鍐欒鐮佸拰鐗╂枡 ID');
+    message.warning('璇峰~鍐欒鐮佸苟閫夋嫨鐗╂枡');
     return;
   }
   if (!allEntered.value) {
@@ -75,6 +77,21 @@
   if (!overallPassed.value && !reason.value.trim()) {
     message.warning('妫�楠屼笉鍚堟牸鏃跺繀椤诲~鍐欎笉鍚堟牸鍘熷洜');
     return;
+  }
+
+  if (!overallPassed.value) {
+    const confirmed = await new Promise<boolean>((resolve) => {
+      Modal.confirm({
+        title: '纭鎻愪氦涓嶅悎鏍肩粨鏋滐紵',
+        content: '涓嶅悎鏍煎搧灏嗙敱鍚庣浠庢殏瀛樺簱瀛樹腑娓呴櫎锛屽苟淇濈暀涓嶅悎鏍煎師鍥犵敤浜庤川閲忓垎鏋愩��',
+        okText: '纭鎻愪氦',
+        cancelText: '杩斿洖淇敼',
+        okButtonProps: { danger: true },
+        onOk: () => resolve(true),
+        onCancel: () => resolve(false),
+      });
+    });
+    if (!confirmed) return;
   }
 
   loading.value = true;
@@ -144,26 +161,28 @@
         <template #title><div class="card-title"><IconifyIcon icon="ep:edit-pen" />璐ㄦ淇℃伅</div></template>
         <a-form layout="vertical">
           <div class="base-grid">
-            <a-form-item label="琚嬬爜" required><a-input v-model:value="code" size="large" placeholder="璇疯緭鍏ユ垨鎵弿琚嬬爜" /></a-form-item>
-            <a-form-item label="鐗╂枡 ID" required><a-input-number v-model:value="itemId" class="full-width" size="large" :min="1" placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" /></a-form-item>
-            <a-form-item label="鐢熶骇鎵规"><a-input v-model:value="batchCode" size="large" placeholder="璇疯緭鍏ユ壒娆″彿锛堥�夊~锛�" /></a-form-item>
+            <a-form-item label="琚嬬爜" required><a-input v-model:value="code" size="large" :disabled="loading" placeholder="璇疯緭鍏ユ垨鎵弿琚嬬爜" /></a-form-item>
+            <a-form-item label="鐗╂枡" required>
+              <MdItemSelect v-model="itemId" :disabled="loading" size="large" placeholder="璇烽�夋嫨鐗╂枡" />
+            </a-form-item>
+            <a-form-item label="鐢熶骇鎵规"><a-input v-model:value="batchCode" size="large" :disabled="loading" placeholder="璇疯緭鍏ユ壒娆″彿锛堥�夊~锛�" /></a-form-item>
           </div>
 
           <a-divider orientation="left">鎸囨爣缁撴灉</a-divider>
           <div class="indicator-list">
             <div v-for="item in indicators" :key="item.code" class="indicator-row" :class="{ failed: !isPassed(item) }">
               <div class="indicator-name"><span class="indicator-dot" :class="isPassed(item) ? 'pass' : 'fail'" /><strong>{{ item.label }}</strong><small>{{ item.unit }}</small></div>
-              <a-input-number v-model:value="item.value" class="indicator-input" :min="0" :precision="3" placeholder="瀹炴祴鍊�" />
+              <a-input-number v-model:value="item.value" class="indicator-input" :disabled="loading" :min="0" :precision="3" placeholder="瀹炴祴鍊�" />
               <span class="range-separator">鑼冨洿</span>
-              <a-input-number v-model:value="item.minValue" class="range-input" :min="0" :precision="3" placeholder="涓嬮檺" />
+              <a-input-number v-model:value="item.minValue" class="range-input" :disabled="loading" :min="0" :precision="3" placeholder="涓嬮檺" />
               <span>鈥�</span>
-              <a-input-number v-model:value="item.maxValue" class="range-input" :min="0" :precision="3" placeholder="涓婇檺" />
+              <a-input-number v-model:value="item.maxValue" class="range-input" :disabled="loading" :min="0" :precision="3" placeholder="涓婇檺" />
               <a-tag :color="isPassed(item) ? 'success' : 'error'">{{ isPassed(item) ? '鍚堟牸' : '瓒呭嚭鑼冨洿' }}</a-tag>
             </div>
           </div>
 
-          <a-form-item label="涓嶅悎鏍煎師鍥�" :required="!overallPassed" class="reason-item"><a-textarea v-model:value="reason" :rows="3" :maxlength="500" show-count :placeholder="overallPassed ? '鍚堟牸缁撴灉鏃犻渶濉啓' : '璇疯鏄庝笉鍚堟牸鍘熷洜'" /></a-form-item>
-          <div class="form-actions"><a-button @click="resetForm">閲嶇疆</a-button><a-button type="primary" size="large" :loading="loading" @click="submit"><IconifyIcon icon="ep:upload-filled" />鎻愪氦璐ㄦ</a-button></div>
+          <a-form-item label="涓嶅悎鏍煎師鍥�" :required="!overallPassed" class="reason-item"><a-textarea v-model:value="reason" :disabled="loading" :rows="3" :maxlength="500" show-count :placeholder="overallPassed ? '鍚堟牸缁撴灉鏃犻渶濉啓' : '璇疯鏄庝笉鍚堟牸鍘熷洜'" /></a-form-item>
+          <div class="form-actions"><a-button :disabled="loading" @click="resetForm">閲嶇疆</a-button><a-button type="primary" size="large" :loading="loading" @click="submit"><IconifyIcon icon="ep:upload-filled" />鎻愪氦璐ㄦ</a-button></div>
         </a-form>
       </a-card>
 
@@ -171,7 +190,7 @@
         <template #title><div class="card-title"><IconifyIcon icon="ep:data-analysis" />鍒ゅ畾璇存槑</div></template>
         <div class="result-hero" :class="overallPassed ? 'passed' : allEntered ? 'failed-result' : 'pending-result'"><IconifyIcon :icon="overallPassed ? 'ep:circle-check-filled' : allEntered ? 'ep:warning-filled' : 'ep:edit-pen'" /><strong>{{ overallPassed ? '褰撳墠缁撴灉鍚堟牸' : allEntered ? '褰撳墠瀛樺湪涓嶅悎鏍奸」' : '绛夊緟褰曞叆鎸囨爣' }}</strong><span>{{ allEntered ? '瀹炴祴鍊奸渶澶勪簬鏈�灏忓�间笌鏈�澶у�间箣闂�' : `宸插綍鍏� ${enteredCount} / 4 椤瑰疄娴嬪�糮 }}</span></div>
         <div class="rule-list"><div><IconifyIcon icon="ep:check" /><span>鍥涢」鎸囨爣蹇呴』鍏ㄩ儴鎻愪氦</span></div><div><IconifyIcon icon="ep:check" /><span>杈圭晫鍊兼寜鍚堟牸澶勭悊</span></div><div><IconifyIcon icon="ep:check" /><span>涓嶅悎鏍肩粨鏋滈渶淇濈暀鍘熷洜</span></div><div><IconifyIcon icon="ep:check" /><span>璐ㄦ鍛樹笌妫�楠屾椂闂寸敱鏈嶅姟绔褰�</span></div></div>
-        <a-alert message="搴撳瓨浣嶇疆鐢卞悗鍙伴厤缃В鏋�" description="鏈〉闈㈠彧鎻愪氦琚嬬爜銆佺墿鏂欍�佹壒娆″拰妫�楠屾寚鏍囷紝涓嶅厑璁稿墠绔�夋嫨浠撳簱銆佸簱鍖烘垨搴撲綅銆�" type="info" show-icon />
+        <a-alert message="搴撳瓨娴佽浆鐢卞悗绔鐞�" description="鍚堟牸鍝佸皢浠庢殏瀛樺簱杞叆姝e紡搴撳瓨锛涗笉鍚堟牸鍝佸皢鐩存帴娓呴櫎鏆傚瓨搴撳瓨骞朵繚鐣欎笉鍚堟牸鍘熷洜銆傝川妫�鍛樺拰妫�楠屾椂闂寸敱鏈嶅姟绔褰曪紝鏈〉闈笉閫夋嫨浠撳簱銆佸簱鍖烘垨搴撲綅銆�" type="info" show-icon />
         <div v-if="submittedId" class="success-note"><IconifyIcon icon="ep:success-filled" /><span>鏈�杩戞彁浜よ川妫�缂栧彿锛�<strong>{{ submittedId }}</strong></span></div>
       </a-card>
     </section>

--
Gitblit v1.9.3