From 2d3530a7c11557a40807ad7c0b9e302ce6ce3a9f Mon Sep 17 00:00:00 2001
From: hsy <1029150275@qq.com>
Date: 星期五, 28 八月 2026 10:16:32 +0800
Subject: [PATCH] feat: 综合业务模块页面重构与交互完善

---
 src/views/equipmentManagement/measurementEquipment/components/calibrationDia.vue |  119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 118 insertions(+), 1 deletions(-)

diff --git a/src/views/equipmentManagement/measurementEquipment/components/calibrationDia.vue b/src/views/equipmentManagement/measurementEquipment/components/calibrationDia.vue
index 923dd2c..298ec84 100644
--- a/src/views/equipmentManagement/measurementEquipment/components/calibrationDia.vue
+++ b/src/views/equipmentManagement/measurementEquipment/components/calibrationDia.vue
@@ -47,6 +47,7 @@
 								type="date"
 								placeholder="璇烽�夋嫨"
 								clearable
+								@change="calculateValidUntil"
 							/>
 						</el-form-item>
 					</el-col>
@@ -67,6 +68,85 @@
 				</el-row>
 				<el-row :gutter="30">
 					<el-col :span="12">
+						<el-form-item label="鏈夋晥鏈熻嚦锛�" prop="validUntil">
+							<el-input
+								v-model="form.validUntil"
+								placeholder="鑷姩璁$畻"
+								disabled
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="婧簮/鏍告煡绫诲瀷锛�" prop="traceabilityType">
+							<el-input
+								v-model="form.traceabilityType"
+								placeholder="璇疯緭鍏�"
+								clearable
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row :gutter="30">
+					<el-col :span="12">
+						<el-form-item label="瀹炴柦鏈烘瀯锛�" prop="implementingAgency">
+							<el-input
+								v-model="form.implementingAgency"
+								placeholder="璇疯緭鍏�"
+								clearable
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="璇佷功缂栧彿锛�" prop="certificateNumber">
+							<el-input
+								v-model="form.certificateNumber"
+								placeholder="璇疯緭鍏�"
+								clearable
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row :gutter="30">
+					<el-col :span="12">
+						<el-form-item label="鏍稿績缁撴灉锛�" prop="coreResult">
+							<el-input
+								v-model="form.coreResult"
+								placeholder="璇疯緭鍏�"
+								clearable
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="缁撴灉纭锛�" prop="resultConfirmation">
+							<el-input
+								v-model="form.resultConfirmation"
+								placeholder="璇疯緭鍏�"
+								clearable
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row :gutter="30">
+					<el-col :span="12">
+						<el-form-item label="纭浜猴細" prop="confirmerId">
+							<el-select
+								v-model="form.confirmerId"
+								placeholder="璇烽�夋嫨"
+								filterable
+								default-first-option
+								:reserve-keyword="false"
+								clearable
+							>
+								<el-option
+									v-for="item in userList"
+									:key="item.userId"
+									:label="item.nickName"
+									:value="item.userId"
+								></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
 						<el-form-item label="褰曞叆浜猴細" prop="userId">
 							<el-select
 								v-model="form.userId"
@@ -85,6 +165,8 @@
 							</el-select>
 						</el-form-item>
 					</el-col>
+				</el-row>
+				<el-row :gutter="30">
 					<el-col :span="12">
 						<el-form-item label="褰曞叆鏃ユ湡锛�" prop="entryDate">
 							<el-date-picker
@@ -128,6 +210,7 @@
 </template>
 
 <script setup>
+import dayjs from "dayjs";
 import {ref, reactive, toRefs, getCurrentInstance} from "vue";
 import useUserStore from "@/store/modules/user.js";
 import {userListNoPageByTenantId} from "@/api/system/user.js";
@@ -150,7 +233,14 @@
 		recordDate: "",
 		userId: "",
 		entryDate: "",
-    tempFileIds: []
+    tempFileIds: [],
+		traceabilityType: "",
+		implementingAgency: "",
+		certificateNumber: "",
+		coreResult: "",
+		resultConfirmation: "",
+		validUntil: "",
+		confirmerId: ""
 	},
 	rules: {
 		code: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
@@ -211,6 +301,13 @@
 	if (type === "edit") {
 		form.value.valid = row.valid;
 		form.value.recordDate = row.recordDate;
+		form.value.traceabilityType = row.traceabilityType;
+		form.value.implementingAgency = row.implementingAgency;
+		form.value.certificateNumber = row.certificateNumber;
+		form.value.coreResult = row.coreResult;
+		form.value.resultConfirmation = row.resultConfirmation;
+		form.value.validUntil = row.validUntil;
+		form.value.confirmerId = row.confirmerId;
     fileList.value = row.commonFiles;
 	}
 	if(type === "add"){
@@ -219,6 +316,14 @@
 	if(type === "verifying"){
 		form.value.valid = row.valid;
 		form.value.recordDate = row.mostDate;
+		// Initialize empty for new verifying record
+		form.value.traceabilityType = "";
+		form.value.implementingAgency = "";
+		form.value.certificateNumber = "";
+		form.value.coreResult = "";
+		form.value.resultConfirmation = "";
+		form.value.confirmerId = "";
+		calculateValidUntil();
 	}
 
 	form.value.id = row.id;
@@ -232,12 +337,14 @@
 const handleValidInput = (value) => {
 	if (value === '' || value === null || value === undefined) {
 		form.value.valid = '';
+		calculateValidUntil();
 		return;
 	}
 	// 杞崲涓哄瓧绗︿覆骞剁Щ闄ゆ墍鏈夐潪鏁板瓧瀛楃锛堝寘鎷礋鍙枫�佸皬鏁扮偣绛夛級
 	const numStr = String(value).replace(/[^0-9]/g, '');
 	if (numStr === '') {
 		form.value.valid = '';
+		calculateValidUntil();
 		return;
 	}
 	const numValue = parseInt(numStr, 10);
@@ -247,6 +354,16 @@
 	} else {
 		form.value.valid = '';
 	}
+	calculateValidUntil();
+}
+
+// 鑷姩璁$畻鏈夋晥鏈熻嚦
+const calculateValidUntil = () => {
+	if (form.value.recordDate && form.value.valid) {
+		form.value.validUntil = dayjs(form.value.recordDate).add(form.value.valid, 'day').format('YYYY-MM-DD');
+	} else {
+		form.value.validUntil = '';
+	}
 }
 
 const submitForm = () => {

--
Gitblit v1.9.3