From 346a988f537228ae44731cd31007f1412b482e83 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 19 十月 2026 16:32:10 +0800
Subject: [PATCH] refactor(mdm): 移除物料主数据中废弃的字段配置

---
 src/views/mes/qc/seedQuality/index.vue |   37 +++++++++++++++++++++++++++----------
 1 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/src/views/mes/qc/seedQuality/index.vue b/src/views/mes/qc/seedQuality/index.vue
index a034bc7..e69dfe3 100644
--- a/src/views/mes/qc/seedQuality/index.vue
+++ b/src/views/mes/qc/seedQuality/index.vue
@@ -11,6 +11,7 @@
 import {
   resolveSeedQuality,
   submitSeedQualityGroup,
+  getSeedIndicatorRanges,
 } from '#/api/mes/qc/seedQuality';
 import { getWarehouseSimpleList } from '#/api/mes/wm/warehouse';
 
@@ -59,6 +60,17 @@
   { code: 'germination_rate', label: '鍙戣娊鐜�', unit: '%' },
   { code: 'moisture', label: '姘村垎', unit: '%' },
 ]);
+const rangesReady = computed(() => indicators.value.every((item) =>
+  item.minValue !== undefined && item.maxValue !== undefined));
+
+async function loadRanges() {
+  const ranges = await getSeedIndicatorRanges();
+  for (const item of indicators.value) {
+    const range = ranges.find((row) => row.indicatorCode === item.code);
+    item.minValue = range?.minValue === undefined ? undefined : Number(range.minValue);
+    item.maxValue = range?.maxValue === undefined ? undefined : Number(range.maxValue);
+  }
+}
 
 const pendingCount = computed(() => target.value?.pendingBagIds?.length ?? 0);
 const completedCount = computed(() => target.value?.completedBagIds?.length ?? 0);
@@ -102,8 +114,6 @@
   reason.value = '';
   indicators.value.forEach((item) => {
     item.value = undefined;
-    item.minValue = undefined;
-    item.maxValue = undefined;
   });
 }
 
@@ -132,6 +142,7 @@
   resolving.value = true;
   submittedCount.value = undefined;
   try {
+    await loadRanges().catch(() => undefined);
     const data = await resolveSeedQuality(value, scanType.value);
     if (data.canceled) {
       target.value = undefined;
@@ -166,7 +177,7 @@
     return;
   }
   if (!allEntered.value) {
-    message.warning('璇峰~鍐欏洓椤规寚鏍囩殑瀹炴祴鍊煎強鍚堟牸涓婁笅闄�');
+    message.warning('璇峰~鍐欏洓椤规寚鏍囩殑瀹炴祴鍊煎拰鏈鍚堟牸涓婁笅闄�');
     return;
   }
   if (indicators.value.some((item) => item.minValue === undefined || item.maxValue === undefined || item.minValue > item.maxValue)) {
@@ -190,8 +201,8 @@
     Modal.confirm({
       title: overallPassed.value ? '纭鎻愪氦鍚堟牸缁撴灉锛�' : '纭鎻愪氦涓嶅悎鏍肩粨鏋滐紵',
       content: overallPassed.value
-        ? `鏈 ${count} 琚嬪皢缁熶竴璁板綍涓哄垵妫�鍚堟牸锛屽緟鍔犲伐閮ㄥ拰鍏徃璐ㄦ瀹℃壒鍚庢墠杞叆鍚堟牸搴撱��${scopeNote}`
-        : `鏈 ${count} 琚嬪皢璁板綍涓哄垵妫�涓嶅悎鏍硷紝淇濈暀鏆傚瓨搴撳瓨骞剁瓑寰呭妫�銆�${scopeNote}`,
+        ? `鏈 ${count} 琚嬪皢缁熶竴璁板綍涓哄垵妫�鍚堟牸锛屽緟鍒濇瀹℃牳閫氳繃鍚庡妫�锛涘妫�瀹℃牳閫氳繃鍚庢墠杞叆鍚堟牸搴撱��${scopeNote}`
+        : `鏈 ${count} 琚嬪皢璁板綍涓哄垵妫�涓嶅悎鏍硷紝淇濈暀鏆傚瓨搴撳瓨锛涘垵妫�瀹℃牳鍚庡喅瀹氭槸鍚﹁繘鍏ュ妫�銆�${scopeNote}`,
       okText: '纭鎻愪氦',
       cancelText: '杩斿洖淇敼',
       okButtonProps: { danger: !overallPassed.value },
@@ -219,7 +230,7 @@
       })),
     });
     submittedCount.value = result.processedCount;
-    message.success(`鏈 ${result.processedCount} 琚嬪凡鎻愪氦锛�${passed ? '鍒濇鍚堟牸锛屽緟涓ょ骇瀹℃壒' : '鍒濇涓嶅悎鏍硷紝寰呭妫�'}`);
+    message.success(`鏈 ${result.processedCount} 琚嬪凡鎻愪氦鍒濇锛屽緟鍒濇瀹℃牳`);
     if (pageRoot.value && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
       gsap.fromTo('.result-card', { scale: 0.97, autoAlpha: 0.5 }, { scale: 1, autoAlpha: 1, duration: 0.35, ease: 'power2.out' });
     }
@@ -235,6 +246,11 @@
 }
 
 onMounted(async () => {
+  try {
+    await loadRanges();
+  } catch (error) {
+    message.error(errorText(error));
+  }
   try {
     const warehouses = await getWarehouseSimpleList();
     qualifiedWarehouses.value = (warehouses ?? []).filter(
@@ -266,7 +282,7 @@
       <div>
         <div class="eyebrow">MES / 璐ㄩ噺绠$悊</div>
         <h1>绉嶅瓙璐ㄦ</h1>
-        <p>璇嗗埆寰呮鑼冨洿骞跺綍鍏ュ洓椤规寚鏍囷紱鍚堟牸缁忓姞宸ラ儴涓庡叕鍙歌川妫�瀹℃壒鍚庡叆搴擄紝涓嶅悎鏍煎厛澶嶆</p>
+        <p>璇嗗埆寰呮鑼冨洿骞跺綍鍏ュ洓椤规寚鏍囷紱鍒濇瀹℃牳鍚庡妫�锛屽妫�瀹℃牳鍚庡叆搴撴垨澶勭疆</p>
       </div>
       <div class="header-badge"><IconifyIcon icon="ep:checked" /> 琚嬬爜 / 鎵樼洏鐮� / 鎵规鐮�</div>
     </header>
@@ -318,6 +334,7 @@
             </a-form-item>
           </div>
           <p v-if="!qualifiedWarehouses.length" class="target-warning">鏆傛棤鍙敤鍚堟牸搴擄紝璇疯仈绯荤鐞嗗憳閰嶇疆鍚庡啀鎻愪氦璐ㄦ銆�</p>
+          <a-alert v-if="!rangesReady" class="target-empty" type="info" show-icon message="鏈璇锋墜鍔ㄥ~鍐欏悎鏍艰寖鍥�" description="绠$悊鍛樺皻鏈厤缃畬鏁撮粯璁よ寖鍥达紱浠嶅彲鎵嬪姩濉啓鍥涢」鎸囨爣鐨勫悎鏍间笂涓嬮檺銆�" />
 
           <a-divider orientation="left">鎸囨爣缁撴灉</a-divider>
           <div class="indicator-list">
@@ -325,9 +342,9 @@
               <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" :disabled="loading" :min="0" :precision="3" placeholder="瀹炴祴鍊�" />
               <span class="range-separator">鑼冨洿</span>
-              <a-input-number v-model:value="item.minValue" class="range-input" :disabled="loading" :min="0" :precision="3" placeholder="涓嬮檺" />
+              <a-input-number v-model:value="item.minValue" class="range-input" :disabled="loading" :min="0" :max="100" :precision="3" placeholder="涓嬮檺" />
               <span>鈥�</span>
-              <a-input-number v-model:value="item.maxValue" class="range-input" :disabled="loading" :min="0" :precision="3" placeholder="涓婇檺" />
+              <a-input-number v-model:value="item.maxValue" class="range-input" :disabled="loading" :min="0" :max="100" :precision="3" placeholder="涓婇檺" />
               <a-tag :color="!allEntered ? 'default' : isPassed(item) ? 'success' : 'error'">{{ !allEntered ? '寰呭綍鍏�' : isPassed(item) ? '鍚堟牸' : '瓒呭嚭鑼冨洿' }}</a-tag>
             </div>
           </div>
@@ -341,7 +358,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><IconifyIcon icon="ep:check" /><span>璐ㄦ鍛樹笌妫�楠屾椂闂寸敱鏈嶅姟绔褰�</span></div></div>
-        <a-alert message="瀹℃壒瀹屾垚鍚庢祦杞簱瀛�" description="鍒濇涓嶆敼鍙樺簱瀛橈紱涓嶅悎鏍煎緟澶嶆銆傚妫�缁撹缁忓姞宸ラ儴鍜屽叕鍙歌川妫�瀹℃壒鍚庯紝鍚堟牸琚嬫墠杞叆鍚堟牸搴擄紝涓嶅悎鏍艰鎵嶆姤搴熴��" type="info" show-icon />
+        <a-alert message="澶嶆瀹℃牳瀹屾垚鍚庢祦杞簱瀛�" description="鍒濇鍙婂妫�鏈熼棿琚嬬爜鐣欏湪鏆傚瓨搴撱�傚垵妫�瀹℃牳閫氳繃鍚庤繘鍏ュ妫�锛涘妫�鍚堟牸骞跺鏍搁�氳繃鎵嶈浆鍏ュ悎鏍煎簱锛屽妫�涓嶅悎鏍肩粡纭鍚庢墠鎶ュ簾銆�" type="info" show-icon />
         <div v-if="submittedCount" class="success-note"><IconifyIcon icon="ep:success-filled" /><span>鏈�杩戞彁浜よ川妫�锛�<strong>{{ submittedCount }} 琚�</strong></span></div>
       </a-card>
     </section>

--
Gitblit v1.9.3