src/views/CNAS/resourceDemand/device/component/management.vue
@@ -37,173 +37,201 @@
      </div>
      <el-dialog :title="isUp ? '设备详情' : '档案修订'" 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 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>
                  <!-- 表单 -->
                  <el-form :label-position="labelPosition" :model="formData" label-width="120px">
                     <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-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>
                  <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="检测项目:">
                     <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" @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="下次校准日期:">
                     <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="设备类型:">
                     <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" @change="calcNextDate(formData)"></el-input>
                  </el-form-item>
                  <el-form-item label="最近保养日期:">
                     <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="下次保养日期:">
                     <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="保养周期(月):">
                     <el-input :disabled="isUp" v-model="formData.maintenanceCycle" size="small" @change="calcNextDate(formData)"></el-input>
                  </el-form-item>
                  <el-form-item label="最近核查日期:">
                     <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="下次核查日期:">
                     <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="核查周期(月):">
                     <el-input :disabled="isUp" v-model="formData.examineCycle" size="small" @change="calcNextDate(formData)"></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 inspectorList" :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 var(--el-border-color);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" justify="end">
               <el-button @click="handleClose">取 消</el-button>
@@ -213,146 +241,166 @@
      </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 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>
                  <!-- 表单 -->
                  <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-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>
                  <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="检测项目:">
                     <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" @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="下次校准日期:">
                     <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="设备类型:">
                     <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" @change="calcNextDate(formData2)"></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 inspectorList" :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 var(--el-border-color);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 justify="end">
               <el-button @click="handleClose2">取 消</el-button>
@@ -613,6 +661,27 @@
      handleNotification(cate) {
         this.queryParams.largeCategory = cate
      },
      // 被授权人历史值可能是被反复转义的多层 JSON 字符串,逐层解析还原成数组
      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 = { ...this.queryParams, ...this.page };
@@ -770,6 +839,7 @@
         //row = 点击对应行值
         //复制给formData
         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(',') : [];
      },
@@ -781,6 +851,7 @@
         //row = 点击对应行值一行值
         //复制给formData
         this.formData = this.HaveJson(row);
         this.formData.authorizedPerson = this.normalizeAuthorizedPerson(row.authorizedPerson);
         if (typeof (row.insProductIds) === 'number') {
            row.insProductIds = row.insProductIds + ''
         }
@@ -879,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('修改成功')
@@ -924,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('提交成功')
@@ -1075,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>