From e97b55310155a2dd691bd698a10295a4d867f60c Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期五, 17 四月 2026 15:55:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 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 bccc726..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">
-          <NInputNumber v-model:value="model.totalNum" placeholder="璇疯緭鍏ュ埌璐ф�婚噺" class="w-full" />
-        </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">
-          <NInputNumber v-model:value="model.deleted" placeholder="璇疯緭鍏ュ垹闄ゆ爣蹇�" class="w-full" />
-        </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 as any" placeholder="璇疯緭鍏ョ埗鎵规鍙�" />
-        </NFormItem>
-        <NFormItem label="澶嶆牳浜�" path="reviewer">
-          <NInput v-model:value="model.reviewer" placeholder="璇疯緭鍏ュ鏍镐汉" />
-        </NFormItem>
-        <NFormItem label="澶嶆娆℃暟" path="rvcount">
-          <NInputNumber v-model:value="model.rvcount" placeholder="璇疯緭鍏ュ妫�娆℃暟" class="w-full" />
-        </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