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