From 64a65ca91d1b21755088616af63db669515aff6d Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 14 八月 2025 15:16:31 +0800
Subject: [PATCH] 出厂检验修改

---
 src/views/qualityManagement/finalInspection/components/formDia.vue |   79 ++++++++++++++++++-
 src/views/qualityManagement/rawMaterialInspection/index.vue        |    8 +-
 src/views/qualityManagement/finalInspection/index.vue              |  142 +++++++++++++++++++++++++++++++++--
 src/views/qualityManagement/processInspection/index.vue            |    7 +
 4 files changed, 216 insertions(+), 20 deletions(-)

diff --git a/src/views/qualityManagement/finalInspection/components/formDia.vue b/src/views/qualityManagement/finalInspection/components/formDia.vue
index 34f5990..6547e3f 100644
--- a/src/views/qualityManagement/finalInspection/components/formDia.vue
+++ b/src/views/qualityManagement/finalInspection/components/formDia.vue
@@ -58,8 +58,10 @@
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="妫�楠屽憳锛�" prop="checkName">
-              <el-input v-model="form.checkName" placeholder="璇疯緭鍏�" clearable/>
-            
+							<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-col>
           <el-col :span="12">
@@ -77,6 +79,17 @@
           </el-col>
         </el-row>
       </el-form>
+			<PIMTable
+				rowKey="id"
+				:column="tableColumn"
+				:tableData="tableData"
+				:tableLoading="tableLoading"
+				height="400"
+			>
+				<template #slot="{ row }">
+					<el-input v-model="row.testValue" clearable/>
+				</template>
+			</PIMTable>
       <template #footer>
         <div class="dialog-footer">
           <el-button type="primary" @click="submitForm">纭</el-button>
@@ -92,6 +105,9 @@
 import {getOptions} from "@/api/procurementManagement/procurementLedger.js";
 import {productTreeList} from "@/api/basicData/product.js";
 import {qualityInspectAdd, qualityInspectUpdate} from "@/api/qualityManagement/rawMaterialInspection.js";
+import {userListNoPage} from "@/api/system/user.js";
+import {qualityInspectDetailByProductId} from "@/api/qualityManagement/metricMaintenance.js";
+import {qualityInspectParamInfo} from "@/api/qualityManagement/qualityInspectParam.js";
 const { proxy } = getCurrentInstance()
 const emit = defineEmits(['close'])
 
@@ -125,17 +141,50 @@
 const { form, rules } = toRefs(data);
 const supplierList = ref([]);
 const productOptions = ref([]);
+const tableColumn = ref([
+	{
+		label: "鎸囨爣",
+		prop: "parameterItem",
+	},
+	{
+		label: "鍗曚綅",
+		prop: "unit",
+	},
+	{
+		label: "鏍囧噯鍊�",
+		prop: "standardValue",
+	},
+	{
+		label: "鍐呮帶鍊�",
+		prop: "controlValue",
+	},
+	{
+		label: "妫�楠屽��",
+		prop: "testValue",
+		dataType: 'slot',
+		slot: 'slot',
+	},
+]);
+const tableData = ref([]);
+const tableLoading = ref(false);
+const userList = ref([]);
+const currentProductId = ref(0);
 
 // 鎵撳紑寮规
-const openDialog = (type, row) => {
+const openDialog = async (type, row) => {
   operationType.value = type;
   dialogFormVisible.value = true;
   getOptions().then((res) => {
     supplierList.value = res.data;
   });
+	let userLists = await userListNoPage();
+	userList.value = userLists.data;
+	form.value = {}
   getProductOptions();
   if (operationType.value === 'edit') {
     form.value = {...row}
+		currentProductId.value = row.productId || 0
+		getQualityInspectParamList(row.id)
   }
 }
 const getProductOptions = () => {
@@ -144,7 +193,11 @@
   });
 };
 const getModels = (value) => {
+	currentProductId.value = value
   form.value.productName = findNodeById(productOptions.value, value);
+	if (currentProductId) {
+		getList();
+	}
 };
 const findNodeById = (nodes, productId) => {
   for (let i = 0; i < nodes.length; i++) {
@@ -179,13 +232,19 @@
   proxy.$refs.formRef.validate(valid => {
     if (valid) {
       form.value.inspectType = 2
+			if (operationType.value === "add") {
+				tableData.value.forEach((item) => {
+					delete item.id
+				})
+			}
+			const data = {...form.value, qualityInspectParams: tableData.value}
       if (operationType.value === "add") {
-        qualityInspectAdd(form.value).then(res => {
+        qualityInspectAdd(data).then(res => {
           proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
           closeDia();
         })
       } else {
-        qualityInspectUpdate(form.value).then(res => {
+        qualityInspectUpdate(data).then(res => {
           proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
           closeDia();
         })
@@ -193,6 +252,16 @@
     }
   })
 }
+const getList = () => {
+	qualityInspectDetailByProductId(currentProductId.value).then(res => {
+		tableData.value = res.data;
+	})
+}
+const getQualityInspectParamList = (id) => {
+	qualityInspectParamInfo(id).then(res => {
+		tableData.value = res.data;
+	})
+}
 // 鍏抽棴寮规
 const closeDia = () => {
   proxy.resetForm("formRef");
diff --git a/src/views/qualityManagement/finalInspection/index.vue b/src/views/qualityManagement/finalInspection/index.vue
index e8dcee6..3f2595f 100644
--- a/src/views/qualityManagement/finalInspection/index.vue
+++ b/src/views/qualityManagement/finalInspection/index.vue
@@ -40,6 +40,23 @@
     <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%"
+							 @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>
   </div>
 </template>
 
@@ -49,9 +66,15 @@
 import InspectionFormDia from "@/views/qualityManagement/finalInspection/components/inspectionFormDia.vue";
 import FormDia from "@/views/qualityManagement/finalInspection/components/formDia.vue";
 import {ElMessageBox} from "element-plus";
-import {qualityInspectDel, qualityInspectListPage} from "@/api/qualityManagement/rawMaterialInspection.js";
+import {
+	downloadQualityInspect,
+	qualityInspectDel,
+	qualityInspectListPage, qualityInspectUpdate,
+	submitQualityInspect
+} from "@/api/qualityManagement/rawMaterialInspection.js";
 import FilesDia from "@/views/qualityManagement/finalInspection/components/filesDia.vue";
 import dayjs from "dayjs";
+import {userListNoPage} from "@/api/system/user.js";
 
 const data = reactive({
   searchForm: {
@@ -63,6 +86,9 @@
     entryDateStart: dayjs().format("YYYY-MM-DD"),
     entryDateEnd: dayjs().add(1, "day").format("YYYY-MM-DD"),
   },
+	rules: {
+		checkName: [{required: true, message: "璇烽�夋嫨", trigger: "change"}],
+	},
 });
 const { searchForm } = toRefs(data);
 const tableColumn = ref([
@@ -111,12 +137,23 @@
       }
     },
   },
+	{
+		label: "鎻愪氦鐘舵��",
+		prop: "inspectState",
+		formatData: (params) => {
+			if (params) {
+				return "宸叉彁浜�";
+			} else {
+				return "鏈彁浜�";
+			}
+		},
+	},
   {
     dataType: "action",
     label: "鎿嶄綔",
     align: "center",
     fixed: "right",
-    width: 190,
+    width: 280,
     operation: [
       {
         name: "缂栬緫",
@@ -124,13 +161,9 @@
         clickFun: (row) => {
           openForm("edit", row);
         },
-      },
-      {
-        name: "鏂板妫�楠岃褰�",
-        type: "text",
-        clickFun: (row) => {
-          openInspectionForm("edit", row);
-        },
+				disabled: (row) => {
+					return row.inspectState == 1;
+				}
       },
       {
         name: "闄勪欢",
@@ -139,12 +172,44 @@
           openFilesFormDia(row);
         },
       },
+			{
+				name: "鎻愪氦",
+				type: "text",
+				clickFun: (row) => {
+					submit(row.id);
+				},
+				disabled: (row) => {
+					return row.inspectState == 1;
+				}
+			},
+			{
+				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);
+				},
+			},
     ],
   },
 ]);
 const tableData = ref([]);
 const selectedRows = ref([]);
 const tableLoading = ref(false);
+const currentRow = ref(null)
 const page = reactive({
   current: 1,
   size: 100,
@@ -154,6 +219,11 @@
 const filesDia = ref()
 const inspectionFormDia = ref()
 const { proxy } = getCurrentInstance()
+const userList = ref([]);
+const form = ref({
+	checkName: ""
+});
+const dialogFormVisible = ref(false);
 
 const changeDaterange = (value) => {
   searchForm.value.entryDateStart = undefined;
@@ -249,6 +319,60 @@
         proxy.$modal.msg("宸插彇娑�");
       });
 };
+
+// 鎻愪环
+const submit = async (id) => {
+	const res = await submitQualityInspect({id: id})
+	if (res.code === 200) {
+		proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
+		getList();
+	}
+}
+
+// 鍏抽棴寮规
+const closeDia = () => {
+	proxy.resetForm("formRef");
+	dialogFormVisible.value = false;
+};
+
+const submitForm = () => {
+	if (currentRow.value) {
+		const data = {
+			...form.value,
+			id: currentRow.value.id
+		}
+		qualityInspectUpdate(data).then(res => {
+			proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
+			closeDia();
+			getList();
+		})
+	}
+};
+
+const open = async (row) => {
+	let userLists = await userListNoPage();
+	userList.value = userLists.data;
+	currentRow.value = row
+	dialogFormVisible.value = true
+}
+
+const downLoadFile = (row) => {
+	downloadQualityInspect({ id: row.id }).then((blobData) => {
+		const blob = new Blob([blobData], {
+			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)
+	})
+};
 onMounted(() => {
   getList();
 });
diff --git a/src/views/qualityManagement/processInspection/index.vue b/src/views/qualityManagement/processInspection/index.vue
index 6908322..6f5ddec 100644
--- a/src/views/qualityManagement/processInspection/index.vue
+++ b/src/views/qualityManagement/processInspection/index.vue
@@ -40,7 +40,7 @@
     <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="70%"
+		<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">
@@ -86,6 +86,9 @@
     entryDateStart: dayjs().format("YYYY-MM-DD"),
     entryDateEnd: dayjs().add(1, "day").format("YYYY-MM-DD"),
   },
+	rules: {
+		checkName: [{required: true, message: "璇烽�夋嫨", trigger: "change"}],
+	},
 });
 const { searchForm } = toRefs(data);
 const tableColumn = ref([
@@ -195,7 +198,7 @@
 					}
 				},
 				disabled: (row) => {
-					return row.inspectState == 1 || row.checkName !== '';
+					return row.inspectState == 1 || row.checkName;
 				}
 			},
 			{
diff --git a/src/views/qualityManagement/rawMaterialInspection/index.vue b/src/views/qualityManagement/rawMaterialInspection/index.vue
index 21cf85f..7536274 100644
--- a/src/views/qualityManagement/rawMaterialInspection/index.vue
+++ b/src/views/qualityManagement/rawMaterialInspection/index.vue
@@ -41,7 +41,7 @@
     <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="70%"
+    <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">
@@ -199,9 +199,9 @@
             proxy.$modal.msgError("妫�楠屽憳宸插瓨鍦�");
           }
         },
-        disabled: (row) => {
-          return row.inspectState;
-        }
+				disabled: (row) => {
+					return row.inspectState == 1 || row.checkName;
+				}
       },
       {
         name: "涓嬭浇",

--
Gitblit v1.9.3