From a52ac50ffc5f3b369eb689dd734bfb8a4bb988a4 Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期四, 15 十月 2026 11:41:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/CNAS/resourceDemand/device/component/management.vue |  818 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 492 insertions(+), 326 deletions(-)

diff --git a/src/views/CNAS/resourceDemand/device/component/management.vue b/src/views/CNAS/resourceDemand/device/component/management.vue
index 87c9645..b658874 100644
--- a/src/views/CNAS/resourceDemand/device/component/management.vue
+++ b/src/views/CNAS/resourceDemand/device/component/management.vue
@@ -37,156 +37,203 @@
 		</div>
 		<el-dialog :title="isUp ? '璁惧璇︽儏' : '妗f淇'" v-model="dialogVisible" width="70%" top="5vh"
 			:before-close="handleClose">
-			<el-row style="display:flex;justify-content: space-around;max-height: 75vh;overflow-y: auto;">
-				<!-- 宸﹁竟甯冨眬 -->
-				<el-col :span="7">
-					<el-col>
-						<!-- 鍥剧墖 -->
-						<el-image class="img" style="width:100%;height: 320px;marginBottom:16px"
-							:src="javaApi + '/img/' + formData.imageUpload">
-							<template #error><div  class="image-error" style="width: calc(100% -2px);
+			<div style="max-height: 75vh;overflow-y: auto;">
+			<!-- 椤堕儴锛氬浘鐗� + 鍩烘湰淇℃伅 -->
+			<el-row>
+				<el-col :span="7" style="padding-right: 20px;">
+					<!-- 鍥剧墖 -->
+					<el-image class="img" style="width:100%;height: 320px"
+						:src="javaApi + '/img/' + formData.imageUpload">
+						<template #error><div  class="image-error" style="width: calc(100% -2px);
             height: 318px;
             border-radius: 16px;
             display: flex;
             align-items: center;
             justify-content: center;
-            border: 1px solid #EEEEEE;">
-								<lims-icon name="el-icon-picture-outline" style="font-size:60px;color:#666666;"></lims-icon>
-							</div></template>
-						</el-image>
-						<!-- 琛ㄥ崟 -->
-						<el-form :label-position="labelPosition" :model="formData" label-width="120px">
+            border: 1px solid var(--lims-divider);">
+							<lims-icon name="el-icon-picture-outline" style="font-size:60px;color:var(--lims-text-2);"></lims-icon>
+						</div></template>
+					</el-image>
+					<!-- 鍥剧墖涓婁紶 -->
+					<div style="border: 1px solid var(--el-border-color);border-radius:4px;height:32px;lineHeight:32px;display:flex;justify-content: space-around;font-size: 13px;margin-top:12px;">
+						<div v-show="formData.imageName" class="picName">{{ formData.imageName }}</div>
+						<el-upload :disabled="isUp" :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false"
+							accept='image/jpg,image/jpeg,image/png' :headers="uploadHeader" :on-change="beforeUpload"
+							:on-error="onError" ref='upload'>
+							<el-button link type="primary" style="height:30px;padding-top:8px">涓婁紶</el-button>
+						</el-upload>
+					</div>
+				</el-col>
+				<el-col :span="17">
+					<!-- 鍩烘湰淇℃伅 -->
+					<div class="section-title" style="margin-top: 0;">鍩烘湰淇℃伅</div>
+					<el-form :label-position="labelPosition" :model="formData" label-width="120px">
+						<div class="form-row">
 							<el-form-item label="浠櫒鍚嶇О:" required prop="deviceName">
 								<el-input :disabled="isUp" v-model="formData.deviceName" size="small"></el-input>
 							</el-form-item>
 							<el-form-item label="浠櫒鍚嶇ОEN:">
 								<el-input :disabled="isUp" v-model="formData.enDeviceName" size="small"></el-input>
 							</el-form-item>
+						</div>
+						<div class="form-row">
 							<el-form-item label="瑙勬牸鍨嬪彿:" required>
 								<el-input :disabled="isUp" v-model="formData.specificationModel" size="small"></el-input>
 							</el-form-item>
 							<el-form-item label="鐢熶骇鍘傚:">
 								<el-input :disabled="isUp" v-model="formData.manufacturer" size="small"></el-input>
 							</el-form-item>
-						</el-form>
-					</el-col>
-				</el-col>
-				<!-- 涓棿甯冨眬 -->
-				<el-col :span="7">
-					<el-form :label-position="labelPosition" :model="formData" label-width="116px">
-						<el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:">
-							<el-input :disabled="isUp" v-model="formData.calibrationServices" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="璧勪骇缂栫爜:">
-							<el-input v-model="formData.assetCode" :disabled="isUp" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="浜у湴:">
-							<el-input v-model="formData.origin" :disabled="isUp" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="鍑哄巶缂栧彿:">
-							<el-input :disabled="isUp" v-model="formData.factoryNo" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="绠$悊缂栧彿:" required>
-							<el-input :disabled="isUp" v-model="formData.managementNumber" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="璐疆鏃ユ湡:">
-							<el-date-picker :disabled="isUp" style="width:100%" v-model="formData.acquisitionDate" type="date"
-								format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
-							</el-date-picker>
-						</el-form-item>
-						<el-form-item label="鏍″噯鏈夋晥鏈�:" required>
-							<el-date-picker :disabled="isUp" style="width:100%" v-model="formData.activationDate" type="date"
-								format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
-							</el-date-picker>
-						</el-form-item>
-						<el-form-item label="璐熻矗浜�:">
-							<el-select v-model="formData.equipmentManager" placeholder="璇烽�夋嫨" size="small" :disabled="isUp"
-								style="width:100%">
-								<el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label"
-									:value="item.value">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="瀛樻斁鐐�:">
-							<el-input :disabled="isUp" v-model="formData.storagePoint" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="鎶�鏈寚鏍�:">
-							<el-input :disabled="isUp" v-model="formData.technicalIndicators" :rows="7" type="textarea"
-								size="small"></el-input>
-						</el-form-item>
-					</el-form>
-				</el-col>
-				<!-- 鍙宠竟甯冨眬 -->
-				<el-col :span="7">
-					<el-form :label-position="labelPosition" :model="formData" label-width="140px" ref="ruleForm">
-						<!-- 瀹為獙瀹ゅ垪琛� -->
-						<el-form-item label="鎵�灞為儴闂�:" required>
-							<el-select :disabled="isUp" v-model="formData.subordinateDepartmentsId" placeholder="璇烽�夋嫨" size="small"
-								style="width:100%">
-								<el-option v-for="item in subordinateDepartmentsList" :key="item.value" :label="item.label"
-									:value="item.value">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="妫�娴嬮」鐩�:">
-							<el-cascader :disabled="isUp" v-model="formData.insProductIds" :options="options" :show-all-levels="false"
-								:props="props" placeholder="璇烽�夋嫨" size="small" style="width:100%;" :collapse-tags="!isUp" separator=","
-								filterable clearable></el-cascader>
-						</el-form-item>
-						<el-form-item label="鏈�杩戞牎鍑嗘棩鏈�:">
-							<el-date-picker :disabled="isUp" style="width:100%" v-model="formData.lastCalibrationDate"
-								format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
-							</el-date-picker>
-						</el-form-item>
-						<el-form-item label="涓嬫鏍″噯鏃ユ湡:">
-							<el-date-picker :disabled="isUp" style="width:100%" v-model="formData.nextCalibrationDate"
-								format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
-							</el-date-picker>
-						</el-form-item>
-						<el-form-item label="璁惧绫诲瀷:">
-							<el-select :disabled="isUp" v-model="formData.largeCategory" placeholder="璇烽�夋嫨" size="small"
-								style="width:100%">
-								<el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="鍗曚环(涓囧厓):">
-							<el-input :disabled="isUp" v-model="formData.unitPrice" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="褰撳墠鐘舵��:" required>
-							<el-select :disabled="isUp" v-model="formData.deviceStatus" placeholder="璇烽�夋嫨" size="small"
-								style="width:100%">
-								<el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" required>
-							<el-input :disabled="isUp" v-model="formData.calibrationDate" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="琚巿鏉冧汉:">
-							<el-select v-model="formData.authorizedPerson" multiple :disabled="isUp" placeholder="璇烽�夋嫨" size="small"
-								style="width:100%">
-								<el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label"
-									:value="item.value">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="鍥剧墖:">
-							<div
-								style="border: 1px solid #DCDFE6;border-radius:4px;height:32px;lineHeight:32px;display:flex;justify-content: space-around;font-size: 13px;">
-								<div v-show="formData.imageName" class="picName">{{ formData.imageName }}</div>
-								<el-upload :disabled="isUp" :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false"
-									accept='image/jpg,image/jpeg,image/png' :headers="uploadHeader" :on-change="beforeUpload"
-									:on-error="onError" ref='upload'>
-									<el-button link type="primary" style="height:30px;padding-top:8px">涓婁紶</el-button>
-								</el-upload>
-							</div>
-						</el-form-item>
+						</div>
+						<div class="form-row">
+							<el-form-item label="浜у湴:">
+								<el-input v-model="formData.origin" :disabled="isUp" size="small"></el-input>
+							</el-form-item>
+							<el-form-item label="鍑哄巶缂栧彿:">
+								<el-input :disabled="isUp" v-model="formData.factoryNo" size="small"></el-input>
+							</el-form-item>
+						</div>
+						<div class="form-row">
+							<el-form-item label="璧勪骇缂栫爜:">
+								<el-input v-model="formData.assetCode" :disabled="isUp" size="small"></el-input>
+							</el-form-item>
+							<el-form-item label="绠$悊缂栧彿:" required>
+								<el-input :disabled="isUp" v-model="formData.managementNumber" size="small"></el-input>
+							</el-form-item>
+						</div>
+						<div class="form-row">
+							<el-form-item label="璐疆鏃ユ湡:">
+								<el-date-picker :disabled="isUp" style="width:100%" v-model="formData.acquisitionDate" type="date"
+									format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
+								</el-date-picker>
+							</el-form-item>
+							<el-form-item label="鏍″噯鏈夋晥鏈�:" required>
+								<el-date-picker :disabled="isUp" style="width:100%" v-model="formData.activationDate" type="date"
+									format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
+								</el-date-picker>
+							</el-form-item>
+						</div>
+						<div class="form-row">
+							<el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:">
+								<el-select :disabled="isUp" v-model="formData.calibrationServices" clearable filterable size="small" style="width: 100%">
+									<el-option v-for="name in calibrationServiceOptions" :key="name" :label="name" :value="name"></el-option>
+								</el-select>
+							</el-form-item>
+							<div style="flex: 1;"></div>
+						</div>
 					</el-form>
 				</el-col>
 			</el-row>
+			<!-- 璁惧绠$悊 -->
+			<div class="section-title">璁惧绠$悊</div>
+			<el-form :label-position="labelPosition" :model="formData" label-width="120px">
+				<div class="form-row">
+					<el-form-item label="妫�娴嬮」鐩�:">
+						<el-cascader :disabled="isUp" v-model="formData.insProductIds" :options="options" :show-all-levels="false"
+							:props="props" placeholder="璇烽�夋嫨" size="small" style="width:100%;" :collapse-tags="!isUp" separator=","
+							filterable clearable></el-cascader>
+					</el-form-item>
+					<el-form-item label="璁惧绫诲瀷:">
+						<el-select :disabled="isUp" v-model="formData.largeCategory" placeholder="璇烽�夋嫨" size="small"
+							style="width:100%">
+							<el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+					<el-form-item label="鍗曚环(涓囧厓):">
+						<el-input :disabled="isUp" v-model="formData.unitPrice" size="small"></el-input>
+					</el-form-item>
+				</div>
+				<div class="form-row">
+					<el-form-item label="褰撳墠鐘舵��:" required>
+						<el-select :disabled="isUp" v-model="formData.deviceStatus" placeholder="璇烽�夋嫨" size="small"
+							style="width:100%">
+							<el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+					<el-form-item label="璐熻矗浜�:">
+						<el-select v-model="formData.equipmentManager" placeholder="璇烽�夋嫨" size="small" :disabled="isUp"
+							style="width:100%">
+							<el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+					<el-form-item label="琚巿鏉冧汉:">
+						<el-select v-model="formData.authorizedPerson" multiple :disabled="isUp" placeholder="璇烽�夋嫨" size="small"
+							style="width:100%">
+							<el-option v-for="item in inspectorList" :key="item.value" :label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+				</div>
+				<div class="form-row">
+					<el-form-item label="瀛樻斁鐐�:">
+						<el-input :disabled="isUp" v-model="formData.storagePoint" size="small"></el-input>
+					</el-form-item>
+					<div style="flex: 1;"></div>
+				</div>
+			</el-form>
+			<!-- 鏍″噯/淇濆吇/鏍告煡 鍛ㄦ湡淇℃伅 -->
+			<el-form :label-position="labelPosition" :model="formData" label-width="140px"
+				style="margin-top: 12px;border-top: 1px solid var(--lims-divider);padding-top: 4px;">
+				<div class="cycle-row">
+					<span class="cycle-title">鏍″噯淇℃伅</span>
+					<el-form-item label="鏈�杩戞牎鍑嗘棩鏈�:" class="cycle-item">
+						<el-date-picker :disabled="isUp" style="width:100%" v-model="formData.lastCalibrationDate" @change="calcNextDate(formData)"
+							format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
+						</el-date-picker>
+					</el-form-item>
+					<el-form-item label="涓嬫鏍″噯鏃ユ湡:" class="cycle-item">
+						<el-date-picker :disabled="true" style="width:100%" v-model="formData.nextCalibrationDate"
+							format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
+						</el-date-picker>
+					</el-form-item>
+					<el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" class="cycle-item" required>
+						<el-input :disabled="isUp" v-model="formData.calibrationDate" size="small" @change="calcNextDate(formData)"></el-input>
+					</el-form-item>
+				</div>
+				<div class="cycle-row">
+					<span class="cycle-title">淇濆吇淇℃伅</span>
+					<el-form-item label="鏈�杩戜繚鍏绘棩鏈�:" class="cycle-item">
+						<el-date-picker :disabled="isUp" style="width:100%" v-model="formData.lastMaintenanceDate" @change="calcNextDate(formData)"
+							format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
+						</el-date-picker>
+					</el-form-item>
+					<el-form-item label="涓嬫淇濆吇鏃ユ湡:" class="cycle-item">
+						<el-date-picker :disabled="true" style="width:100%" v-model="formData.nextMaintenanceDate"
+							format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
+						</el-date-picker>
+					</el-form-item>
+					<el-form-item label="淇濆吇鍛ㄦ湡锛堟湀锛�:" class="cycle-item">
+						<el-input :disabled="isUp" v-model="formData.maintenanceCycle" size="small" @change="calcNextDate(formData)"></el-input>
+					</el-form-item>
+				</div>
+				<div class="cycle-row">
+					<span class="cycle-title">鏍告煡淇℃伅</span>
+					<el-form-item label="鏈�杩戞牳鏌ユ棩鏈�:" class="cycle-item">
+						<el-date-picker :disabled="isUp" style="width:100%" v-model="formData.lastExamineDate" @change="calcNextDate(formData)"
+							format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
+						</el-date-picker>
+					</el-form-item>
+					<el-form-item label="涓嬫鏍告煡鏃ユ湡:" class="cycle-item">
+						<el-date-picker :disabled="true" style="width:100%" v-model="formData.nextExamineDate"
+							format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
+						</el-date-picker>
+					</el-form-item>
+					<el-form-item label="鏍告煡鍛ㄦ湡锛堟湀锛�:" class="cycle-item">
+						<el-input :disabled="isUp" v-model="formData.examineCycle" size="small" @change="calcNextDate(formData)"></el-input>
+					</el-form-item>
+				</div>
+			</el-form>
+			<!-- 鎶�鏈寚鏍� -->
+			<div class="section-title">鎶�鏈寚鏍�</div>
+			<el-input :disabled="isUp" v-model="formData.technicalIndicators" :rows="7" type="textarea"
+				size="small"></el-input>
+			</div>
 			<template #footer><span  class="dialog-footer">
-				<el-row v-if="!isUp">
+				<el-row v-if="!isUp" justify="end">
 					<el-button @click="handleClose">鍙� 娑�</el-button>
 					<el-button type="primary" @click="submitForm" :loading="upLoad">纭� 瀹�</el-button>
 				</el-row>
@@ -194,154 +241,168 @@
 		</el-dialog>
 		<!-- 鏂板-->
 		<el-dialog title="鏂板璁惧" top="5vh" v-model="dialogVisible2" width="70%" :before-close="handleClose2">
-			<el-row style="display:flex;justify-content: space-around;">
-				<!-- 宸﹁竟甯冨眬 -->
-				<el-col :span="7">
-					<el-col>
-						<!-- 鍥剧墖 -->
-						<el-image class="img" style="width:100%;height: 320px;margin-bottom:16px"
-							:src="javaApi + '/img/' + formData2.imageUpload">
-							<template #error><div  class="image-error" style="width: calc(100% -2px);
-          height: 318px;
-          border-radius: 16px;
-          display: flex;
-          align-items: center;
-          justify-content: center;
-          border: 1px solid #EEEEEE;">
-								<lims-icon name="el-icon-picture-outline" style="font-size:60px;color:#666666;"></lims-icon>
-							</div></template>
-						</el-image>
-						<!-- 琛ㄥ崟 -->
-						<el-form :label-position="labelPosition" :model="formData2" label-width="120px">
+			<div style="max-height: 75vh;overflow-y: auto;">
+			<!-- 椤堕儴锛氬浘鐗� + 鍩烘湰淇℃伅 -->
+			<el-row>
+				<el-col :span="7" style="padding-right: 20px;">
+					<!-- 鍥剧墖 -->
+					<el-image class="img" style="width:100%;height: 320px"
+						:src="javaApi + '/img/' + formData2.imageUpload">
+						<template #error><div  class="image-error" style="width: calc(100% -2px);
+            height: 318px;
+            border-radius: 16px;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            border: 1px solid var(--lims-divider);">
+							<lims-icon name="el-icon-picture-outline" style="font-size:60px;color:var(--lims-text-2);"></lims-icon>
+						</div></template>
+					</el-image>
+					<!-- 鍥剧墖涓婁紶 -->
+					<div style="border: 1px solid var(--el-border-color);border-radius:4px;height:32px;line-height:32px;display:flex;justify-content: space-around;font-size: 13px;margin-top:12px;">
+						<div v-show="formData2.imageName" class="picName">{{ formData2.imageName }}</div>
+						<el-upload :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false"
+							accept='image/jpg,image/jpeg,image/png' :headers="uploadHeader" :on-change="beforeUpload"
+							:on-error="onError" ref='upload'>
+							<el-button link type="primary" style="height:30px;padding-top:8px">涓婁紶</el-button>
+						</el-upload>
+					</div>
+				</el-col>
+				<el-col :span="17">
+					<!-- 鍩烘湰淇℃伅 -->
+					<div class="section-title" style="margin-top: 0;">鍩烘湰淇℃伅</div>
+					<el-form :label-position="labelPosition" :model="formData2" label-width="120px">
+						<div class="form-row">
 							<el-form-item label="浠櫒鍚嶇О:" required>
 								<el-input v-model="formData2.deviceName" size="small"></el-input>
 							</el-form-item>
 							<el-form-item label="浠櫒鍚嶇ОEN:">
 								<el-input v-model="formData2.enDeviceName" size="small"></el-input>
 							</el-form-item>
+						</div>
+						<div class="form-row">
 							<el-form-item label="瑙勬牸鍨嬪彿:" required>
 								<el-input v-model="formData2.specificationModel" size="small"></el-input>
 							</el-form-item>
 							<el-form-item label="鐢熶骇鍘傚:">
 								<el-input v-model="formData2.manufacturer" size="small"></el-input>
 							</el-form-item>
-						</el-form>
-					</el-col>
-				</el-col>
-				<!-- 涓棿甯冨眬 -->
-				<el-col :span="7">
-					<el-form :label-position="labelPosition" :model="formData2" label-width="110px">
-						<!-- <el-form-item label="鐢熶骇鍘傚EN:">
-              <el-input v-model="formData2.factoryNo" size="small"></el-input>
-            </el-form-item> -->
-						<el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:">
-							<el-input v-model="formData2.calibrationServices" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="璧勪骇缂栫爜:">
-							<el-input v-model="formData2.assetCode" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="浜у湴:">
-							<el-input v-model="formData2.origin" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="鍑哄巶缂栧彿:">
-							<el-input v-model="formData2.factoryNo" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="绠$悊缂栧彿:" required>
-							<el-input v-model="formData2.managementNumber" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="璐疆鏃ユ湡:">
-							<el-date-picker style="width:100%" v-model="formData2.acquisitionDate" type="date" format="YYYY-MM-DD"
-								value-format="YYYY-MM-DD HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
-							</el-date-picker>
-						</el-form-item>
-						<el-form-item label="鏍″噯鏈夋晥鏈�:" required>
-							<el-date-picker style="width:100%" v-model="formData2.activationDate" type="date" format="YYYY-MM-DD"
-								value-format="YYYY-MM-DD HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
-							</el-date-picker>
-						</el-form-item>
-						<el-form-item label="璐熻矗浜�:">
-							<el-select v-model="formData2.equipmentManager" placeholder="璇烽�夋嫨" size="small" style="width:100%">
-								<el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label"
-									:value="item.value">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="瀛樻斁鐐�:">
-							<el-input v-model="formData2.storagePoint" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="鎶�鏈寚鏍�:">
-							<el-input v-model="formData2.technicalIndicators" :rows="7" type="textarea" size="small"></el-input>
-						</el-form-item>
-					</el-form>
-				</el-col>
-				<!-- 鍙宠竟甯冨眬 -->
-				<el-col :span="7">
-					<el-form :label-position="labelPosition" :model="formData2" label-width="120px" ref="ruleForm">
-						<!-- 瀹為獙瀹ゅ垪琛� -->
-						<el-form-item label="鎵�灞為儴闂�:" required>
-							<el-select v-model="formData2.subordinateDepartmentsId" placeholder="璇烽�夋嫨" size="small" style="width:100%">
-								<el-option v-for="item in subordinateDepartmentsList" :key="item.value" :label="item.label"
-									:value="item.value">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="妫�娴嬮」鐩�:">
-							<el-cascader v-model="formData2.insProductIds" :options="options" :show-all-levels="false" :props="props"
-								placeholder="璇烽�夋嫨" size="small" style="width:100%" collapse-tags separator="," filterable
-								clearable></el-cascader>
-						</el-form-item>
-						<el-form-item label="鏈�杩戞牎鍑嗘棩鏈�:">
-							<el-date-picker style="width:100%" v-model="formData2.lastCalibrationDate" format="YYYY-MM-DD"
-								value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
-							</el-date-picker>
-						</el-form-item>
-						<el-form-item label="涓嬫鏍″噯鏃ユ湡:">
-							<el-date-picker style="width:100%" v-model="formData2.nextCalibrationDate" format="YYYY-MM-DD"
-								value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
-							</el-date-picker>
-						</el-form-item>
-						<el-form-item label="璁惧绫诲瀷:">
-							<el-select v-model="formData2.largeCategory" placeholder="璇烽�夋嫨" size="small" style="width:100%">
-								<el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="鍗曚环(涓囧厓):">
-							<el-input v-model="formData2.unitPrice" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="褰撳墠鐘舵��:" required>
-							<el-select v-model="formData2.deviceStatus" placeholder="璇烽�夋嫨" size="small" style="width:100%">
-								<el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" required>
-							<el-input v-model="formData2.calibrationDate" size="small"></el-input>
-						</el-form-item>
-						<el-form-item label="琚巿鏉冧汉:">
-							<el-select v-model="formData2.authorizedPerson" multiple placeholder="璇烽�夋嫨" size="small"
-								style="width:100%">
-								<el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label"
-									:value="item.value">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="鍥剧墖:">
-							<div
-								style="border: 1px solid #DCDFE6;border-radius:4px;height:32px;line-height:32px;display:flex;justify-content: space-around;font-size: 13px;">
-								<div v-show="formData2.imageName" class="picName">{{ formData2.imageName }}</div>
-								<el-upload :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false"
-									accept='image/jpg,image/jpeg,image/png' :headers="uploadHeader" :on-change="beforeUpload"
-									:on-error="onError" ref='upload'>
-									<el-button link type="primary" style="height:30px;padding-top:8px">涓婁紶</el-button>
-								</el-upload>
-							</div>
-						</el-form-item>
+						</div>
+						<div class="form-row">
+							<el-form-item label="浜у湴:">
+								<el-input v-model="formData2.origin" size="small"></el-input>
+							</el-form-item>
+							<el-form-item label="鍑哄巶缂栧彿:">
+								<el-input v-model="formData2.factoryNo" size="small"></el-input>
+							</el-form-item>
+						</div>
+						<div class="form-row">
+							<el-form-item label="璧勪骇缂栫爜:">
+								<el-input v-model="formData2.assetCode" size="small"></el-input>
+							</el-form-item>
+							<el-form-item label="绠$悊缂栧彿:" required>
+								<el-input v-model="formData2.managementNumber" size="small"></el-input>
+							</el-form-item>
+						</div>
+						<div class="form-row">
+							<el-form-item label="璐疆鏃ユ湡:">
+								<el-date-picker style="width:100%" v-model="formData2.acquisitionDate" type="date" format="YYYY-MM-DD"
+									value-format="YYYY-MM-DD HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
+								</el-date-picker>
+							</el-form-item>
+							<el-form-item label="鏍″噯鏈夋晥鏈�:" required>
+								<el-date-picker style="width:100%" v-model="formData2.activationDate" type="date" format="YYYY-MM-DD"
+									value-format="YYYY-MM-DD HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
+								</el-date-picker>
+							</el-form-item>
+						</div>
+						<div class="form-row">
+							<el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:">
+								<el-select v-model="formData2.calibrationServices" clearable filterable size="small" style="width: 100%">
+									<el-option v-for="name in calibrationServiceOptions2" :key="name" :label="name" :value="name"></el-option>
+								</el-select>
+							</el-form-item>
+							<div style="flex: 1;"></div>
+						</div>
 					</el-form>
 				</el-col>
 			</el-row>
+			<!-- 璁惧绠$悊 -->
+			<div class="section-title">璁惧绠$悊</div>
+			<el-form :label-position="labelPosition" :model="formData2" label-width="120px">
+				<div class="form-row">
+					<el-form-item label="妫�娴嬮」鐩�:">
+						<el-cascader v-model="formData2.insProductIds" :options="options" :show-all-levels="false" :props="props"
+							placeholder="璇烽�夋嫨" size="small" style="width:100%" collapse-tags separator="," filterable
+							clearable></el-cascader>
+					</el-form-item>
+					<el-form-item label="璁惧绫诲瀷:">
+						<el-select v-model="formData2.largeCategory" placeholder="璇烽�夋嫨" size="small" style="width:100%">
+							<el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+					<el-form-item label="鍗曚环(涓囧厓):">
+						<el-input v-model="formData2.unitPrice" size="small"></el-input>
+					</el-form-item>
+				</div>
+				<div class="form-row">
+					<el-form-item label="褰撳墠鐘舵��:" required>
+						<el-select v-model="formData2.deviceStatus" placeholder="璇烽�夋嫨" size="small" style="width:100%">
+							<el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+					<el-form-item label="璐熻矗浜�:">
+						<el-select v-model="formData2.equipmentManager" placeholder="璇烽�夋嫨" size="small" style="width:100%">
+							<el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+					<el-form-item label="琚巿鏉冧汉:">
+						<el-select v-model="formData2.authorizedPerson" multiple placeholder="璇烽�夋嫨" size="small"
+							style="width:100%">
+							<el-option v-for="item in inspectorList" :key="item.value" :label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+				</div>
+				<div class="form-row">
+					<el-form-item label="瀛樻斁鐐�:">
+						<el-input v-model="formData2.storagePoint" size="small"></el-input>
+					</el-form-item>
+					<div style="flex: 1;"></div>
+				</div>
+			</el-form>
+			<!-- 鏍″噯淇℃伅 -->
+			<el-form :label-position="labelPosition" :model="formData2" label-width="140px"
+				style="margin-top: 12px;border-top: 1px solid var(--lims-divider);padding-top: 4px;">
+				<div class="cycle-row">
+					<span class="cycle-title">鏍″噯淇℃伅</span>
+					<el-form-item label="鏈�杩戞牎鍑嗘棩鏈�:" class="cycle-item">
+						<el-date-picker style="width:100%" v-model="formData2.lastCalibrationDate" format="YYYY-MM-DD" @change="calcNextDate(formData2)"
+							value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
+						</el-date-picker>
+					</el-form-item>
+					<el-form-item label="涓嬫鏍″噯鏃ユ湡:" class="cycle-item">
+						<el-date-picker :disabled="true" style="width:100%" v-model="formData2.nextCalibrationDate" format="YYYY-MM-DD"
+							value-format="YYYY-MM-DD HH:mm:ss" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
+						</el-date-picker>
+					</el-form-item>
+					<el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" class="cycle-item" required>
+						<el-input v-model="formData2.calibrationDate" size="small" @change="calcNextDate(formData2)"></el-input>
+					</el-form-item>
+				</div>
+			</el-form>
+			<!-- 鎶�鏈寚鏍� -->
+			<div class="section-title">鎶�鏈寚鏍�</div>
+			<el-input v-model="formData2.technicalIndicators" :rows="7" type="textarea"
+				size="small"></el-input>
+			</div>
 			<template #footer><span  class="dialog-footer">
-				<el-row>
+				<el-row justify="end">
 					<el-button @click="handleClose2">鍙� 娑�</el-button>
 					<el-button type="primary" @click="submitForm2" :loading="upLoad2">纭� 瀹�</el-button>
 				</el-row>
@@ -377,7 +438,7 @@
 				<el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.formula"></el-input>
 			</div>
 			<template #footer><span  class="dialog-footer">
-				<el-row>
+				<el-row justify="end">
 					<el-button @click="dialogVisible3 = false">鍙� 娑�</el-button>
 					<el-button type="primary" @click="submitForm3" :loading="upLoad3">纭� 瀹�</el-button>
 				</el-row>
@@ -399,8 +460,9 @@
 	getDeviceParameter,
 	delDeviceParameter,
 } from '@/api/cnas/resourceDemand/device.js'
-import { listDept } from '@/api/system/dept'
 import { selectUserCondition } from "@/api/business/inspectionTask";
+import dayjs from 'dayjs'
+import { selectQualifiedSupplierManagementPage } from '@/api/cnas/externalService/supplierManage/supplierManage'
 export default {
 	props: {
 		clickNodeVal: {
@@ -418,6 +480,7 @@
 		return {
 			dateFormat: 'yyyy-MM-dd',
 			deviceId: '',
+			qualifiedSupplierNames: [],
 			fileTypeOptions: [
 				{ label: 'csv', value: '.csv' },
 				{ label: 'db', value: '.db' },
@@ -453,16 +516,15 @@
 			responsiblePersonList: [],
 			// 鎺堟潈浜哄垪琛�
 			authorizerList: [],
+			// 妫�娴嬪憳鍒楄〃锛堣鎺堟潈浜轰笅鎷夛級
+			inspectorList: [],
 			// 褰撳墠鐘舵�佸垪琛�
 			deviceStatusList: [],
-			// 鎵�灞為儴闂�
-			subordinateDepartmentsList: [],
 			upLoad: false,
 			upLoad2: false,
 			dialogVisible3: false,
 			upLoad3: false,
 			configForm: {},
-			laboratoryNameIsNull: false,
 			queryParams: {},
 			tableData: [],
 			column: [
@@ -480,13 +542,14 @@
 				{ label: "鏍″噯鏈夋晥鏈�", prop: "activationDate" },
 				{ label: "绠$悊浜�", prop: "equipmentManagerUser" },
 				{ label: "瀛樻斁鐐�", prop: "storagePoint" },
-				{ label: "鎵�灞為儴闂�", prop: "laboratoryName" },
 				{ label: "妫�楠岄」鐩�", prop: "insProductItem" },
 				{ label: "鏍″噯鏈嶅姟鏈烘瀯", prop: "calibrationServices" },
 				{ label: "鏈�杩戞牎鍑嗘棩鏈�", prop: "lastCalibrationDateTwo" },
-				{ label: "鏈�杩戞牳鏌ユ棩鏈�", prop: "lastCalibrationDate" },
+				{ label: "鏈�杩戞牳鏌ユ棩鏈�", prop: "lastExamineDate" },
 				{ label: "涓嬫鏍″噯鏃ユ湡", prop: "nextCalibrationDateTwo" },
-				{ label: "涓嬫鏍告煡鏃ユ湡", prop: "nextCalibrationDate" },
+				{ label: "涓嬫鏍告煡鏃ユ湡", prop: "nextExamineDate" },
+				{ label: "鏈�杩戜繚鍏绘棩鏈�", prop: "lastMaintenanceDate" },
+				{ label: "涓嬫淇濆吇鏃ユ湡", prop: "nextMaintenanceDate" },
 				{
 					label: "璁惧鍒嗙被", prop: "largeCategory", dataType: "tag",
 					formatData: (params) => {
@@ -515,6 +578,8 @@
 					}
 				},
 				{ label: "鏍″噯鍛ㄦ湡(鏈�)", prop: "calibrationDate" },
+				{ label: "鏍告煡鍛ㄦ湡(鏈�)", prop: "examineCycle" },
+				{ label: "淇濆吇鍛ㄦ湡(鏈�)", prop: "maintenanceCycle" },
 				{
 					dataType: "action",
 					fixed: "right",
@@ -550,12 +615,26 @@
 			page: {
 				total: 0,
 				size: 10,
-				current: 0,
+				current: 1,
 			},
 			tableLoading: false,
 		}
 	},
 	computed: {
+		// 鏍″噯鏈嶅姟鏈烘瀯涓嬫媺閫夐」锛堝悎鏍间緵搴斿晢 + 褰撳墠鍊煎厹搴曪級
+		calibrationServiceOptions() {
+			const list = this.qualifiedSupplierNames.slice();
+			const value = this.formData.calibrationServices;
+			if (value && list.indexOf(value) === -1) list.push(value);
+			return list;
+		},
+		// 鏂板璁惧寮圭獥鐨勬牎鍑嗘湇鍔℃満鏋勪笅鎷夐�夐」
+		calibrationServiceOptions2() {
+			const list = this.qualifiedSupplierNames.slice();
+			const value = this.formData2.calibrationServices;
+			if (value && list.indexOf(value) === -1) list.push(value);
+			return list;
+		},
 		action() {
 			return this.javaApi + '/deviceScope/uploadFile'
 		}
@@ -563,31 +642,49 @@
 	mounted() {
 		this.selectEnumByCategory()
 		this.selectDevicePrincipal()
-		this.obtainDepartmentList()
 		this.getInsProductIds()
+		this.obtainQualifiedSupplierList()
 		// 鍒濆鍖�
 		this.clickSidebar(this.clickNodeVal)
 	},
 	methods: {
+		// 鎷夊彇鍚堟牸渚涘簲鍟嗗垪琛紙鏍″噯鏈嶅姟鏈烘瀯涓嬫媺閫夐」锛�
+		obtainQualifiedSupplierList() {
+			selectQualifiedSupplierManagementPage({ current: 1, size: 999 }).then(res => {
+				if (res.code === 200) {
+					const rows = (res.data && res.data.records) || [];
+					this.qualifiedSupplierNames = [...new Set(rows.map(r => r.supplierName).filter(Boolean))];
+				}
+			});
+		},
 		//鍒嗙被
 		handleNotification(cate) {
 			this.queryParams.largeCategory = cate
 		},
-		obtainDepartmentList() {
-			listDept({ status: '0' }).then(res => {
-				let data = []
-				res.data.forEach(a => {
-					data.push({
-						label: a.deptName,
-						value: a.deptId
-					})
-				})
-				this.subordinateDepartmentsList = data
-			})
+		// 琚巿鏉冧汉鍘嗗彶鍊煎彲鑳芥槸琚弽澶嶈浆涔夌殑澶氬眰 JSON 瀛楃涓诧紝閫愬眰瑙f瀽杩樺師鎴愭暟缁�
+		normalizeAuthorizedPerson(val) {
+			let v = val
+			for (let i = 0; i < 10; i++) {
+				if (typeof v !== 'string') break
+				if (v === '') {
+					v = []
+					break
+				}
+				try {
+					v = JSON.parse(v)
+				} catch (e) {
+					v = []
+					break
+				}
+			}
+			if (!Array.isArray(v)) {
+				v = v === '' || v === null || v === undefined ? [] : [v]
+			}
+			return v.filter(x => x !== '' && x !== null && x !== undefined)
 		},
 		getList() {
 			this.tableLoading = true;
-			let param = { laboratoryNameIsNull: this.laboratoryNameIsNull, ...this.queryParams, ...this.page };
+			let param = { ...this.queryParams, ...this.page };
 			delete param.total;
 			getDeviceParameter({ ...param })
 				.then((res) => {
@@ -607,13 +704,22 @@
 			this.getList();
 		},
     tableRowClassName({ row }) {
-      const today = new Date();
-      const targetDate = new Date(row.activationDate);
-      const fiveDaysBeforeTarget = new Date(targetDate);
-      // 璁$畻鍓嶄簲澶╃殑鏃ユ湡
-      fiveDaysBeforeTarget.setDate(targetDate.getDate() - 5);
-      // 姣旇緝鏃堕渶瑕佺‘淇濇瘮杈冪殑鏄畬鏁寸殑鏃ユ湡鏃堕棿锛屽寘鍚椂鍒嗙
-      if (today > fiveDaysBeforeTarget) {
+      // 鏍″噯鏈夋晥鏈熷埌鏈熷墠涓�涓湀锛堝惈宸茶繃鏈燂級鏍囩孩鎻愰啋
+      const activationDate = row.activationDate ? dayjs(String(row.activationDate).replace(' ', 'T')) : null;
+      if (activationDate && activationDate.isValid() && !dayjs().isBefore(activationDate.subtract(1, 'month'))) {
+        return 'red-row';
+      }
+      // 涓嬫鏍″噯/鏍告煡/淇濆吇鏃ユ湡鎻愬墠涓�涓湀锛堝惈宸茶繃鏈燂級鏍囩孩鎻愰啋
+      const nextCalibration = row.nextCalibrationDate ? dayjs(String(row.nextCalibrationDate).replace(' ', 'T')) : null;
+      if (nextCalibration && nextCalibration.isValid() && !nextCalibration.isAfter(dayjs().add(1, 'month'))) {
+        return 'red-row';
+      }
+      const nextExamine = row.nextExamineDate ? dayjs(String(row.nextExamineDate).replace(' ', 'T')) : null;
+      if (nextExamine && nextExamine.isValid() && !nextExamine.isAfter(dayjs().add(1, 'month'))) {
+        return 'red-row';
+      }
+      const nextMaintenance = row.nextMaintenanceDate ? dayjs(String(row.nextMaintenanceDate).replace(' ', 'T')) : null;
+      if (nextMaintenance && nextMaintenance.isValid() && !nextMaintenance.isAfter(dayjs().add(1, 'month'))) {
         return 'red-row';
       }
       return '';
@@ -659,6 +765,17 @@
 				});
 				this.responsiblePersonList = data
 				this.authorizerList = data
+			})
+			// 琚巿鏉冧汉涓嬫媺鍙彇妫�娴嬪憳瑙掕壊浜哄憳
+			selectUserCondition({ type: 3 }).then(res => {
+				let data = [];
+				res.data.forEach((a) => {
+					data.push({
+						label: a.name,
+						value: a.id,
+					});
+				});
+				this.inspectorList = data
 			})
 		},
 		getInsProductIds() {
@@ -722,6 +839,7 @@
 			//row = 鐐瑰嚮瀵瑰簲琛屽��
 			//澶嶅埗缁檉ormData
 			this.formData = this.HaveJson(row);
+			this.formData.authorizedPerson = this.normalizeAuthorizedPerson(row.authorizedPerson);
 			console.log(row.insProductIds + 'valll');
 			this.formData.insProductIds = row.insProductIds ? row.insProductIds.split(',') : [];
 		},
@@ -733,6 +851,7 @@
 			//row = 鐐瑰嚮瀵瑰簲琛屽�间竴琛屽��
 			//澶嶅埗缁檉ormData
 			this.formData = this.HaveJson(row);
+			this.formData.authorizedPerson = this.normalizeAuthorizedPerson(row.authorizedPerson);
 			if (typeof (row.insProductIds) === 'number') {
 				row.insProductIds = row.insProductIds + ''
 			}
@@ -776,6 +895,30 @@
 				})
 			}
 		},
+		// 涓嬫鏃ユ湡 = 鏈�杩戞棩鏈� + 鍛ㄦ湡锛堟湀锛夛紝鑷姩璁$畻
+		calcNextDate(data) {
+			const calc = (lastDate, cycle) => {
+				const period = parseInt(cycle)
+				if (!lastDate || !period || period <= 0) {
+					return null
+				}
+				return dayjs(String(lastDate).replace(' ', 'T'))
+					.add(period, 'month')
+					.format('YYYY-MM-DD HH:mm:ss')
+			}
+			const nextCalibrationDate = calc(data.lastCalibrationDate, data.calibrationDate)
+			if (nextCalibrationDate) {
+				data.nextCalibrationDate = nextCalibrationDate
+			}
+			const nextMaintenanceDate = calc(data.lastMaintenanceDate, data.maintenanceCycle)
+			if (nextMaintenanceDate) {
+				data.nextMaintenanceDate = nextMaintenanceDate
+			}
+			const nextExamineDate = calc(data.lastExamineDate, data.examineCycle)
+			if (nextExamineDate) {
+				data.nextExamineDate = nextExamineDate
+			}
+		},
 		submitForm() {
 			if (!this.formData.deviceName) {
 				this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�')
@@ -793,10 +936,6 @@
 				this.$message.error('鏈緭鍏ユ牎鍑嗘湁鏁堟湡')
 				return
 			}
-			if (!this.formData.subordinateDepartmentsId) {
-				this.$message.error('鏈�夋嫨鎵�灞為儴闂�')
-				return
-			}
 			if (this.formData.deviceStatus === '' || this.formData.deviceStatus === null) {
 				this.$message.error('鏈�夋嫨褰撳墠鐘舵��')
 				return
@@ -811,11 +950,9 @@
 			delete this.formData.updateUser
 			const formData = this.HaveJson(this.formData)
 			formData.insProductIds = formData.insProductIds ? formData.insProductIds.join() : ''
-			if (formData.authorizedPerson && formData.authorizedPerson.length === 0) {
-				formData.authorizedPerson = ''
-			} else {
-				formData.authorizedPerson = JSON.stringify(formData.authorizedPerson)
-			}
+			formData.authorizedPerson = Array.isArray(formData.authorizedPerson) && formData.authorizedPerson.length
+				? JSON.stringify(formData.authorizedPerson)
+				: ''
 			this.upLoad = true;
 			upDeviceParameter(formData).then(res => {
 				this.$message.success('淇敼鎴愬姛')
@@ -856,11 +993,9 @@
 			}
 			const formData = this.HaveJson(this.formData2)
 			formData.insProductIds = formData.insProductIds ? formData.insProductIds.join() : ''
-			if (formData.authorizedPerson.length === 0) {
-				formData.authorizedPerson = ''
-			} else {
-				formData.authorizedPerson = JSON.stringify(formData.authorizedPerson)
-			}
+			formData.authorizedPerson = Array.isArray(formData.authorizedPerson) && formData.authorizedPerson.length
+				? JSON.stringify(formData.authorizedPerson)
+				: ''
 			this.upLoad2 = true;
 			addDeviceParameter(formData).then(res => {
 				this.$message.success('鎻愪氦鎴愬姛')
@@ -941,30 +1076,11 @@
 		},
 		// 鐐瑰嚮渚ц竟鏍忓埛鏂�
 		clickSidebar(clickNodeVal) {
-			this.laboratoryNameIsNull = false
-			// 鏄惁瀛樺湪value锛屽瓨鍦╲alue浠h〃涓轰笁绾�
+			// 瀛樺湪value浠h〃閫変腑浜嗚澶囷紝鐢辫澶囪鎯呭睍绀哄鐞�
 			if (!clickNodeVal.value) {
 				this.list = [];
-				this.queryParams.laboratoryName = null
-				this.queryParams.storagePoint = null
-				// 绛変簬1浠h〃涓烘爲鐨勪竴绾э紝label涓洪儴闂�
-				if (clickNodeVal.label == '鍏朵粬') {
-					this.laboratoryNameIsNull = true
-					this.refreshTable('page')
-					return
-				}
-				if (clickNodeVal.level == 1) {
-					this.queryParams.laboratoryName = clickNodeVal.label
-					// 绛変簬浜岀骇銆俵abel涓哄瓨鍌ㄥ湴鐐�
-				} else if (clickNodeVal.level == 2) {
-					// 鍏朵粬琛ㄧず娌℃湁閰嶇疆瀹為獙瀹わ紝鍙厤缃簡鍦扮偣
-					if (clickNodeVal.parent.label == '鍏朵粬') {
-						this.laboratoryNameIsNull = true
-					} else {
-						this.queryParams.laboratoryName = clickNodeVal.parent.label
-					}
-					this.queryParams.storagePoint = clickNodeVal.label
-				}
+				// 鏍戠殑涓�绾т负鍒嗙被锛氬叏閮�/璁惧/璁¢噺鍣ㄥ叿
+				this.queryParams.largeCategory = clickNodeVal.label === '鍏ㄩ儴' ? null : clickNodeVal.label
 				this.refreshTable('page')
 			}
 		},
@@ -1026,4 +1142,54 @@
 .form-item :deep(.el-form-item__content) {
   width: 120px;
 }
+.cycle-row {
+  display: flex;
+  align-items: center;
+}
+
+.cycle-title {
+  width: 68px;
+  flex-shrink: 0;
+  font-size: 13px;
+  color: var(--lims-text-2, #909399);
+}
+
+.cycle-item {
+  flex: 1;
+  margin-bottom: 6px;
+  margin-right: 10px;
+}
+
+.cycle-item:last-child {
+  margin-right: 0;
+}
+
+.form-row {
+  display: flex;
+  gap: 16px;
+}
+
+.form-row > .el-form-item {
+  flex: 1;
+}
+
+.section-title {
+  position: relative;
+  padding-left: 10px;
+  margin: 14px 0 12px;
+  font-size: 13px;
+  font-weight: 600;
+  color: var(--lims-text-1, #303133);
+}
+
+.section-title::before {
+  content: "";
+  position: absolute;
+  left: 0;
+  top: 3px;
+  bottom: 3px;
+  width: 3px;
+  border-radius: 2px;
+  background: var(--el-color-primary, #409eff);
+}
 </style>

--
Gitblit v1.9.3