Newer
Older
xc-business-system / src / views / business / taskMeasure / measureData / components / first / templateDetail.vue
<!-- 第一套:多功能校准源标准装置 -->
<!-- 检定数据管理详情模板 -->
<script lang="ts" setup name="MeasureDataTemplateDetail">
import { ref } from 'vue'
import { ElLoading, ElMessage } from 'element-plus'
import dayjs from 'dayjs'
import type { IForm } from '../../measureData-interface'
import changeRecord from '../changeRecord.vue'
import selectStandard from '../../dialog/selectStandardDialog.vue'
import type { IDetailMeasureList } from './first-interface'
import { getUserList } from '@/api/system/user'
import useUserStore from '@/store/modules/user'
import { getDictByCode } from '@/api/system/dict'
import type { deptType, dictType } from '@/global'
import { getDeptTreeList } from '@/api/system/dept'
import { toTreeList } from '@/utils/structure'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import { getEquipmentList } from '@/api/equipment/standard/book'
import { useUniqueArray } from '@/utils/useUniqueArray'
import { getInfo } from '@/api/business/taskMeasure/measureData'
import { getInfo as getItemInfo } from '@/api/business/measure/item'
import { getClassificationList } from '@/api/business/measure/classification'
const user = useUserStore() // 用户信息
const $router = useRouter() // 关闭页面使用
const $route = useRoute() // 路由参数
const ruleFormRef = ref() // 表单ref
const form = ref<IForm>({
  dataNo: '', // 检定数据编号
  measureCategory: '', // 检校类别
  measureCategoryName: '', // 检校类别名称
  customerName: '', // 委托单位
  traceDate: '', // 测试、校准或检定日期
  measureValidDate: '', // 检定有效期
  measureAddress: '', // 测试、校准或检定地点
  temperature: '', // 温度
  humidity: '', // 相对湿度
  orderId: '',
  orderNo: '', // 任务单编号
  technologyFile: '', // 依据的技术文件(编号、名称)
  createUserId: '', // 检定员id
  createUserName: '', // 检定员
  dataSource: '', // 数据来源
  conclusion: '', // 结论
  restrictionInstruction: '', // 限用说明
  appearanceFunctionCheck: '外观完好,工作正常', // 外观及功能性检查
})
// 校验规则
const rules = ref({
  measureCategory: [{ required: true, message: '检校类别不能为空', trigger: ['blur', 'change'] }],
  customerName: [{ required: true, message: '委托单位不能为空', trigger: ['blur', 'change'] }],
  traceDate: [{ required: true, message: '测试、校准或检定日期不能为空', trigger: ['blur', 'change'] }],
  measureValidDate: [{ required: true, message: '检定有效期不能为空', trigger: ['blur', 'change'] }],
  measureAddress: [{ required: true, message: '测试、校准或检定地点不能为空', trigger: ['blur', 'change'] }],
  temperature: [{ required: true, message: '温度不能为空', trigger: ['blur', 'change'] }],
  humidity: [{ required: true, message: '相对湿度不能为空', trigger: ['blur', 'change'] }],
  orderNo: [{ required: true, message: '任务单编号不能为空', trigger: ['blur', 'change'] }],
  // technologyFile: [{ required: true, message: '依据的技术文件不能为空', trigger: ['blur', 'change'] }],
  createUserName: [{ required: true, message: '检定员不能为空', trigger: ['blur', 'change'] }],
  conclusion: [{ required: true, message: '结论不能为空', trigger: ['blur', 'change'] }],
  restrictionInstruction: [{ required: true, message: '限用说明不能为空', trigger: ['blur', 'change'] }],
  appearanceFunctionCheck: [{ required: true, message: '外观及功能性检查不能为空', trigger: ['blur', 'change'] }],
})

const itemCategoryName = ref('') // 设备检定项分类名称

// -------------------------------------------路由参数------------------------------------------
const pageType = ref('add') // 页面类型: add, edit, detail
const infoId = ref('') // 列表id
if ($route.params && $route.params.type) {
  pageType.value = $route.params.type as string

  if ($route.params.id) {
    infoId.value = $route.params.id as string
  }
}
// -------------------------------------------字典---------------------------------------------+
const conclusionList = ref<dictType[]>([]) // 结论
const measureCategoryList = ref<dictType[]>([]) // 检校类别
const positionList = ref<dictType[]>([]) // 测试、校准或检定地点
const userList = ref<{ [key: string]: string }[]>([]) // 用户列表
const useDeptList = ref<deptType[]>([]) // 所属部门列表
const deptList = ref<deptType[]>([]) // 所属部门列表
// 获取字典值
async function getDict() {
  // 结论
  getDictByCode('bizConclusion').then((response) => {
    conclusionList.value = response.data
  })
  // 检校类别
  getDictByCode('measureCategory').then((response) => {
    measureCategoryList.value = response.data
  })
  // 测试、校准或检定地点
  positionList.value = [
    {
      id: '1',
      name: '地点1',
      value: '1',
    },
    {
      id: '2',
      name: '地点2',
      value: '2',
    },
  ]
  // 获取用户列表
  getUserList({ offset: 1, limit: 999999 }).then((res: any) => {
    userList.value = res.data.rows
  })
  // 获取部门列表
  getDeptTreeList().then((res) => {
    deptList.value = res.data
    // 转成树结构
    useDeptList.value = toTreeList(res.data, '0', true)
  })
  // 获取用户列表
  // getStaffList({ offset: 1, limit: 999999 }).then((res: any) => {
  //   userList.value = res.data.rows
  // })
}

// --------------------------------------被检件信息--------------------------------------------------------
const sampleList = ref([]) as any // 被检件
const columns = ref<TableColumn[]>([ // 表头
  { text: '设备名称', value: 'sampleName', align: 'center' },
  { text: '规格型号', value: 'sampleModel', align: 'center' },
  { text: '出厂编号', value: 'manufactureNo', align: 'center' },
  { text: '制造厂家', value: 'manufacturer', align: 'center' },
  { text: '设备检定项分类', value: 'categoryName', align: 'center' },
])
// --------------------------------------所使用的标准,主要测量设备--------------------------------------------------------
const measureDataCalibratorList = ref([]) as any // 列表
const selectStandardRef = ref() // 所使用的标准,主要测量设备组件ref
const checkoutMeasureDataCalibratorList = ref([]) as any // 选中列表
const tableLoading = ref(false) // 表格loading
const measureDataCalibratorColumns = ref<TableColumn[]>([ // 表头
  { text: '设备名称', value: 'equipmentName', align: 'center' },
  { text: '规格型号', value: 'model', align: 'center' },
  { text: '出厂编号', value: 'manufactureNo', align: 'center' },
  { text: '不确定度或允许误差极限或准确度等级', value: 'uncertainty', align: 'center' },
  { text: '证书有效期', value: 'measureValidDate', align: 'center' },
])

// 用标准装置id获取标准配套设备查询条件
const listQuery = ref({
  standardId: '',
  offset: 1,
  limit: 999999,
})

// 批量增加
const multiFilesAdd = () => {
  selectStandardRef.value.initDialog()
}

// 选好标准装置
const confirmSelectStandard = (val: any) => {
  if (val.length) {
    const allRequest = [] as any // 所有的请求
    let tempEquipmentList = [] as any // 临时变量-选择的标准装置所对应的配套设备
    val.forEach((item: { id: string }) => {
      tableLoading.value = true // 表格loading
      listQuery.value.standardId = item.id // 标准装置id
      const request = getEquipmentList(listQuery.value).then((res) => { // 请求
        tempEquipmentList = tempEquipmentList.concat(res.data.rows)
      })
      allRequest.push(request) // 集合所有请求
    })
    Promise.all(allRequest).then(() => { // 等待所有请求完成
      let tempList = [] as any // 临时数组
      tempList = tempList.concat(tempEquipmentList)
      measureDataCalibratorList.value = useUniqueArray(tempList) // 数组去重
      tableLoading.value = false
    })
  }
}

// 表格多选
const handleSelectionChange = (e: any) => {
  checkoutMeasureDataCalibratorList.value = e
}

// 删除行
const delRow = () => {
  if (checkoutMeasureDataCalibratorList.value.length <= 0) {
    ElMessage({
      message: '请选中要删除的行',
      type: 'warning',
    })
  }
  else {
    checkoutMeasureDataCalibratorList.value.forEach((item: any) => {
      measureDataCalibratorList.value.forEach((element: any, index: number) => {
        if (element.equipmentNo === item.equipmentNo) {
          measureDataCalibratorList.value.splice(index, 1)
        }
      })
    })
  }
}
// ------------------------------------------标签----------------------------------------------------------
const radioMenus = ref([ // 标签内容
  { name: '检定数据', value: 'measure-data' },
  { name: '历史修改记录', value: 'change-record' },
])
const current = ref('measure-data') // 选择的tab 默认基本信息

// ---------------------------------------检定项数据表格----------------------------------------------------
const list = ref<IDetailMeasureList[]>([]) // 表格数据
const appearanceFunctionCheck = ref('') // 外观及功能性检查
const measureColumns = ref([]) as any // 表头数据
const columns_digitalMultimeterHandheld = ref([ // 数字多用表(手持)、钳形电流表、指针式万用表
  { text: '参数', value: 'params', align: 'center', required: true, width: '120' },
  { text: '量', value: 'capacity', align: 'center', width: '120', required: true },
  { text: '单位', value: 'unit', align: 'center', width: '120', required: true },
  { text: '频率', value: 'frequency', align: 'center' },
  { text: '单位', value: 'frequencyUnit', align: 'center', width: '120' },
  { text: '量程', value: 'rangeRange', align: 'center', required: true },
  { text: '标准值', value: 'standardValue', align: 'center', required: true },
  { text: '示值', value: 'indicatingValue', align: 'center', required: true },
  { text: '绝对误差', value: 'absoluteError', align: 'center', required: true },
  { text: '最大允许误差', value: 'maximumError', align: 'center', required: true },
  { text: '分辨力', value: 'resolution', align: 'center', required: true },
])
const columns_digitalMultimeterTable = ref([ // 数字多用表(台式)
  { text: '参数', value: 'params', align: 'center', required: true },
  { text: '量', value: 'capacity', align: 'center', width: '120', required: true },
  { text: '单位', value: 'unit', align: 'center', width: '120', required: true },
  { text: '频率', value: 'frequency', align: 'center' },
  { text: '单位', value: 'frequencyUnit', align: 'center', width: '120' },
  { text: '量程', value: 'rangeRange', align: 'center', required: true },
  { text: '标准值', value: 'standardValue', align: 'center', required: true },
  { text: '两线/四线模式', value: 'lineMode', align: 'center', required: true, width: '120' },
  { text: '示值', value: 'indicatingValue', align: 'center', required: true },
  { text: '绝对误差', value: 'absoluteError', align: 'center', required: true },
  { text: '最大允许误差', value: 'maximumError', align: 'center', required: true },
  { text: '分辨力', value: 'resolution', align: 'center', required: true },
  { text: '输出备注', value: 'remark', align: 'center', required: true },
])

const columns_multifunctionalPowerParameterMeasuringInstrument = ref([ // 多功能电力参数测量仪
  { text: '参数', value: 'params', align: 'center', required: true, width: '120' },
  { text: '量', value: 'capacity', align: 'center', width: '120', required: true },
  { text: '单位', value: 'unit', align: 'center', width: '120', required: true },
  { text: '频率', value: 'frequency', align: 'center' },
  { text: '单位', value: 'frequencyUnit', align: 'center', width: '120' },
  { text: '标准值', value: 'standardValue', align: 'center', required: true },
  { text: 'AN', value: 'an', align: 'center', required: true },
  { text: 'BN', value: 'bn', align: 'center', required: true },
  { text: 'CN', value: 'cn', align: 'center', required: true },
  { text: '最大允许误差', value: 'maximumError', align: 'center', required: true },
  { text: '△AN', value: 'deltaAn', align: 'center', required: true },
  { text: '△BN', value: 'deltaBn', align: 'center', required: true },
  { text: '△CN', value: 'deltaCn', align: 'center', required: true },
  { text: '分辨力', value: 'resolution', align: 'center', required: true },
])

const columns_lastFive = ref([ // 交流电压表、交流电流表、直流电压表、直流电流表、75mV电流表
  { text: '参数', value: 'params', align: 'center', required: true, width: '120' },
  { text: '量', value: 'capacity', align: 'center', width: '120', required: true },
  { text: '单位', value: 'unit', align: 'center', width: '120', required: true },
  { text: '被检表示值(单位)', value: 'measureIndicationValue', align: 'center', width: '120', required: true },
  { text: ' 标准值(单位)', value: 'unit', align: 'center', width: '120', required: true },
  { text: '最大允许误差(单位)', value: 'maximumError', align: 'center', required: true },
  { text: '绝对误差(单位)', value: 'absoluteError', align: 'center', required: true },
  { text: '分辨力', value: 'resolution', align: 'center', required: true },
])

// -------------------------------------------获取详情信息--------------------------------------------------
// 获取页面详情信息
const fetchInfo = () => {
  const loading = ElLoading.service({
    lock: true,
    background: 'rgba(255, 255, 255, 0.8)',
  })
  getInfo({ id: infoId.value }).then((res) => {
    form.value = res.data
    loading.close()
  })
}

/**
 * 新增的时候获取检定项输入数据(获取检定项分类)
 * @param itemId  检定项id
 * @param itemCategoryName 检定项分类名字
 * @param measureItemDataType 检校标准装置字典
 */
const fetchItemInfo = (itemId: string, itemCategoryName: string, belongStandardEquipment = '') => {
  const params = {
    id: itemId,
    itemCategoryName, // 检定项分类名字
    measureItemDataType: belongStandardEquipment, // 检校标准装置字典code
  }
  getItemInfo(params).then((res) => {
    // form.value = res.data
    // getList.value = res.data.measureItemDataList // 检定项表格
    // technicalTargetList.value = res.data.technicalTargetList // 技术指标
  })
}

// 获取检定项分类的技术文件
// 查询条件
const fetchClassificationListQuery = ref({
  belongStandardEquipment: '', // 检校标准装置
  categoryName: '', // 检定项分类名称
  categoryNo: '', // 检定项分类编号
  deviceType: '', // 设备分类
  measureCategory: '', // 检校类别
  limit: 20,
  offset: 1,
})

// 数据查询
function fetchClassificationData(isNowPage = false, categoryName = '', belongStandardEquipment = '') {
  if (!isNowPage) {
    // 是否显示当前页,否则跳转第一页
    listQuery.value.offset = 1
  }
  fetchClassificationListQuery.value.categoryName = categoryName // 设备分类型名称
  fetchClassificationListQuery.value.belongStandardEquipment = belongStandardEquipment // 检校标准装置名称
  getClassificationList(fetchClassificationListQuery.value).then((response) => {
    if (response.data.rows.length) {
      form.value.technologyFile = response.data.rows[0].technologyFile.split(';')
    }
  })
}

// ------------------------------------------钩子----------------------------------------------
watch(() => itemCategoryName.value, (newValue) => {
  if (newValue) {
    switch (newValue) {
      case '数字多用表(手持)':
        measureColumns.value = columns_digitalMultimeterHandheld.value
        break
      case '数字多用表(台式)':
        measureColumns.value = columns_digitalMultimeterTable.value
        break
      case '多功能电力参数测量仪':
        measureColumns.value = columns_multifunctionalPowerParameterMeasuringInstrument.value
        break
      case '钳形电流表':
        measureColumns.value = columns_digitalMultimeterHandheld.value
        break
      case '指针式万用表':
        measureColumns.value = columns_digitalMultimeterHandheld.value
        break
      default: // 交流电压表、交流电流表、直流电压表、直流电流表、75mV电流表
        measureColumns.value = columns_lastFive.value
        break
    }
  }
}, { immediate: true })

onMounted(async () => {
  console.log(pageType.value, 'pageType')
  console.log(infoId.value, 'infoId.value')
  getDict().then(() => {
    if (pageType.value === 'add') { // 从我的任务跳转过来(新增)
      form.value.orderId = $route.query.orderId as string // 任务单id
      form.value.orderNo = $route.query.orderNo as string // 任务单编号
      form.value.traceDate = dayjs().format('YYYY-MM-DD') // 测试校准检定日期默认今天
      form.value.measureValidDate = `${dayjs().add(Number($route.query.checkCycle), 'month').subtract(1, 'day')}` // 检定有效期--今天 + 检定周期 - 1天
      form.value.measureValidDate = dayjs(form.value.measureValidDate).format('YYYY-MM-DD')
      sampleList.value = [{
        sampleName: $route.query.sampleName, // 设备名称
        sampleModel: $route.query.sampleModel, // 规格型号
        manufactureNo: $route.query.manufactureNo, // 出厂编号
        manufacturer: $route.query.manufacturer, // 制造厂家(生产厂家)
        categoryName: $route.query.itemCategoryName, // 设备检定项分类
      }]
      console.log('$route.query.itemId', $route.query.itemId)
      itemCategoryName.value = $route.query.itemCategoryName as string // 设备检定项分类名称
      // 新增时查依据的技术文件(编号、名称)
      fetchClassificationData(false, $route.query.itemCategoryName! as string, $route.query.belongStandardEquipment as string)
      // 新增的时候查输入值
      fetchItemInfo($route.query.itemId! as string, $route.query.itemCategoryName! as string, $route.query.belongStandardEquipmentName as string)
    }
    else {
      // fetchInfo()
    }
  })
})
</script>

<template>
  <!-- 表单  -->
  <detail-block title="">
    <el-form
      ref="ruleFormRef"
      :model="form"
      label-width="180"
      label-position="right"
      :rules="rules"
    >
      <el-row :gutter="24">
        <el-col :span="8">
          <el-form-item label="检定数据编号:" prop="dataNo">
            <el-input v-model="form.dataNo" disabled placeholder="系统自动生成" />
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="检校类别:" prop="measureCategory">
            <el-select
              v-model="form.measureCategory"
              placeholder="检校类别"
              filterable
              :disabled="pageType === 'detail'"
            >
              <el-option v-for="item in measureCategoryList" :key="item.id" :label="item.name" :value="item.value" />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="委托单位:" prop="dataNo">
            <el-input v-model="form.dataNo" disabled :placeholder="pageType === 'detail' ? ' ' : '系统自动生成'" />
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="测试、校准或检定日期:" prop="traceDate">
            <el-date-picker
              v-model="form.traceDate"
              type="date"
              format="YYYY-MM-DD"
              value-format="YYYY-MM-DD"
              :placeholder="pageType === 'detail' ? ' ' : '请选择日期'"
              :disabled="pageType === 'detail'"
              class="full-width-input"
            />
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="检定有效期:" prop="measureValidDate">
            <el-date-picker
              v-model="form.measureValidDate"
              type="date"
              format="YYYY-MM-DD"
              value-format="YYYY-MM-DD"
              :placeholder="pageType === 'detail' ? ' ' : '请选择日期'"
              :disabled="pageType === 'detail'"
              class="full-width-input"
            />
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="测试、校准或检定地点:" prop="measureAddress">
            <el-select
              v-model="form.measureAddress"
              placeholder="测试、校准或检定地点"
              filterable
              :disabled="pageType === 'detail'"
            >
              <el-option v-for="item in positionList" :key="item.id" :label="item.name" :value="item.value" />
            </el-select>
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="温度:" prop="temperature">
            <el-input v-model="form.temperature" :disabled="pageType === 'detail'" :placeholder="pageType === 'detail' ? ' ' : '请输入温度'" />
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="相对湿度:" prop="humidity">
            <el-input v-model="form.humidity" :disabled="pageType === 'detail'" :placeholder="pageType === 'detail' ? ' ' : '请输入相对湿度'" />
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="任务单编号:" prop="orderNo">
            <el-input v-model="form.orderNo" disabled placeholder="任务单编号" />
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="检定员:" prop="dacreateUserNametaNo">
            <el-input v-model="form.createUserName" disabled placeholder="检定员" />
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="数据来源:" prop="dataSource">
            <el-input v-model="form.dataSource" disabled placeholder="数据来源" />
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="结论:" prop="conclusion">
            <el-select
              v-model="form.conclusion"
              placeholder="请选择结论"
              filterable
              :disabled="pageType === 'detail'"
            >
              <el-option v-for="item in conclusionList" :key="item.id" :label="item.name" :value="item.value" />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col v-if="form.conclusion === '除*外其余所检项目合格'" :span="16">
          <el-form-item label="限用说明:" prop="restrictionInstruction">
            <el-input v-model="form.restrictionInstruction" type="textarea" autosize :disabled="pageType === 'detail'" placeholder="请输入限用说明" />
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="24" class="marg">
        <el-col :span="24">
          <el-form-item label="依据的技术文件:" prop="technologyFile">
            <div v-for="(item, index) in form.technologyFile" :key="index" style="display: flex;">
              <show-photo :minio-file-name="item" />
            </div>
            <span v-if="pageType === 'detail' && !form.technologyFile.length">无</span>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
  </detail-block>
  <!-- 被检件信息 -->
  <detail-block title="被检件信息">
    <el-table
      :data="sampleList"
      border
      style="width: 100%;"
    >
      <el-table-column align="center" label="序号" width="80" type="index" />
      <el-table-column
        v-for="item in columns"
        :key="item.value"
        :prop="item.value"
        :label="item.text"
        align="center"
      />
    </el-table>
  </detail-block>

  <detail-block title="所使用的标准,主要测量设备">
    <template v-if="pageType !== 'detail'" #btns>
      <el-button type="primary" @click="multiFilesAdd">
        批量添加
      </el-button>
      <el-button type="info" @click="delRow">
        删除行
      </el-button>
    </template>
    <el-table
      v-loading="tableLoading"
      :data="measureDataCalibratorList"
      border
      style="width: 100%;"
      @selection-change="handleSelectionChange"
    >
      <el-table-column
        v-if="pageType !== 'detail'"
        type="selection"
        width="38"
      />
      <el-table-column align="center" label="序号" width="80" type="index" />
      <el-table-column
        v-for="item in measureDataCalibratorColumns"
        :key="item.value"
        :prop="item.value"
        :label="item.text"
        :width="item.width"
        align="center"
      />
    </el-table>
  </detail-block>
  <!-- 标签 -->
  <detail-block :title="pageType === 'add' ? '检定数据' : ''">
    <el-radio-group v-if="pageType !== 'add'" v-model="current">
      <el-radio-button v-for="item in radioMenus" :key="item.value" :label="item.value">
        {{ item.name }}
      </el-radio-button>
    </el-radio-group>

    <el-form
      v-if="current === 'measure-data'"
      ref="ruleFormRef"
      :model="form"
      label-width="150"
      label-position="right"
      :rules="rules"
      style="margin-top: 20px;"
    >
      <el-row>
        <el-col :span="12">
          <el-form-item label="外观及功能性检查:" prop="appearanceFunctionCheck">
            <el-input
              v-model="form.appearanceFunctionCheck"
              class="full-width-input"
              autosize
              type="textarea"
              :disabled="pageType === 'detail'"
            />
          </el-form-item>
        </el-col>
      </el-row>
      <div style="font-size: 14px;color: #606266;padding: 0 20px 20px;">
        示值误差:
      </div>
    </el-form>
    <!-- 检定数据表格 -->
    <el-table
      v-if="current === 'measure-data'"
      ref="tableRef"
      :data="list"
      border
      style="width: 100%;"
      @selection-change="handleSelectionChange"
    >
      <el-table-column v-if="pageType !== 'detail'" type="selection" width="38" />
      <el-table-column align="center" label="序号" width="80" type="index" />
      <el-table-column
        v-for="item in measureColumns"
        :key="item.value"
        :prop="item.value"
        :label="item.text"
        :width="item.width"
        align="center"
      />
    </el-table>
    <!-- 历史修改记录 -->
    <change-record v-if="pageType !== 'add' && current === 'change-record'" :info-id="infoId" />
  </detail-block>

  <!-- 选择标准装置组件 -->
  <select-standard ref="selectStandardRef" :is-multi="true" @confirm="confirmSelectStandard" />
</template>

<style lang="scss" scoped>
.step {
  line-height: 28px;
  font-size: 20px;
  color: #3d7eff;
  font-weight: bold;
  margin-bottom: 5px;
  width: fit-content;
}
</style>

<style lang="scss">
.fieldtest-record-detail {
  .el-table thead.is-group th.el-table__cell {
    background: #f2f6ff;
  }
}
</style>