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