From 91874fc927117dfeb9050791dd8f060e874d2fd6 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期四, 21 五月 2026 14:06:55 +0800
Subject: [PATCH]  feat: 质检功能优化 - 支持快速合格判定   1. 将检验管理页面的"编辑"按钮改为"质检"   2. 点击"质检"时弹出对话框选择合格/不合格   3. 选择"合格"时自动填充当前时间和当前用户,直接提交   4. 选择"不合格"时进入详细填写页面,检测结果默认为"不合格"涉及文件:- 原材料检验、出厂检验、过程检验的index.vue和formDia.vue

---
 src/views/qualityManagement/processInspection/components/formDia.vue     |   10 
 src/views/qualityManagement/finalInspection/components/formDia.vue       |   12 
 src/views/qualityManagement/rawMaterialInspection/components/formDia.vue |   10 
 src/views/qualityManagement/rawMaterialInspection/index.vue              |  112 +++++++++++
 src/views/qualityManagement/finalInspection/index.vue                    |  217 ++++++++++++++++-----
 src/views/qualityManagement/processInspection/index.vue                  |  217 ++++++++++++++++-----
 6 files changed, 458 insertions(+), 120 deletions(-)

diff --git a/src/views/qualityManagement/finalInspection/components/formDia.vue b/src/views/qualityManagement/finalInspection/components/formDia.vue
index 5f4c975..09b1e61 100644
--- a/src/views/qualityManagement/finalInspection/components/formDia.vue
+++ b/src/views/qualityManagement/finalInspection/components/formDia.vue
@@ -203,13 +203,13 @@
 const modelOptions = ref([]);
 
 // 鎵撳紑寮规
-const openDialog = async (type, row) => {
+const openDialog = async (type, row, defaultCheckResult = "") => {
   operationType.value = type;
   dialogFormVisible.value = true;
   // 鍏堟竻绌鸿〃鍗曢獙璇佺姸鎬侊紝閬垮厤闂儊
   await nextTick();
   proxy.$refs.formRef?.clearValidate();
-  
+
   // 骞惰鍔犺浇鍩虹鏁版嵁
   const [userListsRes] = await Promise.all([
     userListNoPage(),
@@ -219,16 +219,20 @@
     })
   ]);
   userList.value = userListsRes.data;
-  
+
   form.value = {}
   testStandardOptions.value = [];
   tableData.value = [];
-  
+
   if (operationType.value === 'edit') {
     // 鍏堜繚瀛� testStandardId锛岄伩鍏嶈娓呯┖
     const savedTestStandardId = row.testStandardId;
     // 鍏堣缃〃鍗曟暟鎹紝浣嗘殏鏃舵竻绌� testStandardId锛岀瓑閫夐」鍔犺浇瀹屾垚鍚庡啀璁剧疆
     form.value = {...row, testStandardId: ''}
+    // 濡傛灉浼犲叆浜嗛粯璁ゆ娴嬬粨鏋滐紝瑕嗙洊row涓殑鍊�
+    if (defaultCheckResult) {
+      form.value.checkResult = defaultCheckResult;
+    }
     currentProductId.value = row.productId || 0
     // 娓呯┖楠岃瘉鐘舵�侊紝閬垮厤鏁版嵁鍔犺浇杩囩▼涓殑鏍¢獙闂儊
     nextTick(() => {
diff --git a/src/views/qualityManagement/finalInspection/index.vue b/src/views/qualityManagement/finalInspection/index.vue
index db44222..28619cd 100644
--- a/src/views/qualityManagement/finalInspection/index.vue
+++ b/src/views/qualityManagement/finalInspection/index.vue
@@ -40,23 +40,56 @@
     <InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia>
     <FormDia ref="formDia" @close="handleQuery"></FormDia>
     <files-dia ref="filesDia" @close="handleQuery"></files-dia>
-		<el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="30%"
+    <!-- 妫�楠岀粨鏋滈�夋嫨瀵硅瘽妗� -->
+    <el-dialog v-model="quickCheckVisible" title="妫�楠岀粨鏋�" width="30%" @close="closeQuickCheck">
+      <el-form :model="quickCheckForm" label-width="140px" label-position="top" ref="quickCheckRef">
+        <el-form-item label="妫�娴嬬粨鏋滐細" required>
+          <el-radio-group v-model="quickCheckForm.checkResult">
+            <el-radio value="鍚堟牸">鍚堟牸</el-radio>
+            <el-radio value="涓嶅悎鏍�">涓嶅悎鏍�</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="妫�楠屽憳锛�">
+          <el-select v-model="quickCheckForm.checkName" placeholder="璇烽�夋嫨" clearable style="width: 100%">
+            <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" :value="item.nickName"/>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="妫�娴嬫棩鏈燂細">
+          <el-date-picker
+            v-model="quickCheckForm.checkTime"
+            type="date"
+            placeholder="璇烽�夋嫨鏃ユ湡"
+            value-format="YYYY-MM-DD"
+            format="YYYY-MM-DD"
+            clearable
+            style="width: 100%"
+          />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="handleQuickCheckConfirm">纭</el-button>
+          <el-button @click="closeQuickCheck">鍙栨秷</el-button>
+        </div>
+      </template>
+    </el-dialog>
+    <el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="30%"
 							 @close="closeDia">
-			<el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
-				<el-form-item label="妫�楠屽憳锛�" prop="checkName">
-					<el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable>
-						<el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
-											 :value="item.nickName"/>
-					</el-select>
-				</el-form-item>
-			</el-form>
-			<template #footer>
-				<div class="dialog-footer">
-					<el-button type="primary" @click="submitForm">纭</el-button>
-					<el-button @click="closeDia">鍙栨秷</el-button>
-				</div>
-			</template>
-		</el-dialog>
+				<el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
+					<el-form-item label="妫�楠屽憳锛�" prop="checkName">
+						<el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable>
+							<el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
+												 :value="item.nickName"/>
+						</el-select>
+					</el-form-item>
+				</el-form>
+				<template #footer>
+					<div class="dialog-footer">
+						<el-button type="primary" @click="submitForm">纭</el-button>
+						<el-button @click="closeDia">鍙栨秷</el-button>
+					</div>
+				</template>
+			</el-dialog>
   </div>
 </template>
 
@@ -159,10 +192,10 @@
     width: 280,
     operation: [
       {
-        name: "缂栬緫",
+        name: "妫�楠�",
         type: "text",
         clickFun: (row) => {
-          openForm("edit", row);
+          openQuickCheck(row);
         },
 				disabled: (row) => {
 					// 宸叉彁浜ゅ垯绂佺敤
@@ -181,43 +214,43 @@
           openFilesFormDia(row);
         },
       },
-			{
-				name: "鎻愪氦",
-				type: "text",
-				clickFun: (row) => {
-					submit(row.id);
-				},
-				disabled: (row) => {
-					// 宸叉彁浜ゅ垯绂佺敤
-					if (row.inspectState == 1) return true;
-					// 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
-					if (row.checkName) {
-						return row.checkName !== userStore.nickName;
-					}
-					return false;
-				}
-			},
-			{
-				name: "鍒嗛厤妫�楠屽憳",
-				type: "text",
-				clickFun: (row) => {
-					if (!row.checkName) {
-						open(row)
-					} else {
-						proxy.$modal.msgError("妫�楠屽憳宸插瓨鍦�");
+				{
+					name: "鎻愪氦",
+					type: "text",
+					clickFun: (row) => {
+						submit(row.id);
+					},
+					disabled: (row) => {
+						// 宸叉彁浜ゅ垯绂佺敤
+						if (row.inspectState == 1) return true;
+						// 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
+						if (row.checkName) {
+							return row.checkName !== userStore.nickName;
+						}
+						return false;
 					}
 				},
-				disabled: (row) => {
-					return row.inspectState == 1 || row.checkName;
-				}
-			},
-			{
-				name: "涓嬭浇",
-				type: "text",
-				clickFun: (row) => {
-					downLoadFile(row);
+				{
+					name: "鍒嗛厤妫�楠屽憳",
+					type: "text",
+					clickFun: (row) => {
+						if (!row.checkName) {
+							open(row)
+						} else {
+							proxy.$modal.msgError("妫�楠屽憳宸插瓨鍦�");
+						}
+					},
+					disabled: (row) => {
+						return row.inspectState == 1 || row.checkName;
+					}
 				},
-			},
+				{
+					name: "涓嬭浇",
+					type: "text",
+					clickFun: (row) => {
+						downLoadFile(row);
+					},
+				},
     ],
   },
 ]);
@@ -240,6 +273,13 @@
 	checkName: ""
 });
 const dialogFormVisible = ref(false);
+const quickCheckVisible = ref(false);
+const quickCheckForm = ref({
+	checkResult: "鍚堟牸",
+	checkName: "",
+	checkTime: ""
+});
+const quickCheckRef = ref(null);
 
 const changeDaterange = (value) => {
   searchForm.value.entryDateStart = undefined;
@@ -378,17 +418,86 @@
 			type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
 		})
 		const downloadUrl = window.URL.createObjectURL(blob)
-		
+
 		const link = document.createElement('a')
 		link.href = downloadUrl
 		link.download = '鍘熸潗鏂欐楠屾姤鍛�.docx'
 		document.body.appendChild(link)
 		link.click()
-		
+
 		document.body.removeChild(link)
 		window.URL.revokeObjectURL(downloadUrl)
 	})
 };
+
+// 鎵撳紑妫�楠岀粨鏋滈�夋嫨瀵硅瘽妗�
+const openQuickCheck = async (row) => {
+	currentRow.value = row;
+	// 鍔犺浇鐢ㄦ埛鍒楄〃
+	try {
+		const userLists = await userListNoPage();
+		userList.value = userLists.data || [];
+	} catch (e) {
+		console.error("鍔犺浇妫�楠屽憳鍒楄〃澶辫触", e);
+		userList.value = [];
+	}
+	// 璁剧疆榛樿鍊�
+	quickCheckForm.value = {
+		checkResult: "鍚堟牸",
+		checkName: userStore.nickName || "",
+		checkTime: dayjs().format("YYYY-MM-DD")
+	};
+	quickCheckVisible.value = true;
+};
+
+// 鍏抽棴妫�楠岀粨鏋滈�夋嫨瀵硅瘽妗�
+const closeQuickCheck = () => {
+	quickCheckVisible.value = false;
+	quickCheckForm.value = {
+		checkResult: "鍚堟牸",
+		checkName: "",
+		checkTime: ""
+	};
+};
+
+// 纭妫�楠岀粨鏋�
+const handleQuickCheckConfirm = () => {
+	if (!quickCheckForm.value.checkResult) {
+		proxy.$modal.msgWarning("璇烽�夋嫨妫�娴嬬粨鏋�");
+		return;
+	}
+	if (!quickCheckForm.value.checkName) {
+		proxy.$modal.msgWarning("璇烽�夋嫨妫�楠屽憳");
+		return;
+	}
+	if (!quickCheckForm.value.checkTime) {
+		proxy.$modal.msgWarning("璇烽�夋嫨妫�娴嬫棩鏈�");
+		return;
+	}
+
+	if (quickCheckForm.value.checkResult === "鍚堟牸") {
+		// 鍚堟牸锛氱洿鎺ユ彁浜�
+		const data = {
+			id: currentRow.value.id,
+			checkResult: "鍚堟牸",
+			checkName: quickCheckForm.value.checkName,
+			checkTime: quickCheckForm.value.checkTime,
+			inspectType: 2
+		};
+		qualityInspectUpdate(data).then(res => {
+			proxy.$modal.msgSuccess("妫�楠屾垚鍔�");
+			closeQuickCheck();
+			getList();
+		});
+	} else {
+		// 涓嶅悎鏍硷細鎵撳紑璇︾粏濉啓椤甸潰
+		closeQuickCheck();
+		nextTick(() => {
+			formDia.value?.openDialog("edit", currentRow.value, "涓嶅悎鏍�");
+		});
+	}
+};
+
 onMounted(() => {
   getList();
 });
diff --git a/src/views/qualityManagement/processInspection/components/formDia.vue b/src/views/qualityManagement/processInspection/components/formDia.vue
index c1185d2..1c89f65 100644
--- a/src/views/qualityManagement/processInspection/components/formDia.vue
+++ b/src/views/qualityManagement/processInspection/components/formDia.vue
@@ -216,7 +216,7 @@
 const modelOptions = ref([]);
 
 // 鎵撳紑寮规
-const openDialog = async (type, row) => {
+const openDialog = async (type, row, defaultCheckResult = "") => {
 	operationType.value = type;
 	getOptions().then((res) => {
 		supplierList.value = res.data;
@@ -231,7 +231,7 @@
 	}
 	let userLists = await userListNoPage();
 	userList.value = userLists.data;
-	// 鍏堥噸缃〃鍗曟暟鎹紙淇濇寔瀛楁瀹屾暣锛岄伩鍏嶅脊绐楅娆℃覆鏌撴椂瑙﹀彂蹇呭~绾㈡鈥滈棯涓�涓嬧�濓級
+	// 鍏堥噸缃〃鍗曟暟鎹紙淇濇寔瀛楁瀹屾暣锛岄伩鍏嶅脊绐楅娆℃覆鏌撴椂瑙﹀彂蹇呭~绾㈡"闂竴涓�"锛�
 	form.value = {
 		checkTime: "",
 		process: "",
@@ -244,7 +244,7 @@
 		unit: "",
 		quantity: "",
 		checkCompany: "",
-		checkResult: "",
+		checkResult: defaultCheckResult || "",
 	}
 	testStandardOptions.value = [];
 	tableData.value = [];
@@ -255,6 +255,10 @@
 		const savedTestStandardId = row.testStandardId;
 		// 鍏堣缃〃鍗曟暟鎹紝浣嗘殏鏃舵竻绌� testStandardId锛岀瓑閫夐」鍔犺浇瀹屾垚鍚庡啀璁剧疆
 		form.value = {...row, testStandardId: ''}
+		// 濡傛灉浼犲叆浜嗛粯璁ゆ娴嬬粨鏋滐紝瑕嗙洊row涓殑鍊�
+		if (defaultCheckResult) {
+			form.value.checkResult = defaultCheckResult;
+		}
 		currentProductId.value = row.productId || 0
 		// 鍏抽敭锛氱紪杈戞椂鍔犺浇瑙勬牸鍨嬪彿涓嬫媺閫夐」锛屾墠鑳藉弽鏄� productModelId
 		if (currentProductId.value) {
diff --git a/src/views/qualityManagement/processInspection/index.vue b/src/views/qualityManagement/processInspection/index.vue
index cbeab71..6bfa7fb 100644
--- a/src/views/qualityManagement/processInspection/index.vue
+++ b/src/views/qualityManagement/processInspection/index.vue
@@ -40,23 +40,56 @@
     <InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia>
     <FormDia ref="formDia" @close="handleQuery"></FormDia>
     <files-dia ref="filesDia" @close="handleQuery"></files-dia>
-		<el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="30%"
+    <!-- 妫�楠岀粨鏋滈�夋嫨瀵硅瘽妗� -->
+    <el-dialog v-model="quickCheckVisible" title="妫�楠岀粨鏋�" width="30%" @close="closeQuickCheck">
+      <el-form :model="quickCheckForm" label-width="140px" label-position="top" ref="quickCheckRef">
+        <el-form-item label="妫�娴嬬粨鏋滐細" required>
+          <el-radio-group v-model="quickCheckForm.checkResult">
+            <el-radio value="鍚堟牸">鍚堟牸</el-radio>
+            <el-radio value="涓嶅悎鏍�">涓嶅悎鏍�</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="妫�楠屽憳锛�">
+          <el-select v-model="quickCheckForm.checkName" placeholder="璇烽�夋嫨" clearable style="width: 100%">
+            <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" :value="item.nickName"/>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="妫�娴嬫棩鏈燂細">
+          <el-date-picker
+            v-model="quickCheckForm.checkTime"
+            type="date"
+            placeholder="璇烽�夋嫨鏃ユ湡"
+            value-format="YYYY-MM-DD"
+            format="YYYY-MM-DD"
+            clearable
+            style="width: 100%"
+          />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="handleQuickCheckConfirm">纭</el-button>
+          <el-button @click="closeQuickCheck">鍙栨秷</el-button>
+        </div>
+      </template>
+    </el-dialog>
+    <el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="30%"
 							 @close="closeDia">
-			<el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
-				<el-form-item label="妫�楠屽憳锛�" prop="checkName">
-					<el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable>
-						<el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
-											 :value="item.nickName"/>
-					</el-select>
-				</el-form-item>
-			</el-form>
-			<template #footer>
-				<div class="dialog-footer">
-					<el-button type="primary" @click="submitForm">纭</el-button>
-					<el-button @click="closeDia">鍙栨秷</el-button>
-				</div>
-			</template>
-		</el-dialog>
+				<el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
+					<el-form-item label="妫�楠屽憳锛�" prop="checkName">
+						<el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable>
+							<el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
+												 :value="item.nickName"/>
+						</el-select>
+					</el-form-item>
+				</el-form>
+				<template #footer>
+					<div class="dialog-footer">
+						<el-button type="primary" @click="submitForm">纭</el-button>
+						<el-button @click="closeDia">鍙栨秷</el-button>
+					</div>
+				</template>
+			</el-dialog>
   </div>
 </template>
 
@@ -164,10 +197,10 @@
     width: 280,
     operation: [
       {
-        name: "缂栬緫",
+        name: "妫�楠�",
         type: "text",
         clickFun: (row) => {
-          openForm("edit", row);
+          openQuickCheck(row);
         },
 				disabled: (row) => {
 					// 宸叉彁浜ゅ垯绂佺敤
@@ -186,43 +219,43 @@
           openFilesFormDia(row);
         },
       },
-			{
-				name: "鎻愪氦",
-				type: "text",
-				clickFun: (row) => {
-					submit(row.id);
-				},
-				disabled: (row) => {
-					// 宸叉彁浜ゅ垯绂佺敤
-					if (row.inspectState == 1) return true;
-					// 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
-					if (row.checkName) {
-						return row.checkName !== userStore.nickName;
-					}
-					return false;
-				}
-			},
-			{
-				name: "鍒嗛厤妫�楠屽憳",
-				type: "text",
-				clickFun: (row) => {
-					if (!row.checkName) {
-						open(row)
-					} else {
-						proxy.$modal.msgError("妫�楠屽憳宸插瓨鍦�");
+				{
+					name: "鎻愪氦",
+					type: "text",
+					clickFun: (row) => {
+						submit(row.id);
+					},
+					disabled: (row) => {
+						// 宸叉彁浜ゅ垯绂佺敤
+						if (row.inspectState == 1) return true;
+						// 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
+						if (row.checkName) {
+							return row.checkName !== userStore.nickName;
+						}
+						return false;
 					}
 				},
-				disabled: (row) => {
-					return row.inspectState == 1 || row.checkName;
-				}
-			},
-			{
-				name: "涓嬭浇",
-				type: "text",
-				clickFun: (row) => {
-					downLoadFile(row);
+				{
+					name: "鍒嗛厤妫�楠屽憳",
+					type: "text",
+					clickFun: (row) => {
+						if (!row.checkName) {
+							open(row)
+						} else {
+							proxy.$modal.msgError("妫�楠屽憳宸插瓨鍦�");
+						}
+					},
+					disabled: (row) => {
+						return row.inspectState == 1 || row.checkName;
+					}
 				},
-			},
+				{
+					name: "涓嬭浇",
+					type: "text",
+					clickFun: (row) => {
+						downLoadFile(row);
+					},
+				},
     ],
   },
 ]);
@@ -235,6 +268,13 @@
 const form = ref({
 	checkName: ""
 });
+const quickCheckVisible = ref(false);
+const quickCheckForm = ref({
+	checkResult: "鍚堟牸",
+	checkName: "",
+	checkTime: ""
+});
+const quickCheckRef = ref(null);
 const page = reactive({
   current: 1,
   size: 100,
@@ -363,13 +403,13 @@
 			type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
 		})
 		const downloadUrl = window.URL.createObjectURL(blob)
-		
+
 		const link = document.createElement('a')
 		link.href = downloadUrl
 		link.download = '杩囩▼妫�楠屾姤鍛�.docx'
 		document.body.appendChild(link)
 		link.click()
-		
+
 		document.body.removeChild(link)
 		window.URL.revokeObjectURL(downloadUrl)
 	})
@@ -388,6 +428,75 @@
         proxy.$modal.msg("宸插彇娑�");
       });
 };
+
+// 鎵撳紑妫�楠岀粨鏋滈�夋嫨瀵硅瘽妗�
+const openQuickCheck = async (row) => {
+	currentRow.value = row;
+	// 鍔犺浇鐢ㄦ埛鍒楄〃
+	try {
+		const userLists = await userListNoPage();
+		userList.value = userLists.data || [];
+	} catch (e) {
+		console.error("鍔犺浇妫�楠屽憳鍒楄〃澶辫触", e);
+		userList.value = [];
+	}
+	// 璁剧疆榛樿鍊�
+	quickCheckForm.value = {
+		checkResult: "鍚堟牸",
+		checkName: userStore.nickName || "",
+		checkTime: dayjs().format("YYYY-MM-DD")
+	};
+	quickCheckVisible.value = true;
+};
+
+// 鍏抽棴妫�楠岀粨鏋滈�夋嫨瀵硅瘽妗�
+const closeQuickCheck = () => {
+	quickCheckVisible.value = false;
+	quickCheckForm.value = {
+		checkResult: "鍚堟牸",
+		checkName: "",
+		checkTime: ""
+	};
+};
+
+// 纭妫�楠岀粨鏋�
+const handleQuickCheckConfirm = () => {
+	if (!quickCheckForm.value.checkResult) {
+		proxy.$modal.msgWarning("璇烽�夋嫨妫�娴嬬粨鏋�");
+		return;
+	}
+	if (!quickCheckForm.value.checkName) {
+		proxy.$modal.msgWarning("璇烽�夋嫨妫�楠屽憳");
+		return;
+	}
+	if (!quickCheckForm.value.checkTime) {
+		proxy.$modal.msgWarning("璇烽�夋嫨妫�娴嬫棩鏈�");
+		return;
+	}
+
+	if (quickCheckForm.value.checkResult === "鍚堟牸") {
+		// 鍚堟牸锛氱洿鎺ユ彁浜�
+		const data = {
+			id: currentRow.value.id,
+			checkResult: "鍚堟牸",
+			checkName: quickCheckForm.value.checkName,
+			checkTime: quickCheckForm.value.checkTime,
+			inspectType: 1
+		};
+		qualityInspectUpdate(data).then(res => {
+			proxy.$modal.msgSuccess("妫�楠屾垚鍔�");
+			closeQuickCheck();
+			getList();
+		});
+	} else {
+		// 涓嶅悎鏍硷細鎵撳紑璇︾粏濉啓椤甸潰
+		closeQuickCheck();
+		nextTick(() => {
+			formDia.value?.openDialog("edit", currentRow.value, "涓嶅悎鏍�");
+		});
+	}
+};
+
 onMounted(() => {
   getList();
 });
diff --git a/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
index 7e373bf..599e145 100644
--- a/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
+++ b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
@@ -228,7 +228,7 @@
 });
 
 // 鎵撳紑寮规
-const openDialog = async (type, row) => {
+const openDialog = async (type, row, defaultCheckResult = "") => {
   operationType.value = type;
   getOptions().then((res) => {
     supplierList.value = res.data;
@@ -241,7 +241,7 @@
     console.error("鍔犺浇妫�楠屽憳鍒楄〃澶辫触", e);
     userList.value = [];
   }
-  // 鍏堥噸缃〃鍗曟暟鎹紙淇濇寔瀛楁瀹屾暣锛岄伩鍏嶅脊绐楅娆℃覆鏌撴椂瑙﹀彂蹇呭~绾㈡鈥滈棯涓�涓嬧�濓級
+  // 鍏堥噸缃〃鍗曟暟鎹紙淇濇寔瀛楁瀹屾暣锛岄伩鍏嶅脊绐楅娆℃覆鏌撴椂瑙﹀彂蹇呭~绾㈡"闂竴涓�"锛�
 	form.value = {
     checkTime: "",
     supplier: "",
@@ -254,7 +254,7 @@
     unit: "",
     quantity: "",
     checkCompany: "",
-    checkResult: "",
+    checkResult: defaultCheckResult || "",
   }
   testStandardOptions.value = [];
   tableData.value = [];
@@ -264,6 +264,10 @@
     // 鍏堜繚瀛� testStandardId锛岄伩鍏嶈娓呯┖
     const savedTestStandardId = row.testStandardId;
     form.value = {...row}
+    // 濡傛灉浼犲叆浜嗛粯璁ゆ娴嬬粨鏋滐紝瑕嗙洊row涓殑鍊�
+    if (defaultCheckResult) {
+      form.value.checkResult = defaultCheckResult;
+    }
     currentProductId.value = row.productId || 0
     // 鍏抽敭锛氱紪杈戞椂鍔犺浇瑙勬牸鍨嬪彿涓嬫媺閫夐」锛屾墠鑳藉弽鏄� productModelId
     if (currentProductId.value) {
diff --git a/src/views/qualityManagement/rawMaterialInspection/index.vue b/src/views/qualityManagement/rawMaterialInspection/index.vue
index 26504b0..f97f991 100644
--- a/src/views/qualityManagement/rawMaterialInspection/index.vue
+++ b/src/views/qualityManagement/rawMaterialInspection/index.vue
@@ -41,6 +41,39 @@
     <InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia>
     <FormDia ref="formDia" @close="handleQuery"></FormDia>
     <files-dia ref="filesDia" @close="handleQuery"></files-dia>
+    <!-- 妫�楠岀粨鏋滈�夋嫨瀵硅瘽妗� -->
+    <el-dialog v-model="quickCheckVisible" title="妫�楠岀粨鏋�" width="30%" @close="closeQuickCheck">
+      <el-form :model="quickCheckForm" label-width="140px" label-position="top" ref="quickCheckRef">
+        <el-form-item label="妫�娴嬬粨鏋滐細" required>
+          <el-radio-group v-model="quickCheckForm.checkResult">
+            <el-radio value="鍚堟牸">鍚堟牸</el-radio>
+            <el-radio value="涓嶅悎鏍�">涓嶅悎鏍�</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="妫�楠屽憳锛�">
+          <el-select v-model="quickCheckForm.checkName" placeholder="璇烽�夋嫨" clearable style="width: 100%">
+            <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" :value="item.nickName"/>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="妫�娴嬫棩鏈燂細">
+          <el-date-picker
+            v-model="quickCheckForm.checkTime"
+            type="date"
+            placeholder="璇烽�夋嫨鏃ユ湡"
+            value-format="YYYY-MM-DD"
+            format="YYYY-MM-DD"
+            clearable
+            style="width: 100%"
+          />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="handleQuickCheckConfirm">纭</el-button>
+          <el-button @click="closeQuickCheck">鍙栨秷</el-button>
+        </div>
+      </template>
+    </el-dialog>
     <el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="30%"
                @close="closeDia">
       <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
@@ -166,10 +199,10 @@
     width: 280,
     operation: [
       {
-        name: "缂栬緫",
+        name: "妫�楠�",
         type: "text",
         clickFun: (row) => {
-          openForm("edit", row);
+          openQuickCheck(row);
         },
 				disabled: (row) => {
 					// 宸叉彁浜ゅ垯绂佺敤
@@ -236,6 +269,13 @@
 const form = ref({
   checkName: ""
 });
+const quickCheckVisible = ref(false);
+const quickCheckForm = ref({
+  checkResult: "鍚堟牸",
+  checkName: "",
+  checkTime: ""
+});
+const quickCheckRef = ref(null);
 const page = reactive({
   current: 1,
   size: 100,
@@ -390,6 +430,74 @@
   })
 };
 
+// 鎵撳紑妫�楠岀粨鏋滈�夋嫨瀵硅瘽妗�
+const openQuickCheck = async (row) => {
+  currentRow.value = row;
+  // 鍔犺浇鐢ㄦ埛鍒楄〃
+  try {
+    const userLists = await userListNoPage();
+    userList.value = userLists.data || [];
+  } catch (e) {
+    console.error("鍔犺浇妫�楠屽憳鍒楄〃澶辫触", e);
+    userList.value = [];
+  }
+  // 璁剧疆榛樿鍊�
+  quickCheckForm.value = {
+    checkResult: "鍚堟牸",
+    checkName: userStore.nickName || "",
+    checkTime: dayjs().format("YYYY-MM-DD")
+  };
+  quickCheckVisible.value = true;
+};
+
+// 鍏抽棴妫�楠岀粨鏋滈�夋嫨瀵硅瘽妗�
+const closeQuickCheck = () => {
+  quickCheckVisible.value = false;
+  quickCheckForm.value = {
+    checkResult: "鍚堟牸",
+    checkName: "",
+    checkTime: ""
+  };
+};
+
+// 纭妫�楠岀粨鏋�
+const handleQuickCheckConfirm = () => {
+  if (!quickCheckForm.value.checkResult) {
+    proxy.$modal.msgWarning("璇烽�夋嫨妫�娴嬬粨鏋�");
+    return;
+  }
+  if (!quickCheckForm.value.checkName) {
+    proxy.$modal.msgWarning("璇烽�夋嫨妫�楠屽憳");
+    return;
+  }
+  if (!quickCheckForm.value.checkTime) {
+    proxy.$modal.msgWarning("璇烽�夋嫨妫�娴嬫棩鏈�");
+    return;
+  }
+
+  if (quickCheckForm.value.checkResult === "鍚堟牸") {
+    // 鍚堟牸锛氱洿鎺ユ彁浜�
+    const data = {
+      id: currentRow.value.id,
+      checkResult: "鍚堟牸",
+      checkName: quickCheckForm.value.checkName,
+      checkTime: quickCheckForm.value.checkTime,
+      inspectType: 0
+    };
+    qualityInspectUpdate(data).then(res => {
+      proxy.$modal.msgSuccess("妫�楠屾垚鍔�");
+      closeQuickCheck();
+      getList();
+    });
+  } else {
+    // 涓嶅悎鏍硷細鎵撳紑璇︾粏濉啓椤甸潰
+    closeQuickCheck();
+    nextTick(() => {
+      formDia.value?.openDialog("edit", currentRow.value, "涓嶅悎鏍�");
+    });
+  }
+};
+
 onMounted(() => {
   getList();
 });

--
Gitblit v1.9.3