lxp
2025-03-12 952a20f1c005d80e9bf881287c40e6f4e4266a0b
src/views/CNAS/resourceDemand/device/component/management.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1430 @@
<!-- è®¾å¤‡å·¥å…·æ˜Žç»† -->
<template>
  <div class="role_manage">
    <div class="search" v-show="!showData">
      <div class="search_thing">
        <div class="search_label">状态:</div>
        <el-select
          v-model="queryParams.deviceStatus"
          placeholder="全部"
          size="small"
        >
          <el-option
            v-for="item in deviceStatusList"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          >
          </el-option>
        </el-select>
      </div>
      <div class="search_thing">
        <div class="search_label">设备名称:</div>
        <div class="search_input">
          <el-input
            size="small"
            placeholder="请输入"
            clearable
            v-model="queryParams.deviceName"
            @keyup.enter.native="refreshTable()"
          >
          </el-input>
        </div>
      </div>
      <div class="search_thing">
        <div class="search_label">规格型号:</div>
        <div class="search_input">
          <el-input
            size="small"
            placeholder="请输入"
            clearable
            v-model="queryParams.specificationModel"
            @keyup.enter.native="refreshTable()"
          ></el-input>
        </div>
      </div>
      <div style="padding-left: 30px">
        <el-button size="small" @click="refresh()">重 ç½®</el-button>
        <el-button size="small" type="primary" @click="refreshTable()"
          >查 è¯¢</el-button
        >
        <el-button size="small" type="primary" @click="dialogVisible2 = true"
          >新 å¢ž</el-button
        >
        <el-button size="small" type="primary" @click="handleDownOne"
          >导 å‡º</el-button
        >
      </div>
    </div>
    <div class="table" v-show="!showData">
      <lims-table
        :tableData="tableData"
        :column="column"
        :tableLoading="tableLoading"
        :height="'calc(100vh - 320px)'"
        :page="page"
        @pagination="pagination"
      ></lims-table>
    </div>
    <el-dialog
      :title="isUp ? '设备详情' : '档案修订'"
      :visible.sync="dialogVisible"
      width="70%"
      top="5vh"
      :before-close="handleClose"
    >
      <el-row style="display: flex; justify-content: space-around">
        <!-- å·¦è¾¹å¸ƒå±€ -->
        <el-col :span="7">
          <el-col>
            <!-- å›¾ç‰‡ -->
            <el-image
              class="img"
              style="width: 100%; height: 320px; marginbottom: 16px"
              :src="javaApi + '/img/' + formData.imageUpload"
            >
              <div
                slot="error"
                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;
                "
              >
                <i
                  class="el-icon-picture-outline"
                  style="font-size: 60px; color: #666666"
                ></i>
              </div>
            </el-image>
            <!-- è¡¨å• -->
            <el-form
              :label-position="labelPosition"
              :model="formData"
              label-width="120px"
            >
              <el-form-item label="仪器名称:" required>
                <el-input
                  :disabled="isUp"
                  v-model="formData.deviceName"
                  size="small"
                ></el-input>
              </el-form-item>
              <el-form-item label="仪器名称EN:" required>
                <el-input
                  :disabled="isUp"
                  v-model="formData.enDeviceName"
                  size="small"
                ></el-input>
              </el-form-item>
              <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
                v-model="formData.calibrationServices"
                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"
                style="width: 100%"
              >
                <el-option
                  :disabled="isUp"
                  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-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="最近校准日期:" v-if="isUp">
              <el-date-picker
                :disabled="isUp"
                style="width: 100%"
                v-model="formData.latestTraceability"
                format="yyyy-MM-dd"
                value-format="yyyy-MM-dd"
                type="date"
                size="small"
                placeholder="选择日期"
              >
              </el-date-picker>
            </el-form-item>
            <el-form-item label="下次校准日期:" v-if="isUp">
              <el-date-picker
                :disabled="isUp"
                style="width: 100%"
                v-model="formData.latestTraceability"
                format="yyyy-MM-dd"
                value-format="yyyy-MM-dd"
                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="图片:">
              <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 type="text" style="height: 30px; padding-top: 8px"
                    >上传</el-button
                  >
                </el-upload>
              </div>
            </el-form-item>
          </el-form>
        </el-col>
      </el-row>
      <span slot="footer" class="dialog-footer">
        <el-row v-if="!isUp">
          <el-button @click="handleClose">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="submitForm" :loading="upLoad"
            >ç¡® å®š</el-button
          >
        </el-row>
      </span>
    </el-dialog>
    <!-- æ–°å¢ž-->
    <el-dialog
      title="新增设备"
      top="5vh"
      :visible.sync="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"
            >
              <div
                slot="error"
                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;
                "
              >
                <i
                  class="el-icon-picture-outline"
                  style="font-size: 60px; color: #666666"
                ></i>
              </div>
            </el-image>
            <!-- è¡¨å• -->
            <el-form
              :label-position="labelPosition"
              :model="formData2"
              label-width="120px"
            >
              <el-form-item label="仪器名称:" required>
                <el-input
                  v-model="formData2.deviceName"
                  size="small"
                ></el-input>
              </el-form-item>
              <el-form-item label="仪器名称EN:" required>
                <el-input
                  v-model="formData2.enDeviceName"
                  size="small"
                ></el-input>
              </el-form-item>
              <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.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-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-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.id"
                  :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="图片:">
              <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 type="text" style="height: 30px; padding-top: 8px"
                    >上传</el-button
                  >
                </el-upload>
              </div>
            </el-form-item>
          </el-form>
        </el-col>
      </el-row>
      <span slot="footer" class="dialog-footer">
        <el-row>
          <el-button @click="handleClose2">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="submitForm2" :loading="upLoad2"
            >ç¡® å®š</el-button
          >
        </el-row>
      </span>
    </el-dialog>
    <el-dialog title="数采配置" :visible.sync="dialogVisible3" width="400px">
      <div class="search_thing" style="margin-bottom: 14px">
        <div class="search_label">
          <span style="color: red; margin-right: 4px">*</span>IP:
        </div>
        <el-input
          size="small"
          placeholder="请输入"
          clearable
          v-model="configForm.ip"
        ></el-input>
      </div>
      <div class="search_thing" style="margin-bottom: 14px">
        <div class="search_label">
          <span style="color: red; margin-right: 4px">*</span>采集地址:
        </div>
        <el-input
          size="small"
          placeholder="请输入"
          clearable
          v-model="configForm.collectUrl"
        ></el-input>
      </div>
      <div class="search_thing" style="margin-bottom: 14px">
        <div class="search_label">
          <span style="color: red; margin-right: 4px">*</span>储存地址:
        </div>
        <el-input
          size="small"
          placeholder="请输入"
          clearable
          v-model="configForm.storageUrl"
        ></el-input>
      </div>
      <div class="search_thing" style="margin-bottom: 14px">
        <div class="search_label">
          <span style="color: red; margin-right: 4px">*</span>参照:
        </div>
        <el-input
          size="small"
          placeholder="请输入"
          clearable
          v-model="configForm.refer"
        ></el-input>
      </div>
      <div class="search_thing" style="margin-bottom: 14px">
        <div class="search_label">
          <span style="color: red; margin-right: 4px">*</span>X:
        </div>
        <el-input
          size="small"
          placeholder="请输入"
          clearable
          v-model="configForm.x"
        ></el-input>
      </div>
      <div class="search_thing" style="margin-bottom: 14px">
        <div class="search_label">
          <span style="color: red; margin-right: 4px">*</span>Y:
        </div>
        <el-input
          size="small"
          placeholder="请输入"
          clearable
          v-model="configForm.y"
        ></el-input>
      </div>
      <div class="search_thing">
        <div class="search_label">公式:</div>
        <el-input
          size="small"
          placeholder="请输入"
          clearable
          v-model="configForm.formula"
        ></el-input>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-row>
          <el-button @click="dialogVisible3 = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="submitForm3" :loading="upLoad3"
            >ç¡® å®š</el-button
          >
        </el-row>
      </span>
    </el-dialog>
    <dataAcquisitionConfig v-if="showData" :deviceId="deviceId" />
  </div>
</template>
<script>
import limsTable from "@/components/Table/lims-table.vue";
import dataAcquisitionConfig from "./acquisitionConfig.vue";
import {
  obtainItemParameterList,
  exportEquipmentDetails,
  getInsProduction,
  upDeviceParameter,
  addDeviceParameter,
  numberCollect,
  getDeviceParameter,
  delDeviceParameter,
} from "@/api/cnas/resourceDemand/device.js";
import { selectUserCondition } from "@/api/system/user";
export default {
  props: {
    clickNodeVal: {
      type: Object,
      default: () => {
        return {};
      },
    },
  },
  components: {
    limsTable,
    dataAcquisitionConfig,
  },
  data() {
    return {
      dateFormat: "yyyy-MM-dd",
      deviceId: "",
      fileTypeOptions: [
        { label: "csv", value: ".csv" },
        { label: "db", value: ".db" },
        { label: "mdb", value: ".mdb" },
        { label: "word", value: ".docx" },
        { label: "excel", value: ".xlsx" },
        { label: "txt", value: ".txt" },
        { label: "png", value: ".png" },
      ],
      //是否是档案修订  true不是 false是
      isUp: true,
      formData: {
        authorizedPerson: [],
      },
      formData2: {
        imageUpload: "",
        imageName: "",
        deviceStatus: "",
        authorizedPerson: [],
      },
      value: "",
      props: { multiple: true, emitPath: false, value: "id", label: "name" },
      options: [],
      labelPosition: "right",
      dialogVisible: false,
      dialogVisible2: false,
      addPower: false,
      showData: false, // æ•°é‡‡é…ç½®é¡µé¢
      tableList: [],
      addDia: true,
      addPower: true,
      //设备类型列表
      equipmentList: [],
      // è´Ÿè´£äººåˆ—表
      responsiblePersonList: [],
      // æŽˆæƒäººåˆ—表
      authorizerList: [],
      // å½“前状态列表
      deviceStatusList: [],
      // æ‰€å±žéƒ¨é—¨
      subordinateDepartmentsList: [],
      upLoad: false,
      upLoad2: false,
      dialogVisible3: false,
      upLoad3: false,
      configForm: {},
      laboratoryNameIsNull: false,
      queryParams: {},
      tableData: [],
      column: [
        {
          label: "设备名称",
          prop: "deviceName",
          dataType: "link",
          linkEvent: { method: "selectAllByOne", vueComponent: this },
        },
        { label: "设备名称EN", prop: "enDeviceName" },
        {
          label: "规格型号",
          prop: "specificationModel",
        },
        { label: "生产厂家", prop: "manufacturer" },
        { label: "出厂编号", prop: "factoryNo" },
        { label: "管理编号", prop: "managementNumber" },
        { label: "技术指标", prop: "technicalIndicators" },
        { label: "购置日期", prop: "acquisitionDate" },
        { 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: "nextCalibrationDateTwo" },
        { label: "下次核查日期", prop: "nextCalibrationDate" },
        {
          label: "设备分类",
          prop: "largeCategory",
          dataType: "tag",
          formatData: (params) => {
            return this.equipmentList.find((m) => m.value == params).label;
          },
          formatType: (params) => {
            return this.equipmentList.find((m) => m.value == params).type;
          },
        },
        { label: "单价", prop: "unitPrice" },
        {
          label: "设备状态",
          prop: "deviceStatus",
          dataType: "tag",
          formatData: (params) => {
            return this.deviceStatusList.find((m) => m.value == params).label;
          },
          formatType: (params) => {
            return this.deviceStatusList.find((m) => m.value == params).type;
          },
        },
        { label: "校准周期(月)", prop: "calibrationDate" },
        {
          dataType: "action",
          fixed: "right",
          label: "操作",
          operation: [
            {
              name: "档案修订",
              type: "text",
              clickFun: (row) => {
                this.isUpdate(row);
              },
            },
            {
              name: "数采配置",
              type: "text",
              clickFun: (row) => {
                this.handleConfig(row);
              },
              disabled: (row) => {
                return row.insProductItem == null || row.insProductItem === "";
              },
            },
            {
              name: "删除",
              type: "text",
              clickFun: (row) => {
                this.handleDelete(row);
              },
            },
          ],
        },
      ],
      page: {
        total: 0,
        size: 10,
        current: 0,
      },
      tableLoading: false,
    };
  },
  computed: {
    action() {
      return this.javaApi + "/deviceScope/uploadFile";
    },
  },
  mounted() {
    this.selectEnumByCategory();
    this.selectDevicePrincipal();
    this.obtainItemParameterList();
    this.getInsProductIds();
    // åˆå§‹åŒ–
    this.clickSidebar(this.clickNodeVal);
  },
  methods: {
    //分类
    handleNotification(cate) {
      this.queryParams.largeCategory = cate;
    },
    obtainItemParameterList() {
      obtainItemParameterList().then((res) => {
        let data = [];
        res.data.forEach((a) => {
          data.push({
            label: a.laboratoryName,
            value: a.id,
          });
        });
        this.subordinateDepartmentsList = data;
      });
    },
    getList() {
      this.tableLoading = true;
      let param = {
        laboratoryNameIsNull: this.laboratoryNameIsNull,
        ...this.queryParams,
        ...this.page,
      };
      delete param.total;
      getDeviceParameter({ ...param })
        .then((res) => {
          this.tableLoading = false;
          if (res.code === 200) {
            this.tableData = res.data.records;
            this.page.total = res.data.total;
          }
        })
        .catch((err) => {
          this.tableLoading = false;
        });
    },
    pagination({ page, limit }) {
      this.page.current = page;
      this.page.size = limit;
      this.getList();
    },
    refresh() {
      this.queryParams = {};
      this.page.current = 1;
      this.getList();
    },
    refreshTable() {
      this.page.current = 1;
      this.getList();
    },
    // å¯¼å‡º
    handleDownOne() {
      this.outLoading = true;
      exportEquipmentDetails().then((res) => {
        this.outLoading = false;
        const blob = new Blob([res], { type: "application/octet-stream" });
        this.$download.saveAs(blob, "设备仪器一览表.doc");
      });
    },
    // èŽ·å–å­—å…¸
    selectEnumByCategory() {
      // è®¾å¤‡çŠ¶æ€
      this.getDicts("device_status").then((response) => {
        this.deviceStatusList = this.dictToValue(response.data);
      });
      // è®¾å¤‡åˆ†ç±»
      this.getDicts("device_type").then((response) => {
        this.equipmentList = this.dictToValue(response.data);
      });
    },
    // èŽ·å–è´Ÿè´£äººåˆ—è¡¨
    selectDevicePrincipal() {
      selectUserCondition().then((res) => {
        let data = [];
        res.data.forEach((a) => {
          data.push({
            label: a.name,
            value: a.id,
          });
        });
        this.responsiblePersonList = data;
        this.authorizerList = data;
      });
    },
    getInsProductIds() {
      getInsProduction().then((res) => {
        this.options = res.data.map((m, i) => {
          m.id = m.name;
          let children = m.children.map((n) => {
            n.label = n.name;
            n.value = n.id;
            return n;
          });
          return m;
        });
        this.options.forEach((item) => {
          if (item.children.length == 0) {
            item.children = null;
          } else {
            item.children.forEach((m) => {
              if (m.children.length == 0) {
                m.children = null;
              } else {
                m.children.forEach((n) => {
                  if (n.children && n.children.length == 0) {
                    n.children = null;
                  }
                });
              }
            });
          }
        });
      });
    },
    handleClose() {
      this.formData = {
        authorizedPerson: [],
      };
      this.formData2 = {
        imageUpload: "",
        imageName: "",
        authorizedPerson: [],
      };
      this.dialogVisible = false;
      this.upLoad = false;
    },
    handleClose2() {
      this.formData = {
        authorizedPerson: [],
      };
      this.formData2 = {
        imageUpload: "",
        imageName: "",
        authorizedPerson: [],
      };
      this.dialogVisible2 = false;
      this.upLoad = false;
    },
    selectAllByOne(row) {
      this.isUp = true;
      //打开弹框
      this.dialogVisible = true;
      //row = ç‚¹å‡»å¯¹åº”行值
      //复制给formData
      this.formData = this.HaveJson(row);
      console.log(row.insProductIds + "valll");
      this.formData.insProductIds = row.insProductIds
        ? row.insProductIds.split(",")
        : [];
    },
    isUpdate(row) {
      //修改  isUp ä¸ºæ¡£æ¡ˆä¿®æ”¹
      this.isUp = false;
      //打开弹框
      this.dialogVisible = true;
      //row = ç‚¹å‡»å¯¹åº”行值一行值
      //复制给formData
      this.formData = this.HaveJson(row);
      if (typeof row.insProductIds === "number") {
        row.insProductIds = row.insProductIds + "";
      }
      this.formData.deviceStatus = this.formData.deviceStatus + "";
      this.formData.insProductIds = row.insProductIds
        ? row.insProductIds.split(",")
        : [];
      // å°†æ—¶é—´æ ¼å¼ä¸ºyyyy-MM-dd è¿›è¡Œè½¬æ¢
      const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
      Object.keys(this.formData).forEach((key) => {
        if (dateRegex.test(this.formData[key])) {
          this.formData[key] = `${this.formData[key]} 00:00:00`;
        }
      });
    },
    beforeUpload(file) {
      if (file.size > 1024 * 1024 * 10) {
        this.$message.error("上传文件不超过10M");
        this.$refs.upload.clearFiles();
        return false;
      } else {
        return true;
      }
    },
    onError(err, file, fileList) {
      this.$message.error("上传失败");
      this.$refs.upload.clearFiles();
    },
    // ä¸Šä¼ å›¾ç‰‡æˆåŠŸ
    handleSuccessUpImg(response) {
      if (response.code == 200) {
        this.formData.imageUpload = response.data.url;
        this.formData.imageName = response.data.name;
      }
    },
    handleSuccessUpImg2(response) {
      if (response.code == 200) {
        this.$nextTick(() => {
          this.formData.imageUpload = response.data.url;
          this.formData.imageName = response.data.name;
          this.formData2.imageUpload = response.data.url;
          this.formData2.imageName = response.data.name;
        });
      }
    },
    submitForm() {
      if (!this.formData.deviceName) {
        this.$message.error("未输入仪器名称");
        return;
      }
      if (!this.formData.enDeviceName) {
        this.$message.error("未输入仪器名称EN");
        return;
      }
      if (!this.formData.specificationModel) {
        this.$message.error("未输入规格型号");
        return;
      }
      if (!this.formData.managementNumber) {
        this.$message.error("未输入管理编号");
        return;
      }
      if (!this.formData.activationDate) {
        this.$message.error("未输入校准有效期");
        return;
      }
      if (!this.formData.subordinateDepartmentsId) {
        this.$message.error("未选择所属部门");
        return;
      }
      if (
        this.formData.deviceStatus === "" ||
        this.formData.deviceStatus === null
      ) {
        this.$message.error("未选择当前状态");
        return;
      }
      if (!this.formData.calibrationDate) {
        this.$message.error("未输入校准周期(月)");
        return;
      }
      delete this.formData.createTime;
      delete this.formData.updateTime;
      delete this.formData.createUser;
      delete this.formData.updateUser;
      const formData = this.HaveJson(this.formData);
      formData.insProductIds = formData.insProductIds
        ? formData.insProductIds.join()
        : "";
      if (formData.authorizedPerson.length === 0) {
        formData.authorizedPerson = "";
      } else {
        formData.authorizedPerson = JSON.stringify(formData.authorizedPerson);
      }
      this.upLoad = true;
      upDeviceParameter(formData)
        .then((res) => {
          this.$message.success("修改成功");
          this.upLoad = false;
          this.refreshTable("page");
          this.dialogVisible = false;
        })
        .catch((e) => {
          this.$message.error("修改失败");
          this.dialogVisible = false;
          this.upLoad = false;
        });
    },
    // æäº¤æ¡£æ¡ˆä¿®è®¢--新增
    submitForm2() {
      if (!this.formData2.deviceName) {
        this.$message.error("未输入仪器名称");
        return;
      }
      if (!this.formData2.enDeviceName) {
        this.$message.error("未输入仪器名称EN");
        return;
      }
      if (!this.formData2.specificationModel) {
        this.$message.error("未输入规格型号");
        return;
      }
      if (!this.formData2.managementNumber) {
        this.$message.error("未输入管理编号");
        return;
      }
      if (!this.formData2.activationDate) {
        this.$message.error("未输入校准有效期");
        return;
      }
      if (!this.formData2.deviceStatus) {
        this.$message.error("未选择当前状态");
        return;
      }
      if (!this.formData2.calibrationDate) {
        this.$message.error("输入校准周期(月)");
        return;
      }
      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);
      }
      this.upLoad2 = true;
      addDeviceParameter(formData)
        .then((res) => {
          this.$message.success("提交成功");
          this.upLoad2 = false;
          this.refreshTable("page");
          this.dialogVisible2 = false;
          this.formData2 = {
            imageUpload: "",
            imageName: "",
            authorizedPerson: [],
          };
        })
        .catch((e) => {
          this.$message.error("提交失败");
          this.dialogVisible2 = false;
          this.upLoad2 = false;
        });
    },
    handleConfig(row) {
      let list = [];
      if (row.insProductItem) {
        list = row.insProductItem.split(";");
      }
      let list2 = [];
      list.map((item) => {
        const obj = Object.assign({
          deviceId: row.id,
          insProductItem: item,
        });
        list2.push(obj);
      });
      this.tableList = list2;
      this.deviceId = row.id;
      this.$nextTick(() => {
        this.showData = true;
      });
    },
    closeDataVue() {
      this.clickSidebar(this.clickNodeVal);
      this.showData = false;
    },
    submitForm3() {
      if (!this.configForm.ip) {
        this.$message.error("请填写IP");
        return;
      }
      if (!this.configForm.collectUrl) {
        this.$message.error("请填写采集地址");
        return;
      }
      if (!this.configForm.storageUrl) {
        this.$message.error("请填写储存地址");
        return;
      }
      if (!this.configForm.refer) {
        this.$message.error("请填写参照");
        return;
      }
      if (!this.configForm.x) {
        this.$message.error("请填写X");
        return;
      }
      if (!this.configForm.y) {
        this.$message.error("请填写Y");
        return;
      }
      this.upLoad3 = true;
      numberCollect(this.configForm)
        .then((res) => {
          this.upLoad3 = false;
          this.$message.success("操作成功");
          this.refreshTable("page");
          this.dialogVisible3 = false;
        })
        .catch((e) => {
          this.$message.error("操作失败");
          this.dialogVisible3 = false;
          this.upLoad3 = false;
        });
    },
    // ç‚¹å‡»ä¾§è¾¹æ åˆ·æ–°
    clickSidebar(clickNodeVal) {
      this.laboratoryNameIsNull = false;
      // æ˜¯å¦å­˜åœ¨value,存在value代表为三级
      if (!clickNodeVal.value) {
        this.list = [];
        this.queryParams.laboratoryName = null;
        this.queryParams.storagePoint = null;
        // ç­‰äºŽ1代表为树的一级,label为部门
        if (clickNodeVal.label == "其他") {
          this.laboratoryNameIsNull = true;
          this.refreshTable("page");
          return;
        }
        if (clickNodeVal.level == 1) {
          this.queryParams.laboratoryName = clickNodeVal.label;
          // ç­‰äºŽäºŒçº§ã€‚label为存储地点
        } 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.refreshTable("page");
      }
    },
    handleDelete(row) {
      this.$confirm("是否删除该条数据?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          delDeviceParameter({ id: row.id }).then((res) => {
            this.$message.success("删除成功");
            this.refresh();
          });
        })
        .catch(() => {});
    },
  },
  watch: {
    // ç›‘听点击el-tree的数据,进行数据刷新
    clickNodeVal(newVal) {
      this.clickSidebar(newVal);
    },
  },
};
</script>
<style scoped>
.role_manage {
  width: 100%;
  height: 100%;
}
.title {
  line-height: 15px;
}
.search {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 10px;
}
.search_thing {
  width: 14em;
  display: flex;
  align-items: center;
}
.search_label {
  width: 80px;
  font-size: 14px;
  text-align: right;
}
.search_input {
  width: calc(100% - 80px);
}
.table {
  margin-top: 12px;
  background-color: #fff;
  height: calc(100vh - 17em);
}
.el-form-item {
  margin-bottom: 16px;
}
.picName {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  word-break: break-all;
  width: 120px;
}
</style>