From d1791f762791428af91467b8855de83d54f015f9 Mon Sep 17 00:00:00 2001
From: zhuguifei <312353457@qq.com>
Date: 星期五, 17 四月 2026 15:23:21 +0800
Subject: [PATCH] feat: 1.新增物料、物料类型、材料检验统计等表维护功能 2.完善判定依据-判断依据明细 3.新增判断依据、物料管理等字典翻译类 4.成品物料批次-原始数据维护页面
---
ruoyi-plus-soybean/src/views/qm/batch/modules/batch-operate-drawer.vue | 280 +++++++++++++++-----------------------------------------
1 files changed, 75 insertions(+), 205 deletions(-)
diff --git a/ruoyi-plus-soybean/src/views/qm/batch/modules/batch-operate-drawer.vue b/ruoyi-plus-soybean/src/views/qm/batch/modules/batch-operate-drawer.vue
old mode 100644
new mode 100755
index 12d91d0..2af78f4
--- a/ruoyi-plus-soybean/src/views/qm/batch/modules/batch-operate-drawer.vue
+++ b/ruoyi-plus-soybean/src/views/qm/batch/modules/batch-operate-drawer.vue
@@ -1,7 +1,9 @@
<script setup lang="ts">
-import { computed, ref, watch } from 'vue';
+import { computed, onMounted, ref, watch } from 'vue';
import { jsonClone } from '@sa/utils';
import { fetchCreateBatch, fetchUpdateBatch } from '@/service/api/qm/batch';
+import { fetchGetMatList } from '@/service/api/md/mat';
+import { fetchGetJudgeList } from '@/service/api/qm/judge';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
@@ -31,27 +33,41 @@
const { formRef, validate, restoreValidation } = useNaiveForm();
const { createRequiredRule } = useFormRules();
-// 绫诲瀷閫夐」锛欰-鍒朵笣 B-鎴愬瀷 C-鍗峰寘 D-灏佺 E-绯栭鏂�
-const typOptions = [
- { label: '鍒朵笣', value: 'A' },
- { label: '鎴愬瀷', value: 'B' },
- { label: '鍗峰寘', value: 'C' },
- { label: '灏佺', value: 'D' },
- { label: '绯栭鏂�', value: 'E' }
+const matOptions = ref<CommonType.Option[]>([]);
+const judgeOptions = ref<CommonType.Option[]>([]);
+const stateOptions = [
+ { label: '姝e父', value: '0' },
+ { label: '鍋滅敤', value: '1' }
];
-// 鍙嶉MES閫夐」锛�0-鏈笂浼爉es 1-宸蹭笂浼� 3-浠嶮ES涓嬭浇
-const flagOptions = [
- { label: '鏈笂浼爉es', value: '0' },
- { label: '宸蹭笂浼�', value: '1' },
- { label: '浠嶮ES涓嬭浇', value: '3' }
-];
+async function getMatOptions() {
+ const { data, error } = await fetchGetMatList({ tid: '1' as any, pageSize: 1000 });
+ if (!error) {
+ matOptions.value = data.rows.map(item => ({
+ label: item.name,
+ value: item.code
+ }));
+ }
+}
-// 绫诲埆閫夐」锛�0-鎴愬搧 1-杈呮潗
-const categoryOptions = [
- { label: '鎴愬搧', value: '0' },
- { label: '杈呮潗', value: '1' }
-];
+async function getJudgeOptions(matCode?: string | null) {
+ if (!matCode) {
+ judgeOptions.value = [];
+ return;
+ }
+ const params: Api.Qm.JudgeSearchParams = { category: 0, pageSize: 1000, matCode };
+ const { data, error } = await fetchGetJudgeList(params);
+ if (!error) {
+ judgeOptions.value = data.rows.map(item => ({
+ label: item.judgeName,
+ value: String(item.id)
+ })) as CommonType.Option[];
+ }
+}
+
+onMounted(() => {
+ getMatOptions();
+});
const title = computed(() => {
const titles: Record<NaiveUI.TableOperateType, string> = {
@@ -70,13 +86,13 @@
id: '',
batchCode: '',
batchName: '',
- typ: '',
+ typ: '0',
eqpCode: '',
- matCode: '',
+ matCode: null,
judgeCode: '',
batchDate: null,
- isflag: '',
- enabled: '',
+ isflag: '0',
+ enabled: '1',
totalNum: null,
results: '',
approver: '',
@@ -86,19 +102,19 @@
verName: '',
verCode: '',
archDate: '',
- flag: '',
+ flag: '0',
toMesDate: null,
fromMesDate: null,
- deleted: null,
+ deleted: 0,
batchDes: '',
- category: '',
+ category: '0',
makeno: '',
shifteqpno: '',
boxno: '',
pid: '',
reviewer: '',
rvcount: null,
- state: '',
+ state: '0',
reviewTime: null,
auditTime: null,
spec: '',
@@ -117,10 +133,11 @@
};
}
-type RuleKey = Extract<keyof Model, 'id'>;
+type RuleKey = Extract<keyof Model, 'batchCode' | 'matCode'>;
const rules: Record<RuleKey, App.Global.FormRule> = {
- id: createRequiredRule('缂栫爜涓嶈兘涓虹┖')
+ batchCode: createRequiredRule('鎵规鍙蜂笉鑳戒负绌�'),
+ matCode: createRequiredRule('鐗屽彿涓嶈兘涓虹┖')
};
function handleUpdateModelWhenEdit() {
@@ -303,201 +320,54 @@
if (visible.value) {
handleUpdateModelWhenEdit();
restoreValidation();
+ getJudgeOptions(model.value.matCode);
}
});
+
+watch(
+ () => model.value.matCode,
+ newVal => {
+ if (visible.value) {
+ model.value.judgeCode = '';
+ getJudgeOptions(newVal);
+ }
+ }
+);
</script>
<template>
<NDrawer v-model:show="visible" :title="title" display-directive="show" :width="800" class="max-w-90%">
<NDrawerContent :title="title" :native-scrollbar="false" closable>
- <NForm ref="formRef" :model="model" :rules="rules">
- <NFormItem label="鎵规浠g爜" path="batchCode">
- <NInput v-model:value="model.batchCode" placeholder="璇疯緭鍏ユ壒娆′唬鐮�" />
- </NFormItem>
- <NFormItem label="鎵规鍚嶇О" path="batchName">
- <NInput v-model:value="model.batchName" placeholder="璇疯緭鍏ユ壒娆″悕绉�" />
- </NFormItem>
- <NFormItem label="绫诲瀷" path="typ">
- <NSelect v-model:value="model.typ" :options="typOptions" placeholder="璇烽�夋嫨绫诲瀷" clearable />
- </NFormItem>
- <NFormItem label="鏈哄彴浠g爜" path="eqpCode">
- <NInput v-model:value="model.eqpCode" placeholder="璇疯緭鍏ユ満鍙颁唬鐮�" />
+ <NForm ref="formRef" :model="model" :rules="rules" label-placement="left" :label-width="100">
+ <NFormItem label="鎵规鍙�" path="batchCode">
+ <NInput v-model:value="model.batchCode" placeholder="璇疯緭鍏ユ壒娆″彿" />
</NFormItem>
<NFormItem label="鐗屽彿" path="matCode">
- <NInput v-model:value="model.matCode" placeholder="璇疯緭鍏ョ墝鍙�" />
+ <NSelect v-model:value="model.matCode" :options="matOptions" placeholder="璇烽�夋嫨鐗屽彿" clearable filterable />
</NFormItem>
- <NFormItem label="鍒ゅ畾渚濇嵁浠g爜" path="judgeCode">
- <NInput v-model:value="model.judgeCode" placeholder="璇疯緭鍏ュ垽瀹氫緷鎹唬鐮�" />
- </NFormItem>
- <NFormItem label="鎵规鐢熸垚鏃ユ湡" path="batchDate">
- <NDatePicker
- v-model:formatted-value="model.batchDate"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
+ <NFormItem label="鍒ゅ畾渚濇嵁" path="judgeCode">
+ <NSelect
+ v-model:value="model.judgeCode"
+ :options="judgeOptions"
+ placeholder="璇烽�夋嫨鍒ゅ畾渚濇嵁"
clearable
- />
- </NFormItem>
- <NFormItem label="浣跨敤鏍囧織" path="isflag">
- <NInput v-model:value="model.isflag" placeholder="璇疯緭鍏ヤ娇鐢ㄦ爣蹇�" />
- </NFormItem>
- <NFormItem label="鍚敤鏍囧織" path="enabled">
- <NInput v-model:value="model.enabled" placeholder="璇疯緭鍏ュ惎鐢ㄦ爣蹇�" />
- </NFormItem>
- <NFormItem label="鍒拌揣鎬婚噺" path="totalNum">
- <NInput v-model:value="model.totalNum" placeholder="璇疯緭鍏ュ埌璐ф�婚噺" />
- </NFormItem>
- <NFormItem label="缁煎悎鍒ゅ畾" path="results">
- <NInput v-model:value="model.results" placeholder="璇疯緭鍏ョ患鍚堝垽瀹�" />
- </NFormItem>
- <NFormItem label="鎵瑰噯浜�" path="approver">
- <NInput v-model:value="model.approver" placeholder="璇疯緭鍏ユ壒鍑嗕汉" />
- </NFormItem>
- <NFormItem label="瀹℃牳浜�" path="auditor">
- <NInput v-model:value="model.auditor" placeholder="璇疯緭鍏ュ鏍镐汉" />
- </NFormItem>
- <NFormItem label="鍒涘缓浜�" path="creater">
- <NInput v-model:value="model.creater" placeholder="璇疯緭鍏ュ垱寤轰汉" />
- </NFormItem>
- <NFormItem label="鍒惰〃鏃ユ湡" path="tabDate">
- <NDatePicker
- v-model:formatted-value="model.tabDate"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- clearable
- />
- </NFormItem>
- <NFormItem label="鐗堟湰鍚嶇О" path="verName">
- <NInput v-model:value="model.verName" placeholder="璇疯緭鍏ョ増鏈悕绉�" />
- </NFormItem>
- <NFormItem label="鐗堟湰缂栧彿" path="verCode">
- <NInput v-model:value="model.verCode" placeholder="璇疯緭鍏ョ増鏈紪鍙�" />
- </NFormItem>
- <NFormItem label="淇濆瓨鏈�" path="archDate">
- <NInput v-model:value="model.archDate" placeholder="璇疯緭鍏ヤ繚瀛樻湡" />
- </NFormItem>
- <NFormItem label="鍙嶉MES" path="flag">
- <NSelect v-model:value="model.flag" :options="flagOptions" placeholder="璇烽�夋嫨鍙嶉MES" clearable />
- </NFormItem>
- <NFormItem label="涓婁紶MES鏃堕棿" path="toMesDate">
- <NDatePicker
- v-model:formatted-value="model.toMesDate"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- clearable
- />
- </NFormItem>
- <NFormItem label="浠嶮ES鏃堕棿涓嬭浇" path="fromMesDate">
- <NDatePicker
- v-model:formatted-value="model.fromMesDate"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- clearable
- />
- </NFormItem>
- <NFormItem label="鍒犻櫎鏍囧織" path="deleted">
- <NInput v-model:value="model.deleted" placeholder="璇疯緭鍏ュ垹闄ゆ爣蹇�" />
- </NFormItem>
- <NFormItem label="鎵规鎻忚堪" path="batchDes">
- <NInput v-model:value="model.batchDes" placeholder="璇疯緭鍏ユ壒娆℃弿杩�" />
- </NFormItem>
- <NFormItem label="绫诲埆" path="category">
- <NSelect v-model:value="model.category" :options="categoryOptions" placeholder="璇烽�夋嫨绫诲埆" clearable />
- </NFormItem>
- <NFormItem label="鍗峰埗宸ュ彿" path="makeno">
- <NInput v-model:value="model.makeno" placeholder="璇疯緭鍏ュ嵎鍒跺伐鍙�" />
- </NFormItem>
- <NFormItem label="鐝鏈哄彿" path="shifteqpno">
- <NInput v-model:value="model.shifteqpno" placeholder="璇疯緭鍏ョ彮娆℃満鍙�" />
- </NFormItem>
- <NFormItem label="瑁呯鍙�" path="boxno">
- <NInput v-model:value="model.boxno" placeholder="璇疯緭鍏ヨ绠卞彿" />
- </NFormItem>
- <NFormItem label="鐖舵壒娆″彿" path="pid">
- <NInput v-model:value="model.pid" placeholder="璇疯緭鍏ョ埗鎵规鍙�" />
- </NFormItem>
- <NFormItem label="澶嶆牳浜�" path="reviewer">
- <NInput v-model:value="model.reviewer" placeholder="璇疯緭鍏ュ鏍镐汉" />
- </NFormItem>
- <NFormItem label="澶嶆娆℃暟" path="rvcount">
- <NInput v-model:value="model.rvcount" placeholder="璇疯緭鍏ュ妫�娆℃暟" />
- </NFormItem>
- <NFormItem label="鎵规鐘舵��" path="state">
- <NInput v-model:value="model.state" placeholder="璇疯緭鍏ユ壒娆$姸鎬�" />
- </NFormItem>
- <NFormItem label="澶嶆牳鏃ユ湡" path="reviewTime">
- <NDatePicker
- v-model:formatted-value="model.reviewTime"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- clearable
- />
- </NFormItem>
- <NFormItem label="瀹℃牳鏃ユ湡" path="auditTime">
- <NDatePicker
- v-model:formatted-value="model.auditTime"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- clearable
+ filterable
/>
</NFormItem>
<NFormItem label="瑙勬牸" path="spec">
<NInput v-model:value="model.spec" placeholder="璇疯緭鍏ヨ鏍�" />
</NFormItem>
- <NFormItem label="鎵瑰噯鏃堕棿" path="approveTime">
- <NDatePicker
- v-model:formatted-value="model.approveTime"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- clearable
- />
+ <NFormItem label="瑁呯鍙�" path="boxno">
+ <NInput v-model:value="model.boxno" placeholder="璇疯緭鍏ヨ绠卞彿" />
</NFormItem>
- <NFormItem label="鍒拌揣鍗曚綅" path="unit">
- <NInput v-model:value="model.unit" placeholder="璇疯緭鍏ュ埌璐у崟浣�" />
+ <NFormItem label="鐝鏈哄彿" path="shifteqpno">
+ <NInput v-model:value="model.shifteqpno" placeholder="璇疯緭鍏ョ彮娆℃満鍙�" />
</NFormItem>
- <NFormItem label="鍒拌揣鏃ユ湡" path="arrivalTime">
- <NDatePicker
- v-model:formatted-value="model.arrivalTime"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- clearable
- />
+ <NFormItem label="鎻忚堪" path="batchDes">
+ <NInput v-model:value="model.batchDes" placeholder="璇疯緭鍏ユ弿杩�" />
</NFormItem>
- <NFormItem label="瀛樻斁鍦扮偣" path="storagePlace">
- <NInput v-model:value="model.storagePlace" placeholder="璇疯緭鍏ュ瓨鏀惧湴鐐�" />
- </NFormItem>
- <NFormItem label="妫�楠屽憳" path="checker">
- <NInput v-model:value="model.checker" placeholder="璇疯緭鍏ユ楠屽憳" />
- </NFormItem>
- <NFormItem label="鎺ュ崟鏃ユ湡" path="receiveTime">
- <NDatePicker
- v-model:formatted-value="model.receiveTime"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- clearable
- />
- </NFormItem>
- <NFormItem label="鎶ユ鏃ユ湡" path="inspTime">
- <NDatePicker
- v-model:formatted-value="model.inspTime"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- clearable
- />
- </NFormItem>
- <NFormItem label="浠撳簱淇濈鍛�" path="storer">
- <NInput v-model:value="model.storer" placeholder="璇疯緭鍏ヤ粨搴撲繚绠″憳" />
- </NFormItem>
- <NFormItem label="鏄惁楠岃瘉" path="isverify">
- <NInput v-model:value="model.isverify" placeholder="璇疯緭鍏ユ槸鍚﹂獙璇�" />
- </NFormItem>
- <NFormItem label="鏄惁妫�楠�" path="ischk">
- <NInput v-model:value="model.ischk" placeholder="璇疯緭鍏ユ槸鍚︽楠�" />
- </NFormItem>
- <NFormItem label="澶囩敤1" path="bak1">
- <NInput v-model:value="model.bak1" placeholder="璇疯緭鍏ュ鐢�1" />
- </NFormItem>
- <NFormItem label="澶囩敤2" path="bak2">
- <NInput v-model:value="model.bak2" placeholder="璇疯緭鍏ュ鐢�2" />
+ <NFormItem label="鐘舵��" path="state">
+ <NSelect v-model:value="model.state" :options="stateOptions" placeholder="璇烽�夋嫨鐘舵��" clearable />
</NFormItem>
</NForm>
<template #footer>
--
Gitblit v1.9.3