src/views/CNAS/resourceDemand/device/component/calibration.vue
@@ -4,7 +4,6 @@
    <div class="btnS">
      <el-button size="small" type="primary" @click="calibrationMaintenance()">校准项目维护</el-button>
      <el-button size="small" type="primary" @click="add('add')">添加校准记录</el-button>
      <!-- <el-button size="small" type="primary" @click="handleDown">导出Excel</el-button> -->
    </div>
    <div class="tables" style="margin-top: 10px;">
      <el-table :data="tableData" height="calc(100vh - 20em)" border>
@@ -110,8 +109,10 @@
          <el-row>
            <el-col :span="6">
              <el-form-item label="校准服务机构:" prop="unitOfMeasure">
                <el-input v-model="calibrationRecord.unitOfMeasure" :disabled="operationType === 'view'"
                  size="small"></el-input>
                <el-select v-model="calibrationRecord.unitOfMeasure" :disabled="operationType === 'view'" 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-col>
            <el-col :span="8">
@@ -256,14 +257,15 @@
  deviceMetricRecordPage,
  showDeviceMetricsCopy,
  deleteDeviceMetricRecord,
  deviceMetricRecordExport,
  deleteCNASFile,
  selectDeviceMetric,
  deleteDeviceMetrics,
  addOrUpdateDeviceMetricRecord,
  saveOrUpdateDeviceMetric
} from '@/api/cnas/resourceDemand/device.js'
import { selectQualifiedSupplierManagementPage } from '@/api/cnas/externalService/supplierManage/supplierManage'
import { mapGetters } from "@/utils/store-compat";
import draftSave from '@/mixins/draftSave'
export default {
  props: {
    clickNodeVal: {
@@ -273,6 +275,7 @@
      }
    }
  },
  mixins: [draftSave],
  data() {
    return {
      value: "",
@@ -295,7 +298,7 @@
        fileName: '', //
      },
      formRules: {
        unitOfMeasure: [{ required: true, message: '请输入校准服务机构', trigger: 'blur' }],
        unitOfMeasure: [{ required: true, message: '请选择校准服务机构', trigger: 'change' }],
        calibrationDate: [{ required: true, message: '请选择校准日期', trigger: 'change' }],
        calculatingApparatus: [{ required: true, message: '请输入计算器具', trigger: 'blur' }],
        standardRange: [{ required: true, message: '请输入计算标准量程', trigger: 'blur' }],
@@ -332,6 +335,7 @@
      addRecordLoading: false,
      upLoading: false,
      operationType: '',
      qualifiedSupplierNames: [],
      search: {
        size: 20,
        current: 1,
@@ -341,16 +345,33 @@
  },
  // 用于上传文件的信息
  computed: {
    // 校准服务机构下拉选项(合格供应商 + 当前值兜底)
    calibrationServiceOptions() {
      const list = this.qualifiedSupplierNames.slice();
      const value = this.calibrationRecord.unitOfMeasure;
      if (value && list.indexOf(value) === -1) list.push(value);
      return list;
    },
    ...mapGetters(["nickName"]),
    action() {
      return this.javaApi + '/personBasicInfo/saveCNASFile'
    }
  },
  mounted() {
    this.obtainQualifiedSupplierList()
    //获取操作记录信息
    this.getTableList(this.clickNodeVal.value) // 获取设备校准列表数据
  },
  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))];
        }
      });
    },
    //状态判定
    checkRadio() {
      let resultList = this.calibrateParams.map(ele => ele.result)
@@ -387,7 +408,10 @@
    add(type) {
      this.operationType = type
      this.dialogVisible1 = true
      this.getXmsg()
      this.draftRestore('calibrationRecord', 'calibrationRecord', '', 'dialogVisible1')
      this.getXmsg().then(() => {
        this.draftRestore('calibrationRecordParams', 'calibrateParams', '', 'dialogVisible1')
      })
    },
    // 查看详情
    handleViewClick(type, row) {
@@ -419,18 +443,6 @@
    handleAttachmentClick(row) {
      this.$download.saveAs(row.systemFileName, row.systemFileName)
    },
    //导出
    handleDown() {
      this.outLoading = true
      deviceMetricRecordExport({
        deviceId: this.clickNodeVal.value,
        type: 'calibrate'
      }).then(res => {
        this.outLoading = false
        const blob = new Blob([res], { type: 'application/octet-stream' });
        this.$download.saveAs(blob, '设备校准.xlsx')
      })
    },
    deleteFile() {
      this.$confirm('此操作将永久删除文件, 是否继续?', '提示', {
        confirmButtonText: '确定',
@@ -456,6 +468,9 @@
    calibrationMaintenance() {
      this.dialogVisible0 = true
      this.getXmsg();
      this.$nextTick(() => {
        this.draftRestore('calibrationMaintain', 'form0', this.clickNodeVal.value, 'dialogVisible0')
      })
    },
    // 获取设备校准参数table信息
    async getXmsg() {
@@ -502,6 +517,8 @@
            if (res.code == 200) {
              this.$message.success('保存成功')
              this.$refs['form0'].resetFields()
              this.draftClear('calibrationMaintain')
              this.draftRestore('calibrationMaintain', 'form0', this.clickNodeVal.value, 'dialogVisible0')
              this.getXmsg() // 刷新设备校准参数表格
            }
            this.calibrateParamsLoading = false
@@ -533,6 +550,8 @@
            addOrUpdateDeviceMetricRecord(this.calibrationRecord).then(res => {
              if (res.code == 200) {
                this.$message.success('添加成功')
                this.draftClear('calibrationRecord')
                this.draftClear('calibrationRecordParams')
                this.dialogVisible1 = false
                this.getTableList(this.clickNodeVal.value)
              }
@@ -587,6 +606,8 @@
    },
    dialogVisible1(newVal) {
      if (newVal === false) {
        this.draftStop('calibrationRecord')
        this.draftStop('calibrationRecordParams')
        this.calibrateParams = []
        this.calibrationRecord = {
          unitOfMeasure: '', // 计量单位
@@ -684,7 +705,7 @@
.el-table {
  font-size: 14px;
  color: #333;
  color: var(--lims-text);
}
.el-table thead {