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/mobile/quality.vue | 24 ++++++++++++++----------
1 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/src/views/mobile/quality.vue b/src/views/mobile/quality.vue
index 4e870f2..81bf336 100644
--- a/src/views/mobile/quality.vue
+++ b/src/views/mobile/quality.vue
@@ -2,7 +2,7 @@
import { computed, onMounted, ref } from 'vue';
import { onBeforeRouteLeave } from 'vue-router';
import { useUserStore } from '@vben/stores';
-import { resolveSeedQuality, submitSeedQualityGroup, type SeedQualityScan } from '#/api/mes/qc/seedQuality';
+import { getSeedIndicatorRanges, resolveSeedQuality, submitSeedQualityGroup, type SeedQualityScan } from '#/api/mes/qc/seedQuality';
import { getWarehouseSimpleList, type MesWmWarehouseApi } from '#/api/mes/wm/warehouse';
import { allowedMobilePath, extractCode } from '#/mobile/access';
import { errorText } from '#/mobile/api';
@@ -18,10 +18,10 @@
const pendingType = ref<ScanType>('BAG'), pendingIds = ref<number[]>([]);
const storageKey = 'mom-mobile-quality-' + useUserStore().userInfo?.id;
const indicators = ref([
- { code: 'purity', name: '绾害', value: '', minValue: '0', maxValue: '100' },
- { code: 'cleanliness', name: '鍑�搴�', value: '', minValue: '0', maxValue: '100' },
- { code: 'germination_rate', name: '鍙戣娊鐜�', value: '', minValue: '0', maxValue: '100' },
- { code: 'moisture', name: '姘村垎', value: '', minValue: '0', maxValue: '100' },
+ { code: 'purity', name: '绾害', value: '', minValue: '', maxValue: '' },
+ { code: 'cleanliness', name: '鍑�搴�', value: '', minValue: '', maxValue: '' },
+ { code: 'germination_rate', name: '鍙戣娊鐜�', value: '', minValue: '', maxValue: '' },
+ { code: 'moisture', name: '姘村垎', value: '', minValue: '', maxValue: '' },
]);
const complete = computed(() => indicators.value.every(i => [i.value, i.minValue, i.maxValue].every(v => String(v).trim() !== '' && Number.isFinite(Number(v))) && Number(i.minValue) >= 0 && Number(i.maxValue) <= 100 && Number(i.value) >= 0 && Number(i.value) <= 100 && Number(i.minValue) <= Number(i.maxValue)));
const passed = computed(() => complete.value && indicators.value.every(i => Number(i.value) >= Number(i.minValue) && Number(i.value) <= Number(i.maxValue)));
@@ -33,20 +33,24 @@
const data = await resolveSeedQuality(extractCode(raw), scanType.value);
if (data.canceled || !data.inbound) throw new Error('璇ュ璞″凡浣滃簾鎴栨湁鏁堣鐮佸皻鏈叏閮ㄥ叆搴擄紝涓嶈兘璐ㄦ');
if (!data.pendingBagIds?.length) throw new Error('璇ュ璞℃病鏈夊緟璐ㄦ琚嬬爜锛岃鍦ㄨ川妫�璁板綍涓煡鐪嬪凡鏈夌粨鏋�');
- bag.value = data; indicators.value.forEach(i => i.value = ''); reason.value = '';
+ bag.value = data; indicators.value.forEach(i => { i.value = ''; i.minValue = ''; i.maxValue = ''; }); reason.value = '';
+ try {
+ const ranges = await getSeedIndicatorRanges();
+ indicators.value.forEach(i => { const range = ranges.find(r => r.indicatorCode === i.code); if (range) { i.minValue = String(range.minValue); i.maxValue = String(range.maxValue); } });
+ } catch { /* 妯℃澘涓嶅彲鐢ㄦ椂浠嶅厑璁告墜鍔ㄥ~鍐欐湰娆¤寖鍥� */ }
} catch (e) { error.value = errorText(e); } finally { busy.value = false; }
}
async function submit() {
if (busy.value || pendingCode.value || !bag.value || !complete.value || !warehouseId.value) return;
if (!passed.value && !reason.value.trim()) { error.value = '璇峰~鍐欎笉鍚堟牸鍘熷洜'; return; }
const count = bag.value.pendingBagIds!.length;
- if (!window.confirm(passed.value ? `纭瀵规湰娆� ${count} 琚嬬粺涓�鍒ゅ畾鍚堟牸锛熷叏閮ㄥ皢杞叆鎵�閫夊悎鏍煎簱銆俙 : `纭瀵规湰娆� ${count} 琚嬬粺涓�鍒ゅ畾涓嶅悎鏍硷紵鍏ㄩ儴灏嗕粠鏆傚瓨搴撳瓨绉婚櫎骞舵爣璁版姤搴熴�俙)) return;
+ if (!window.confirm(passed.value ? `纭瀵规湰娆� ${count} 琚嬬粺涓�鎻愪氦鍒濇鍚堟牸锛熷鏍搁�氳繃鍚庤繘鍏ュ妫�銆俙 : `纭瀵规湰娆� ${count} 琚嬬粺涓�鎻愪氦鍒濇涓嶅悎鏍硷紵灏嗚繘鍏ヤ笉鍚堟牸澶勭悊銆俙)) return;
error.value = ''; notice.value = '';
pendingCode.value = bag.value.code; pendingType.value = scanType.value; pendingIds.value = [...bag.value.pendingBagIds!];
sessionStorage.setItem(storageKey, JSON.stringify({ code: pendingCode.value, scanType: pendingType.value, bagIds: pendingIds.value })); busy.value = true;
try {
const result = await submitSeedQualityGroup({ code: bag.value.code, scanType: scanType.value, bagIds: pendingIds.value, qualifiedWarehouseId: warehouseId.value, reason: reason.value.trim() || undefined, indicators: indicators.value.map(i => ({ code: i.code, value: Number(i.value), minValue: Number(i.minValue), maxValue: Number(i.maxValue) })) });
- clearPending(); notice.value = `鏈 ${result.processedCount} 琚媊 + (passed.value ? '璐ㄦ鍚堟牸锛屽凡杞叆鍚堟牸搴撱��' : '璐ㄦ涓嶅悎鏍硷紝宸茶褰曞師鍥犲苟绉婚櫎鏆傚瓨搴撳瓨銆�');
+ clearPending(); notice.value = `鏈 ${result.processedCount} 琚媊 + (passed.value ? '鍒濇鍚堟牸锛岀瓑寰呭鏍搞��' : '鍒濇涓嶅悎鏍硷紝绛夊緟涓嶅悎鏍煎鐞嗐��');
bag.value = undefined; reason.value = ''; indicators.value.forEach(i => i.value = '');
} catch (e) { error.value = '鎻愪氦缁撴灉寰呯‘璁わ細' + errorText(e) + '銆傝鏍稿疄鍚庡啀鎿嶄綔涓嬩竴琚嬨��'; } finally { busy.value = false; }
}
@@ -87,8 +91,8 @@
<label class="m-field"><span>瀹炴祴鍊�</span><input v-model="i.value" type="number" inputmode="decimal" min="0" max="100" step="any" required placeholder="杈撳叆瀹炴祴鐧惧垎姣�" /></label>
<div class="m-grid"><label class="m-field"><span>鍚堟牸涓嬮檺</span><input v-model="i.minValue" type="number" inputmode="decimal" min="0" max="100" step="any" required /></label><label class="m-field"><span>鍚堟牸涓婇檺</span><input v-model="i.maxValue" type="number" inputmode="decimal" min="0" max="100" step="any" required /></label></div>
</fieldset>
- <div class="m-panel"><p class="m-muted">涓婁笅闄愭部鐢ㄧ幇鏈夎川妫�瑙勫垯褰曞叆鏂瑰紡锛岃鎸夎鍝佺妫�楠屾爣鍑嗘牳瀵广��</p><Picker v-model="warehouseId" label="鐩爣鍚堟牸搴�" :options="warehouses" :disabled="busy" /><p v-if="!warehouses.length && !busy" class="m-warning">鏆傛棤鍙敤鍚堟牸搴擄紝璇疯仈绯荤鐞嗗憳閰嶇疆銆�</p><label class="m-field"><span>{{complete && !passed ? '涓嶅悎鏍煎師鍥狅紙蹇呭~锛�' : '妫�楠屽娉�'}}</span><textarea v-model="reason" :disabled="busy" :required="complete && !passed" rows="3" maxlength="255" /></label></div>
- <div class="m-action-bar"><p v-if="complete" :class="passed ? 'm-success' : 'm-warning'">棰勫垽锛歿{passed ? '鍚堟牸锛屾彁浜ゅ悗杞叆鍚堟牸搴�' : '涓嶅悎鏍硷紝鎻愪氦鍚庣Щ闄ゆ殏瀛樺簱瀛�'}}銆傛渶缁堜互鏈嶅姟绔粨鏋滀负鍑嗐��</p><button class="m-primary" :disabled="busy || !complete || !warehouseId">{{busy ? '姝e湪鎻愪氦鈥�' : '纭鎻愪氦璐ㄦ'}}</button></div>
+ <div class="m-panel"><p class="m-muted">鍚堟牸鑼冨洿浠庢ā鏉垮甫鍏ワ紝鍙湪鏈璐ㄦ涓慨鏀癸紱璇锋寜璇ュ搧绉嶆爣鍑嗘牳瀵广��</p><Picker v-model="warehouseId" label="鐩爣鍚堟牸搴�" :options="warehouses" :disabled="busy" /><p v-if="!warehouses.length && !busy" class="m-warning">鏆傛棤鍙敤鍚堟牸搴擄紝璇疯仈绯荤鐞嗗憳閰嶇疆銆�</p><label class="m-field"><span>{{complete && !passed ? '涓嶅悎鏍煎師鍥狅紙蹇呭~锛�' : '妫�楠屽娉�'}}</span><textarea v-model="reason" :disabled="busy" :required="complete && !passed" rows="3" maxlength="255" /></label></div>
+ <div class="m-action-bar"><p v-if="complete" :class="passed ? 'm-success' : 'm-warning'">棰勫垽锛歿{passed ? '鍒濇鍚堟牸锛岀瓑寰呭垵妫�瀹℃牳' : '鍒濇涓嶅悎鏍硷紝杩涘叆涓嶅悎鏍煎鐞�'}}銆傛渶缁堜互鏈嶅姟绔粨鏋滀负鍑嗐��</p><button class="m-primary" :disabled="busy || !complete || !warehouseId">{{busy ? '姝e湪鎻愪氦鈥�' : '纭鎻愪氦璐ㄦ'}}</button></div>
</form>
</template>
<RouterLink v-if="allowedMobilePath('/mobile/quality-records')" to="/mobile/quality-records" class="m-link">鏌ョ湅璐ㄦ璁板綍</RouterLink>
--
Gitblit v1.9.3