<!-- 第13套:示波器检定装置 --> <!-- 检定数据管理详情模板 --> <script lang="ts" setup name="MeasureDataTemplateDetail"> import { ref } from 'vue' import { ElLoading, ElMessage } from 'element-plus' import dayjs from 'dayjs' import changeRecord from '../changeRecord.vue' import selectStandard from '../../dialog/selectStandardDialog.vue' import categoryNameDict from '/public/config/categoryNameDict.json' import TemplateFormAndTable from '../templateFormAndTable.vue' import { useSolveFormData } from '../useSolveFormData' import type { IDetailMeasureList } from './thirteenth-interface' import templateTable from './templateTable.vue' import useUserStore from '@/store/modules/user' import type { dictType } from '@/global' import { getDictByCode } from '@/api/system/dict' import type { TableColumn } from '@/components/NormalTable/table_interface' import { calculateHandle, getInfo } from '@/api/business/taskMeasure/measureData' import { getInfo as getItemInfo } from '@/api/business/measure/item' import { useCheckList } from '@/commonMethods/useCheckList' import { calc } from '@/utils/useCalc' import { useMergeTableRow } from '@/commonMethods/useMergeTableRow' import { useScientificNotation } from '@/commonMethods/useScientificNotation' const props = defineProps({ infoId: String, // id dataNo: String, // 检定数据编号 }) const emits = defineEmits(['giveInfoId', 'changeMeterIdentify']) const user = useUserStore() // 用户信息 const $router = useRouter() // 关闭页面使用 const $route = useRoute() // 路由参数 const ruleFormRef = ref() // 表单ref const templateFormAndTableRef = ref() // 表单和被检设备、测量设备表格公共组件ref const itemFormData = ref({ // 有关于检定项的数据 itemId: '', // 检定项id itemCategoryName: '', // 设备检定项分类名称 itemCategoryId: '', // 设备检定项分类名称id belongStandardEquipment: '', // 标准装置code belongStandardEquipmentName: '', // 标准装置名称 methodType: '', // 时基方法 appearance: 1, // 外观及功能性检查 appearanceFunctionCheck: '正常', // 外观及功能性检查 timeBase: 1, // 时基(示波器-数字) currentGain: 1, // 直流增益(示波器-数字) currentBias: 1, // 直流偏置(示波器-数字) bandWidth: 1, // 频带宽度(示波器-数字/模拟) triggerSensitivity: 1, // 触发灵敏度(示波器-数字) riseTime: 1, // 上升时间(示波器-数字/模拟) inputResistance: 1, // 输入电阻(示波器-数字/模拟) calibratingSignal: 1, // 校准信号(示波器-数字/模拟) scanTimeCoefficient: 1, // 扫描时间系数及扩展(示波器-模拟) triggerCharacter: 1, // 触发特性(示波器-模拟) verticalAmplitude: 1, // 垂直幅度(示波器-模拟) remark: '', // 备注 }) // -------------------------------------------路由参数------------------------------------------ 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 radioMenus = ref([ // 标签内容 { name: '检定数据', value: 'measure-data' }, { name: '历史修改记录', value: 'change-record' }, ]) const current = ref('measure-data') // 选择的tab 默认基本信息 // ---------------------------------------检定项数据表格---------------------------------------------------- const timeBaseList = ref<IDetailMeasureList[]>([]) // 时基 const zeroFrequencyGainList = ref<IDetailMeasureList[]>([]) // 直流增益 const DCBiasList = ref<IDetailMeasureList[]>([]) // 直流偏置 const frequencyBandwidthList = ref<IDetailMeasureList[]>([]) // 频带宽度(数字示波器) const triggerSensitivityList = ref<IDetailMeasureList[]>([]) // 触发灵敏度 const risetimeList = ref<IDetailMeasureList[]>([]) // 上升时间(数字示波器) const inputResistanceList = ref<IDetailMeasureList[]>([]) // 输入电阻(数字示波器) const calibratingSignalList = ref<IDetailMeasureList[]>([]) // 校准信号(数字示波器) const scanningTimeList = ref<IDetailMeasureList[]>([]) // 扫描时间系数及扩展 const verticalSizeList = ref<IDetailMeasureList[]>([]) // 垂直幅度 const frequencyBandwidthSimulateList = ref<IDetailMeasureList[]>([]) // 频带宽度(模拟示波器) const triggerCharacteristicList = ref<IDetailMeasureList[]>([]) // 触发特性 const inputResistanceSimulateList = ref<IDetailMeasureList[]>([]) // 输入电阻(模拟示波器) const risetimeSimulateList = ref<IDetailMeasureList[]>([]) // 上升时间(模拟示波器) const calibratingSignalSimulateList = ref<IDetailMeasureList[]>([]) // 校准信号(模拟示波器) const timeBaseLoading = ref(false) // 时基 const zeroFrequencyGainLoading = ref(false) // 直流增益 const DCBiasLoading = ref(false) // 直流偏置 const frequencyBandwidthLoading = ref(false) // 频带宽度(数字示波器) const triggerSensitivityLoading = ref(false) // 触发灵敏度 const risetimeLoading = ref(false) // 上升时间(数字示波器) const inputResistanceLoading = ref(false) // 输入电阻(数字示波器) const calibratingSignalLoading = ref(false) // 校准信号(数字示波器) const scanningTimeLoading = ref(false) // 扫描时间系数及扩展 const verticalSizeLoading = ref(false) // 垂直幅度 const frequencyBandwidthSimulateLoading = ref(false) // 频带宽度(模拟示波器) const triggerCharacteristicLoading = ref(false) // 触发特性 const inputResistanceSimulateLoading = ref(false) // 输入电阻(模拟示波器) const risetimeSimulateLoading = ref(false) // 上升时间(模拟示波器) const calibratingSignalSimulateLoading = ref(false) // 校准信号(模拟示波器) const columns_time_base_method1 = ref<TableColumn[]>([ // 时基--方法一 { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '周期时标信号', value: 'cycleSignalDefineFront', align: 'center', required: true }, { text: '时基绝对误差△T/ns', value: 'timeBaseAbsoluteError', align: 'center', required: true, width: '180' }, { text: '时基相对误差△δ', value: 'timeBaseRelativeError', align: 'center', required: false }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_time_base_method2 = ref<TableColumn[]>([ // 时基--方法二 { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '参考输出', value: 'cycleSignalDefineFront', align: 'center', required: true }, { text: '差拍波形频率测量值(Hz)', value: 'timeBaseAbsoluteError', align: 'center', required: true, width: '180' }, { text: '时基相对误差△δ', value: 'timeBaseRelativeError', align: 'center', required: false }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_zero_frequency_gain = ref<TableColumn[]>([ // 直流增益 { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '阻抗', value: 'impedanceDefineFront', align: 'center', required: true }, { text: '通道', value: 'thoroughfare', align: 'center', required: true }, { text: '垂直偏转系数(/div)', value: 'verticalDeflectCoefficientDefineFront', align: 'center', required: true }, { text: '标准值', value: 'standardValueDefineFront', align: 'center', required: true }, { text: '测量值', value: 'measureValue', align: 'center', required: true, width: '180' }, { text: '相对误差', value: 'relativeError', align: 'center', required: false }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_DC_bias = ref<TableColumn[]>([ // 直流偏置 { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '阻抗', value: 'impedanceDefineFront', align: 'center', required: true }, { text: '通道', value: 'thoroughfare', align: 'center', required: true }, { text: '垂直偏转系数(/div)', value: 'verticalDeflectCoefficientDefineFront', align: 'center', required: true }, { text: '标准值', value: 'standardValue', align: 'center', required: true, width: '180' }, { text: '测量值', value: 'measureValue', align: 'center', required: true, width: '180' }, { text: '误差', value: 'errorValue', align: 'center', required: false }, { text: '相对误差', value: 'relativeError', align: 'center', required: false }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_frequency_bandwidth = ref<TableColumn[]>([ // 频带宽度(数字示波器) { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '阻抗', value: 'impedanceDefineFront', align: 'center', required: true }, { text: '通道', value: 'thoroughfare', align: 'center', required: true }, { text: '垂直偏转系数(/div)', value: 'verticalDeflectCoefficientDefineFront', align: 'center', required: true }, { text: '频带宽度', value: 'bandWidthDefineFront', align: 'center', required: true }, { text: '参考幅度', value: 'referenceAmplitude', align: 'center', required: true, width: '180' }, { text: '参考幅度单位', value: 'referenceAmplitudeUnit', align: 'center', required: true, width: '120' }, { text: '测量幅度', value: 'measureAmplitude', align: 'center', required: true, width: '180' }, { text: '测量幅度单位', value: 'measureAmplitudeUnit', align: 'center', required: true, width: '120' }, { text: '分贝数(dB)', value: 'decibelNumber', align: 'center', required: false }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_trigger_sensitivity = ref<TableColumn[]>([ // 触发灵敏度 { text: '检定项目', value: 'params', align: 'center', required: true, width: '110' }, { text: '通道', value: 'thoroughfare', align: 'center', required: true }, { text: '触发类型', value: 'triggerType', align: 'center', required: true }, { text: '信号频率', value: 'signalFrequencyDefineFront', align: 'center', required: true }, { text: '标称值', value: 'nominalValueDefineFront', align: 'center', required: true }, { text: '测量值', value: 'measureValue', align: 'center', required: true, width: '220' }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_risetime = ref<TableColumn[]>([ // 上升时间(数字示波器) { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '通道', value: 'thoroughfare', align: 'center', required: true }, { text: '阻抗', value: 'impedanceDefineFront', align: 'center', required: true }, { text: '垂直偏转系数(/div)', value: 'verticalDeflectCoefficientDefineFront', align: 'center', required: true }, { text: '测量值', value: 'measureValue', align: 'center', required: true, width: '180' }, { text: '测量值单位', value: 'measureValueUnit', align: 'center', required: true, width: '120' }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_input_resistance = ref<TableColumn[]>([ // 输入电阻(数字示波器) { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '通道', value: 'thoroughfare', align: 'center', required: true }, { text: '标称值', value: 'nominalValueDefineFront', align: 'center', required: true }, { text: '垂直偏转系数(/div)', value: 'verticalDeflectCoefficientDefineFront', align: 'center', required: true }, { text: '测量值', value: 'measureValue', align: 'center', required: true, width: '220' }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '相对误差', value: 'relativeError', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_calibrating_signal = ref<TableColumn[]>([ // 校准信号(数字示波器) { text: '检定项目', value: 'params', align: 'center', required: true }, { text: '项目', value: 'itemType', align: 'center', required: true }, { text: '标称值', value: 'nominalValueDefineFront', align: 'center', required: true }, { text: '顶部测量值', value: 'topMeasureValue', align: 'center', required: true, width: '220' }, { text: '底部测量值', value: 'bottomMeasureValue', align: 'center', required: true, width: '220' }, { text: '测量值', value: 'measureValue', align: 'center', required: false, width: '220' }, { text: '相对误差', value: 'relativeError', align: 'center', required: false }, ]) const columns_scan_time = ref<TableColumn[]>([ // 扫描时间系数及扩展 { text: '检定项目', value: 'params', align: 'center', required: true, width: '160' }, { text: '扫描方式', value: 'scanType', align: 'center', required: true }, { text: '阻抗', value: 'impedanceDefineFront', align: 'center', required: true }, { text: '水平刻度档位', value: 'horizontalScaleGearDefineFront', align: 'center', required: true }, { text: '标称值', value: 'nominalValue', align: 'center', required: true, width: '220' }, { text: '测量值', value: 'measureValue', align: 'center', required: true, width: '220' }, { text: '相对误差', value: 'relativeError', align: 'center', required: false }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_vertical_size = ref<TableColumn[]>([ // 垂直幅度 { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '通道', value: 'thoroughfare', align: 'center', required: true }, { text: '阻抗', value: 'impedanceDefineFront', align: 'center', required: true }, { text: '垂直刻度档位', value: 'verticalScaleGearDefineFront', align: 'center', required: true }, { text: '标称值', value: 'nominalValueDefineFront', align: 'center', required: true }, { text: '测量值', value: 'measureValue', align: 'center', required: true, width: '220' }, { text: '相对误差', value: 'relativeError', align: 'center', required: false }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_frequency_bandwidth_simulate = ref<TableColumn[]>([ // 频带宽度(模拟示波器) { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '通道', value: 'thoroughfare', align: 'center', required: true }, { text: '阻抗', value: 'impedanceDefineFront', align: 'center', required: true }, { text: '垂直刻度档位', value: 'verticalScaleGearDefineFront', align: 'center', required: true }, { text: '测量值', value: 'measureValue', align: 'center', required: true, width: '220' }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_trigger_characteristic = ref<TableColumn[]>([ // 触发特性 { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '通道', value: 'thoroughfare', align: 'center', required: true }, { text: '阻抗', value: 'impedanceDefineFront', align: 'center', required: true }, { text: '扫描方式', value: 'scanType', align: 'center', required: true }, { text: '触发类型', value: 'triggerType', align: 'center', required: true }, { text: '频率上限', value: 'frequencyUpperDefineFront', align: 'center', required: true }, { text: '输出信号幅度', value: 'outputSignalAmplitude', align: 'center', required: true, width: '220' }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '触发特性', value: 'conclusion', align: 'center', required: false }, ]) const columns_input_resistance_simulate = ref<TableColumn[]>([ // 输入电阻(模拟示波器) { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '通道', value: 'thoroughfare', align: 'center', required: true }, { text: '阻抗', value: 'impedanceDefineFront', align: 'center', required: true }, { text: '测量值', value: 'measureValue', align: 'center', required: true, width: '220' }, { text: '相对误差', value: 'relativeError', align: 'center', required: false }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_risetime_simulate = ref<TableColumn[]>([ // 上升时间(模拟示波器) { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '通道', value: 'thoroughfare', align: 'center', required: true }, { text: '阻抗', value: 'impedanceDefineFront', align: 'center', required: true }, { text: '垂直刻度档位', value: 'verticalScaleGearDefineFront', align: 'center', required: true }, { text: '水平刻度档位', value: 'horizontalScaleGearDefineFront', align: 'center', required: true }, { text: '标称值', value: 'nominalValue', align: 'center', required: true, width: '220' }, { text: '上升时间', value: 'riseTime', align: 'center', required: true, width: '220' }, { text: '修正上升时间', value: 'correctRiseTime', align: 'center', required: false }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) const columns_calibrating_signal_simulate = ref<TableColumn[]>([ // 校准信号(模拟示波器) { text: '检定项目', value: 'params', align: 'center', required: true, width: '90' }, { text: '信号类型', value: 'signalType', align: 'center', required: true }, { text: '阻抗', value: 'impedanceDefineFront', align: 'center', required: true }, { text: '幅度标称值', value: 'nominalAmplitudeValueDefineFront', align: 'center', required: true }, { text: '幅度测量值', value: 'measureAmplitudeValue', align: 'center', required: true, width: '220' }, { text: '幅度偏差', value: 'amplitudeDeviation', align: 'center', required: false }, { text: '频率标称值', value: 'nominalFrequencyValueDefineFront', align: 'center', required: true }, { text: '频率测量值', value: 'measureFrequencyValue', align: 'center', required: true, width: '220' }, { text: '频率偏差', value: 'frequencyDeviation', align: 'center', required: false }, { text: '技术指标', value: 'technicalIndexDefineFront', align: 'center', required: false }, { text: '结论', value: 'conclusion', align: 'center', required: false }, ]) // -------------------------------------------获取详情信息-------------------------------------------------- // 获取页面详情信息 const fetchInfo = () => { const loading = ElLoading.service({ lock: true, background: 'rgba(255, 255, 255, 0.8)', }) getInfo({ id: infoId.value, belongStandardEquipment: itemFormData.value.belongStandardEquipment, // 我的任务跳转过来如果已经配置过检定项了,到编辑页面,且用一下三个字段替代传id请求详情 itemId: $route.query.itemId, // 检定项id orderId: $route.query.orderId, // 任务单id sampleId: $route.query.sampleId, // 被检设备id }).then((res) => { // 有关于检定项的数据 itemFormData.value.itemId = res.data.itemId // 检定项id itemFormData.value.itemCategoryName = res.data.itemCategoryName // 设备检定项分类名称 itemFormData.value.itemCategoryId = res.data.itemCategoryId ? res.data.itemCategoryId : itemFormData.value.itemCategoryId // 设备检定项分类名称id itemFormData.value.appearanceFunctionCheck = `${res.data.appearanceFunctionCheck}` // 外观(1/0) itemFormData.value.remark = res.data.remark // 结论、备注 // =======================================表单公共组件数据处理======================================================= useSolveFormData(res, templateFormAndTableRef.value) // ==================================检定数据======================================================================== const data = res.data.measureDataOscilloscopeList if (itemFormData.value.itemCategoryName === '数字示波器') { // 时基 timeBaseList.value = data.filter((item: any) => `${item.dataType}` === '1') timeBaseList.value = timeBaseList.value.map((item: any) => { return { ...item, params: '时基', cycleSignalDefineFront: item.cycleSignal + item.cycleSignalUnit, // 周期时标信号 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.timeBase = timeBaseList.value.length > 0 ? 1 : 0 // 时基 // 直流增益 zeroFrequencyGainList.value = data.filter((item: any) => `${item.dataType}` === '2') zeroFrequencyGainList.value = zeroFrequencyGainList.value.map((item: any) => { return { ...item, params: '直流增益', impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 verticalDeflectCoefficientDefineFront: item.verticalDeflectCoefficient + item.verticalDeflectCoefficientUnit, // 垂直偏转系数 standardValueDefineFront: item.standardValue + item.standardValueUnit, // 标准值 measureValueUnit: item.standardValueUnit, // 测量值单位 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.currentGain = zeroFrequencyGainList.value.length > 0 ? 1 : 0 useMergeTableRow(zeroFrequencyGainList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 直流偏置 DCBiasList.value = data.filter((item: any) => `${item.dataType}` === '3') DCBiasList.value = DCBiasList.value.map((item: any) => { return { ...item, params: '直流偏置', impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 thoroughfare: item.thoroughfare, // 通道 verticalDeflectCoefficientDefineFront: item.verticalDeflectCoefficient + item.verticalDeflectCoefficientUnit, // 垂直偏转系数 standardValue: item.standardValue, // 标准值 measureValueUnit: item.standardValueUnit, // 测量值单位 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.currentBias = DCBiasList.value.length > 0 ? 1 : 0 useMergeTableRow(DCBiasList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 频带宽度(数字示波器) frequencyBandwidthList.value = data.filter((item: any) => `${item.dataType}` === '4') frequencyBandwidthList.value = frequencyBandwidthList.value.map((item: any) => { return { ...item, params: '频带宽度', impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 thoroughfare: item.thoroughfare, // 通道 verticalDeflectCoefficientDefineFront: item.verticalDeflectCoefficient + item.verticalDeflectCoefficientUnit, // 垂直偏转系数 bandWidthDefineFront: item.bandWidth + item.bandWidthUnit, // 频带宽度 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.bandWidth = frequencyBandwidthList.value.length > 0 ? 1 : 0 useMergeTableRow(frequencyBandwidthList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 触发灵敏度 triggerSensitivityList.value = data.filter((item: any) => `${item.dataType}` === '5') triggerSensitivityList.value = triggerSensitivityList.value.map((item: any) => { return { ...item, params: '触发灵敏度', thoroughfare: item.thoroughfare, // 通道 triggerType: item.triggerType, // 触发类型 signalFrequencyDefineFront: item.signalFrequency + item.signalFrequencyUnit, // 信号频率 nominalValueDefineFront: item.nominalValue + item.nominalValueUnit, // 标称值 measureValueUnit: item.nominalValueUnit, // 测量值单位 } }) itemFormData.value.triggerSensitivity = triggerSensitivityList.value.length > 0 ? 1 : 0 useMergeTableRow(triggerSensitivityList.value, ['thoroughfare']) // 合并单元格 // 上升时间 risetimeList.value = data.filter((item: any) => `${item.dataType}` === '6') risetimeList.value = risetimeList.value.map((item: any) => { return { ...item, params: '上升时间', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 verticalDeflectCoefficientDefineFront: item.verticalDeflectCoefficient + item.verticalDeflectCoefficientUnit, // 垂直偏转系数 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.riseTime = risetimeList.value.length > 0 ? 1 : 0 useMergeTableRow(risetimeList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 输入电阻 inputResistanceList.value = data.filter((item: any) => `${item.dataType}` === '7') inputResistanceList.value = inputResistanceList.value.map((item: any) => { return { ...item, params: '输入电阻', thoroughfare: item.thoroughfare, // 通道 nominalValueDefineFront: item.nominalValue + item.nominalValueUnit, // 标称值 verticalDeflectCoefficientDefineFront: item.verticalDeflectCoefficient + item.verticalDeflectCoefficientUnit, // 垂直偏转系数 measureValueUnit: item.nominalValueUnit, // 测量值单位 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.inputResistance = inputResistanceList.value.length > 0 ? 1 : 0 useMergeTableRow(inputResistanceList.value, ['thoroughfare', 'nominalValueDefineFront']) // 合并单元格 // 校准信号 calibratingSignalList.value = data.filter((item: any) => `${item.dataType}` === '8') calibratingSignalList.value = calibratingSignalList.value.map((item: any) => { return { ...item, params: '校准信号', itemType: item.itemType, // 项目 nominalValueDefineFront: item.nominalValue + item.nominalValueUnit, // 标称值 topMeasureValue: item.itemType === '频率' ? '-' : item.topMeasureValue, // 顶部测量值 bottomMeasureValue: item.itemType === '频率' ? '-' : item.bottomMeasureValue, // 底部测量值 } }) itemFormData.value.calibratingSignal = calibratingSignalList.value.length > 0 ? 1 : 0 } else if (itemFormData.value.itemCategoryName === '模拟示波器') { // 扫描时间系数及扩展 scanningTimeList.value = data.filter((item: any) => `${item.dataType}` === '1') scanningTimeList.value = scanningTimeList.value.map((item: any) => { return { ...item, params: '扫描时间系数及扩展', scanType: item.scanType, // 扫描方式 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 horizontalScaleGearDefineFront: item.horizontalScaleGear + item.horizontalScaleGearUnit, // 阻抗 nominalValueDefineFront: item.nominalValue + item.nominalValueUnit, // 标称值 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.scanTimeCoefficient = scanningTimeList.value.length > 0 ? 1 : 0 useMergeTableRow(scanningTimeList.value, ['scanType', 'impedanceDefineFront']) // 合并单元格 // 垂直幅度 verticalSizeList.value = data.filter((item: any) => `${item.dataType}` === '2') verticalSizeList.value = verticalSizeList.value.map((item: any) => { return { ...item, params: '垂直幅度', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 verticalScaleGearDefineFront: item.verticalScaleGear + item.verticalScaleGearUnit, // 垂直刻度档位 nominalValueDefineFront: item.nominalValue + item.nominalValueUnit, // 标称值 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.verticalAmplitude = verticalSizeList.value.length > 0 ? 1 : 0 useMergeTableRow(verticalSizeList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 频带宽度 frequencyBandwidthSimulateList.value = data.filter((item: any) => `${item.dataType}` === '3') frequencyBandwidthSimulateList.value = frequencyBandwidthSimulateList.value.map((item: any) => { return { ...item, params: '频带宽度', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 verticalScaleGearDefineFront: item.verticalScaleGear + item.verticalScaleGearUnit, // 垂直刻度档位 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.bandWidth = frequencyBandwidthSimulateList.value.length > 0 ? 1 : 0 useMergeTableRow(frequencyBandwidthSimulateList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 触发特性 triggerCharacteristicList.value = data.filter((item: any) => `${item.dataType}` === '4') triggerCharacteristicList.value = triggerCharacteristicList.value.map((item: any) => { return { ...item, params: '触发特性', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 scanType: item.scanType, // 扫描方式 triggerType: item.triggerType, // 触发类型 frequencyUpperDefineFront: item.frequencyUpper + item.frequencyUpperUnit, // 频率上限 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.triggerCharacter = triggerCharacteristicList.value.length > 0 ? 1 : 0 useMergeTableRow(triggerCharacteristicList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 输入电阻(模拟示波器) inputResistanceSimulateList.value = data.filter((item: any) => `${item.dataType}` === '5') inputResistanceSimulateList.value = inputResistanceSimulateList.value.map((item: any) => { return { ...item, params: '输入电阻', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.inputResistance = inputResistanceSimulateList.value.length > 0 ? 1 : 0 useMergeTableRow(inputResistanceSimulateList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 上升时间(模拟示波器) risetimeSimulateList.value = data.filter((item: any) => `${item.dataType}` === '6') risetimeSimulateList.value = risetimeSimulateList.value.map((item: any) => { return { ...item, params: '上升时间', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 verticalScaleGearDefineFront: item.verticalScaleGear + item.verticalScaleGearUnit, // 垂直刻度档位 horizontalScaleGearDefineFront: item.horizontalScaleGear + item.horizontalScaleGearUnit, // 水平刻度档位 amplitude: item.amplitude, // 幅度 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.riseTime = risetimeSimulateList.value.length > 0 ? 1 : 0 useMergeTableRow(risetimeSimulateList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 校准信号(模拟示波器) calibratingSignalSimulateList.value = data.filter((item: any) => `${item.dataType}` === '7') calibratingSignalSimulateList.value = calibratingSignalSimulateList.value.map((item: any) => { return { ...item, params: '校准信号', signalType: item.signalType, // 信号类型 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 nominalAmplitudeValueDefineFront: item.nominalAmplitudeValue + item.nominalAmplitudeValueUnit, // 幅度标称值 nominalFrequencyValueDefineFront: item.nominalFrequencyValue + item.nominalFrequencyValueUnit, // 频率标称值 technicalIndexDefineFront: item.technicalIndexSymbol + item.technicalIndex + item.technicalIndexUnit, // 技术指标 } }) itemFormData.value.calibratingSignal = calibratingSignalSimulateList.value.length > 0 ? 1 : 0 } infoId.value = res.data.id emits('giveInfoId', infoId.value) loading.close() }) } // 初始化输入数据 const initInputData = (data: any) => { if (itemFormData.value.itemCategoryName === '数字示波器') { // 时基 timeBaseList.value = data.filter((item: any) => `${item.dataType}` === '1') timeBaseList.value = timeBaseList.value.map((item: any) => { return { ...item, params: '时基', cycleSignalDefineFront: item.cycleSignal + item.cycleSignalUnit, // 周期时标信号 timeBaseAbsoluteError: undefined, // 时基绝对误差△T/ns timeBaseRelativeError: '', // 时基相对误差△δ technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 conclusion: '', // 结论 } }) // 直流增益 zeroFrequencyGainList.value = data.filter((item: any) => `${item.dataType}` === '2') zeroFrequencyGainList.value = zeroFrequencyGainList.value.map((item: any) => { return { ...item, params: '直流增益', impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 verticalDeflectCoefficientDefineFront: item.verticalDeflectCoefficient + item.verticalDeflectCoefficientUnit, // 垂直偏转系数 standardValueDefineFront: item.standardValue + item.standardValueUnit, // 标准值 measureValue: undefined, // 测量值 measureValueUnit: item.standardValueUnit, // 测量值单位 relativeError: '', // 相对误差 technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 conclusion: '', // 结论 } }) useMergeTableRow(zeroFrequencyGainList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 直流偏置 DCBiasList.value = data.filter((item: any) => `${item.dataType}` === '3') DCBiasList.value = DCBiasList.value.map((item: any) => { return { ...item, params: '直流偏置', impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 thoroughfare: item.thoroughfare, // 通道 verticalDeflectCoefficientDefineFront: item.verticalDeflectCoefficient + item.verticalDeflectCoefficientUnit, // 垂直偏转系数 standardValue: item.standardValue, // 标准值 measureValue: undefined, // 测量值 measureValueUnit: item.standardValueUnit, // 测量值单位 relativeError: '', // 相对误差 errorValue: '', // 误差 technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 conclusion: '', // 结论 } }) useMergeTableRow(DCBiasList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 频带宽度(数字示波器) frequencyBandwidthList.value = data.filter((item: any) => `${item.dataType}` === '4') frequencyBandwidthList.value = frequencyBandwidthList.value.map((item: any) => { return { ...item, params: '频带宽度', impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 thoroughfare: item.thoroughfare, // 通道 verticalDeflectCoefficientDefineFront: item.verticalDeflectCoefficient + item.verticalDeflectCoefficientUnit, // 垂直偏转系数 bandWidthDefineFront: item.bandWidth + item.bandWidthUnit, // 频带宽度 referenceAmplitude: undefined, // 参考幅度 referenceAmplitudeUnit: 'V', // 参考幅度单位 measureAmplitude: undefined, // 测量幅度 measureAmplitudeUnit: 'V', // 测量幅度单位 decibelNumber: '', // 分贝数(dB) technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 conclusion: '', // 结论 } }) useMergeTableRow(frequencyBandwidthList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 触发灵敏度 triggerSensitivityList.value = data.filter((item: any) => `${item.dataType}` === '5') triggerSensitivityList.value = triggerSensitivityList.value.map((item: any) => { return { ...item, params: '触发灵敏度', thoroughfare: item.thoroughfare, // 通道 triggerType: item.triggerType, // 触发类型 signalFrequencyDefineFront: item.signalFrequency + item.signalFrequencyUnit, // 信号频率 nominalValueDefineFront: item.nominalValue + item.nominalValueUnit, // 标称值 measureValue: undefined, // 测量值 measureValueUnit: item.nominalValueUnit, // 测量值单位 conclusion: '', // 结论 } }) useMergeTableRow(triggerSensitivityList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 上升时间 risetimeList.value = data.filter((item: any) => `${item.dataType}` === '6') risetimeList.value = risetimeList.value.map((item: any) => { return { ...item, params: '上升时间', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 verticalDeflectCoefficientDefineFront: item.verticalDeflectCoefficient + item.verticalDeflectCoefficientUnit, // 垂直偏转系数 measureValue: undefined, // 测量值 measureValueUnit: '', // 测量值单位 technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 conclusion: '', // 结论 } }) useMergeTableRow(risetimeList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 输入电阻 inputResistanceList.value = data.filter((item: any) => `${item.dataType}` === '7') inputResistanceList.value = inputResistanceList.value.map((item: any) => { return { ...item, params: '输入电阻', thoroughfare: item.thoroughfare, // 通道 nominalValueDefineFront: item.nominalValue + item.nominalValueUnit, // 标称值 verticalDeflectCoefficientDefineFront: item.verticalDeflectCoefficient + item.verticalDeflectCoefficientUnit, // 垂直偏转系数 measureValue: undefined, // 测量值 measureValueUnit: item.nominalValueUnit, // 测量值单位 technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 relativeError: '', // 相对误差 conclusion: '', // 结论 } }) useMergeTableRow(inputResistanceList.value, ['nominalValueDefineFront', 'thoroughfare']) // 合并单元格 // 校准信号 calibratingSignalList.value = data.filter((item: any) => `${item.dataType}` === '8') calibratingSignalList.value = calibratingSignalList.value.map((item: any) => { return { ...item, params: '校准信号', itemType: item.itemType, // 项目 nominalValueDefineFront: item.nominalValue + item.nominalValueUnit, // 标称值 topMeasureValue: item.itemType === '频率' ? '-' : undefined, // 顶部测量值 bottomMeasureValue: item.itemType === '频率' ? '-' : undefined, // 底部测量值 measureValue: '', // 测量值 relativeError: '', // 相对误差 conclusion: '', // 结论 } }) } else if (itemFormData.value.itemCategoryName === '模拟示波器') { // 扫描时间系数及扩展 scanningTimeList.value = data.filter((item: any) => `${item.dataType}` === '1') scanningTimeList.value = scanningTimeList.value.map((item: any) => { return { ...item, params: '扫描时间系数及扩展', scanType: item.scanType, // 扫描方式 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 horizontalScaleGearDefineFront: item.horizontalScaleGear + item.horizontalScaleGearUnit, // 阻抗 nominalValueDefineFront: item.nominalValue + item.nominalValueUnit, // 标称值 measureValue: '', // 测量值 technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 relativeError: '', // 相对误差 conclusion: '', // 结论 } }) useMergeTableRow(scanningTimeList.value, ['scanType', 'impedanceDefineFront']) // 合并单元格 // 垂直幅度 verticalSizeList.value = data.filter((item: any) => `${item.dataType}` === '2') verticalSizeList.value = verticalSizeList.value.map((item: any) => { return { ...item, params: '垂直幅度', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 verticalScaleGearDefineFront: item.verticalScaleGear + item.verticalScaleGearUnit, // 垂直刻度档位 nominalValueDefineFront: item.nominalValue + item.nominalValueUnit, // 标称值 measureValue: '', // 测量值 technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 relativeError: '', // 相对误差 conclusion: '', // 结论 } }) useMergeTableRow(verticalSizeList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 频带宽度 frequencyBandwidthSimulateList.value = data.filter((item: any) => `${item.dataType}` === '3') frequencyBandwidthSimulateList.value = frequencyBandwidthSimulateList.value.map((item: any) => { return { ...item, params: '频带宽度', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 verticalScaleGearDefineFront: item.verticalScaleGear + item.verticalScaleGearUnit, // 垂直刻度档位 measureValue: '', // 测量值 technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 relativeError: '', // 相对误差 conclusion: '', // 结论 } }) useMergeTableRow(frequencyBandwidthSimulateList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 触发特性 triggerCharacteristicList.value = data.filter((item: any) => `${item.dataType}` === '4') triggerCharacteristicList.value = triggerCharacteristicList.value.map((item: any) => { return { ...item, params: '触发特性', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 scanType: item.scanType, // 扫描方式 triggerType: item.triggerType, // 触发类型 frequencyUpperDefineFront: item.frequencyUpper + item.frequencyUpperUnit, // 频率上限 outputSignalAmplitude: '', // 测量值 technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 conclusion: '', // 结论 } }) useMergeTableRow(triggerCharacteristicList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 输入电阻(模拟示波器) inputResistanceSimulateList.value = data.filter((item: any) => `${item.dataType}` === '5') inputResistanceSimulateList.value = inputResistanceSimulateList.value.map((item: any) => { return { ...item, params: '输入电阻', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 measureValue: '', // 测量值 technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 relativeError: '', // 相对误差 conclusion: '', // 结论 } }) useMergeTableRow(inputResistanceSimulateList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 上升时间(模拟示波器) risetimeSimulateList.value = data.filter((item: any) => `${item.dataType}` === '6') risetimeSimulateList.value = risetimeSimulateList.value.map((item: any) => { return { ...item, params: '上升时间', thoroughfare: item.thoroughfare, // 通道 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 verticalScaleGearDefineFront: item.verticalScaleGear + item.verticalScaleGearUnit, // 垂直刻度档位 horizontalScaleGearDefineFront: item.horizontalScaleGear + item.horizontalScaleGearUnit, // 水平刻度档位 nominalValue: item.amplitude, // 幅度 nominalValueUnit: item.amplitudeUnit, // 幅度单位 riseTime: '', // 上升时间 correctRiseTime: '', // 修正上升时间 technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 relativeError: '', // 相对误差 conclusion: '', // 结论 } }) useMergeTableRow(risetimeSimulateList.value, ['impedanceDefineFront', 'thoroughfare']) // 合并单元格 // 校准信号(模拟示波器) calibratingSignalSimulateList.value = data.filter((item: any) => `${item.dataType}` === '7') calibratingSignalSimulateList.value = calibratingSignalSimulateList.value.map((item: any) => { return { ...item, params: '校准信号', signalType: item.signalType, // 信号类型 impedanceDefineFront: item.impedance + item.impedanceUnit, // 阻抗 nominalAmplitudeValueDefineFront: item.nominalAmplitudeValue + item.nominalAmplitudeValueUnit, // 幅度标称值 measureAmplitudeValue: '', // 幅度测量值 amplitudeDeviation: '', // 幅度偏差 nominalFrequencyValueDefineFront: item.nominalFrequencyValue + item.nominalFrequencyValueUnit, // 频率标称值 measureFrequencyValue: '', // 频率测量值 frequencyDeviation: '', // 频率偏差 technicalIndexDefineFront: item.technicalIndexSymbol + (item.technicalIndex || '/') + item.technicalIndexUnit, // 技术指标 technicalIndex: `${item.technicalIndex}` === '' ? '/' : item.technicalIndex, // 技术指标 conclusion: '', // 结论 } }) } } /** * 新增的时候获取检定项输入数据(获取检定项分类详情) * @param itemId 检定项id * @param itemCategoryName 检定项分类名字 * @param belongStandardEquipment 检校标准装置字典 */ const fetchItemInfo = (itemId: string, itemCategoryName: string, belongStandardEquipment = '') => { const params = { id: itemId, itemCategoryName, // 检定项分类名字 belongStandardEquipment, // 检校标准装置字典code } getItemInfo(params).then((res) => { itemFormData.value.appearance = res.data.appearanceFunctionCheck // 外观及功能检查 1有外观,2没有外观 itemFormData.value.appearanceFunctionCheck = res.data.appearanceFunctionCheck ? '正常' : ''// 外观及功能检查 1有外观,2没有外观 itemFormData.value.timeBase = res.data.timeBase // 时基 itemFormData.value.currentGain = res.data.currentGain // 直流增益 itemFormData.value.currentBias = res.data.currentBias // 直流偏置 itemFormData.value.bandWidth = res.data.bandWidth // 频带宽度 itemFormData.value.triggerSensitivity = res.data.triggerSensitivity // 触发灵敏度 itemFormData.value.riseTime = res.data.riseTime // 上升时间 itemFormData.value.inputResistance = res.data.inputResistance // 输入电阻 itemFormData.value.calibratingSignal = res.data.calibratingSignal // 校准信号 itemFormData.value.scanTimeCoefficient = res.data.scanTimeCoefficient // 扫描时间系数及扩展 itemFormData.value.triggerCharacter = res.data.triggerCharacter // 触发特性 itemFormData.value.verticalAmplitude = res.data.verticalAmplitude // 垂直幅度 if (res.data.measureItemDataOscilloscopeList && res.data.measureItemDataOscilloscopeList.length) { const tempTimeBaseList = res.data.measureItemDataOscilloscopeList.filter((item: any) => `${item.dataType}` === '1') if (tempTimeBaseList && tempTimeBaseList.length) { itemFormData.value.methodType = tempTimeBaseList[0].methodType } } initInputData(res.data.measureItemDataOscilloscopeList) }) } // ----------------------------------------计算--------------------------------------- // 点击计算结果校验 const checkout = (type: string) => { let result = true if (itemFormData.value.itemCategoryName === '数字示波器') { switch (type) { case '时基': { const columns = itemFormData.value.methodType === '方法一' ? columns_time_base_method1.value : columns_time_base_method2.value result = useCheckList(timeBaseList.value, columns, type) break } case '直流增益': result = useCheckList(zeroFrequencyGainList.value, columns_zero_frequency_gain.value, type) break case '直流偏置': result = useCheckList(DCBiasList.value, columns_DC_bias.value, type) break case '频带宽度': result = useCheckList(frequencyBandwidthList.value, columns_frequency_bandwidth.value, type) break case '触发灵敏度': result = useCheckList(triggerSensitivityList.value, columns_trigger_sensitivity.value, type) break case '上升时间': result = useCheckList(risetimeList.value, columns_risetime.value, type) break case '输入电阻': result = useCheckList(inputResistanceList.value, columns_input_resistance.value, type) break case '校准信号': result = useCheckList(calibratingSignalList.value, columns_calibrating_signal.value, type) break default: break } } else if (itemFormData.value.itemCategoryName === '模拟示波器') { switch (type) { case '扫描时间系数及扩展': result = useCheckList(scanningTimeList.value, columns_scan_time.value, type) break case '垂直幅度': result = useCheckList(verticalSizeList.value, columns_vertical_size.value, type) break case '频带宽度': result = useCheckList(frequencyBandwidthSimulateList.value, columns_frequency_bandwidth_simulate.value, type) break case '触发特性': result = useCheckList(triggerCharacteristicList.value, columns_trigger_characteristic.value, type) break case '输入电阻': result = useCheckList(inputResistanceSimulateList.value, columns_input_resistance_simulate.value, type) break case '上升时间': result = useCheckList(risetimeSimulateList.value, columns_risetime_simulate.value, type) break case '校准信号': result = useCheckList(calibratingSignalSimulateList.value, columns_calibrating_signal_simulate.value, type) break default: break } } return result } // 计算之前参数处理 const solveParamsBeforeCalculate = (type: string) => { let list = [] as any if (itemFormData.value.itemCategoryName === '数字示波器') { switch (type) { case '时基': list = timeBaseList.value break case '直流增益': list = zeroFrequencyGainList.value break case '直流偏置': list = DCBiasList.value break case '频带宽度': list = frequencyBandwidthList.value break case '触发灵敏度': list = triggerSensitivityList.value break case '上升时间': list = risetimeList.value break case '输入电阻': list = inputResistanceList.value break case '校准信号': list = calibratingSignalList.value break default: break } } else if (itemFormData.value.itemCategoryName === '模拟示波器') { switch (type) { case '扫描时间系数及扩展': list = scanningTimeList.value break case '垂直幅度': list = verticalSizeList.value break case '频带宽度': list = frequencyBandwidthSimulateList.value break case '触发特性': list = triggerCharacteristicList.value break case '输入电阻': list = inputResistanceSimulateList.value break case '上升时间': list = risetimeSimulateList.value break case '校准信号': list = calibratingSignalSimulateList.value break default: break } } return list } // 计算之后参数处理 const solveParamsAfterCalculate = (type: string, list: any) => { if (itemFormData.value.itemCategoryName === '数字示波器') { switch (type) { case '时基': timeBaseList.value = timeBaseList.value.map((item, index) => { return { ...item, timeBaseRelativeError: list[index].timeBaseRelativeError, conclusion: list[index].conclusion, exceedMark: list[index].exceedMark, } }).map((item: any) => ({ ...item, timeBaseRelativeError: useScientificNotation(Number(item.timeBaseRelativeError), 2, 2), })) break case '直流增益': zeroFrequencyGainList.value = zeroFrequencyGainList.value.map((item, index) => { return { ...item, relativeError: list[index].relativeError, conclusion: list[index].conclusion, exceedMark: list[index].exceedMark, } }) break case '直流偏置': DCBiasList.value = DCBiasList.value.map((item, index) => { return { ...item, errorValue: list[index].errorValue + item.standardValueUnit, // 误差 relativeError: list[index].relativeError, // 相对误差 conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break case '频带宽度': frequencyBandwidthList.value = frequencyBandwidthList.value.map((item, index) => { return { ...item, decibelNumber: list[index].decibelNumber, // 分贝数(dB) conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break case '触发灵敏度': triggerSensitivityList.value = triggerSensitivityList.value.map((item, index) => { return { ...item, conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break case '上升时间': risetimeList.value = risetimeList.value.map((item, index) => { return { ...item, conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break case '输入电阻': inputResistanceList.value = inputResistanceList.value.map((item, index) => { return { ...item, relativeError: list[index].relativeError, // 相对误差 conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break case '校准信号': calibratingSignalList.value = calibratingSignalList.value.map((item, index) => { return { ...item, measureValue: item.itemType === '幅度' ? list[index].measureValue + item.nominalValueUnit : item.measureValue, // 测量值 relativeError: list[index].relativeError, // 相对误差 conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break default: break } } else if (itemFormData.value.itemCategoryName === '模拟示波器') { switch (type) { case '扫描时间系数及扩展': scanningTimeList.value = scanningTimeList.value.map((item, index) => { return { ...item, relativeError: list[index].relativeError, // 相对误差 conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break case '垂直幅度': verticalSizeList.value = verticalSizeList.value.map((item, index) => { return { ...item, relativeError: list[index].relativeError, // 相对误差 conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break case '频带宽度': frequencyBandwidthSimulateList.value = frequencyBandwidthSimulateList.value.map((item, index) => { return { ...item, conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break case '触发特性': triggerCharacteristicList.value = triggerCharacteristicList.value.map((item, index) => { return { ...item, conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break case '输入电阻': inputResistanceSimulateList.value = inputResistanceSimulateList.value.map((item, index) => { return { ...item, relativeError: list[index].relativeError, // 相对误差 conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break case '上升时间': risetimeSimulateList.value = risetimeSimulateList.value.map((item, index) => { return { ...item, correctRiseTime: `${list[index].correctRiseTime}ns`, // 修正上升时间 conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, } }) break case '校准信号': calibratingSignalSimulateList.value = calibratingSignalSimulateList.value.map((item, index) => { return { ...item, amplitudeDeviation: list[index].amplitudeDeviation, // 幅度偏差 frequencyDeviation: list[index].frequencyDeviation, // 频率偏差 conclusion: list[index].conclusion, // 结论 exceedMark: list[index].exceedMark, exceedMarkOne: list[index].exceedMarkOne, } }) break default: break } } return list } // 点击计算结果 const calculate = (type: string) => { if (!checkout(type)) { return false } const list = solveParamsBeforeCalculate(type) // =============表格loading============================== timeBaseLoading.value = type === '时基' zeroFrequencyGainLoading.value = type === '直流增益' DCBiasLoading.value = type === '直流偏置' frequencyBandwidthLoading.value = type === '频带宽度' && itemFormData.value.itemCategoryName === '数字示波器' triggerSensitivityLoading.value = type === '触发灵敏度' risetimeLoading.value = type === '上升时间' && itemFormData.value.itemCategoryName === '数字示波器' inputResistanceLoading.value = type === '输入电阻' && itemFormData.value.itemCategoryName === '数字示波器' calibratingSignalLoading.value = type === '校准信号' && itemFormData.value.itemCategoryName === '数字示波器' scanningTimeLoading.value = type === '扫描时间系数及扩展' verticalSizeLoading.value = type === '垂直幅度' frequencyBandwidthSimulateLoading.value = type === '频带宽度' && itemFormData.value.itemCategoryName === '模拟示波器' triggerCharacteristicLoading.value = type === '触发特性' inputResistanceSimulateLoading.value = type === '输入电阻' && itemFormData.value.itemCategoryName === '模拟示波器' risetimeSimulateLoading.value = type === '上升时间' && itemFormData.value.itemCategoryName === '模拟示波器' calibratingSignalSimulateLoading.value = type === '校准信号' && itemFormData.value.itemCategoryName === '模拟示波器' // ======================================================= const params = { belongStandardEquipment: itemFormData.value.belongStandardEquipment, // 检校标准装置 itemCategoryName: itemFormData.value.itemCategoryName, // 检定项分类名称 measureDataOscilloscopeList: list.map((item: { exceedMark: number }) => { return { ...item, exceedMark: 0, exceedMarkOne: 0, } }), } calculateHandle(params).then((res) => { if (res.data && res.data.length) { solveParamsAfterCalculate(type, res.data) } timeBaseLoading.value = false zeroFrequencyGainLoading.value = false DCBiasLoading.value = false frequencyBandwidthLoading.value = false triggerSensitivityLoading.value = false risetimeLoading.value = false inputResistanceLoading.value = false calibratingSignalLoading.value = false scanningTimeLoading.value = false verticalSizeLoading.value = false frequencyBandwidthSimulateLoading.value = false triggerCharacteristicLoading.value = false inputResistanceSimulateLoading.value = false risetimeSimulateLoading.value = false calibratingSignalSimulateLoading.value = false }).catch(() => { timeBaseLoading.value = false zeroFrequencyGainLoading.value = false DCBiasLoading.value = false frequencyBandwidthLoading.value = false triggerSensitivityLoading.value = false risetimeLoading.value = false inputResistanceLoading.value = false calibratingSignalLoading.value = false scanningTimeLoading.value = false verticalSizeLoading.value = false frequencyBandwidthSimulateLoading.value = false triggerCharacteristicLoading.value = false inputResistanceSimulateLoading.value = false risetimeSimulateLoading.value = false calibratingSignalSimulateLoading.value = false }) } // -----------------------------------------保存之前处理数据------------------------------------ const solveParamsBeforeSave = () => { let list = [] as any if (itemFormData.value.itemCategoryName === '数字示波器') { list = list.concat( timeBaseList.value, zeroFrequencyGainList.value, DCBiasList.value, frequencyBandwidthList.value, triggerSensitivityList.value, risetimeList.value, inputResistanceList.value, calibratingSignalList.value, ) } else { list = list.concat( scanningTimeList.value, // 扫描时间系数及扩展 verticalSizeList.value, // 垂直幅度 frequencyBandwidthSimulateList.value, // 频带宽度(模拟示波器) triggerCharacteristicList.value, // 触发特性 inputResistanceSimulateList.value, // 输入电阻(模拟示波器) risetimeSimulateList.value, // 上升时间(模拟示波器) calibratingSignalSimulateList.value, // 校准信号(模拟示波器) ) } let result = '' const index1 = list.findIndex((item: { exceedMark: number; exceedMarkOne: number }) => item.exceedMark === 1 && (itemFormData.value.itemCategoryName === '模拟示波器' && item.exceedMarkOne === 1)) // 找不符合指标 const index0 = list.findIndex((item: { exceedMark: number; exceedMarkOne: number }) => item.exceedMark === 0 && (itemFormData.value.itemCategoryName === '模拟示波器' && item.exceedMarkOne === 0)) // 找符合指标 if (index1 !== -1 && index0 !== -1) { // 找到不符合指标和符合指标了 result = '除*外其余所检项目合格' } else if (index1 === -1) { // 没找到不符合指标--合格 result = '所检项目合格' } else if (index0 === -1) { // 没找到符合指标--不合格 result = '不合格' } templateFormAndTableRef.value.form.conclusion = result return list } // ---------------------------------------------------------------------------------------- const isNeverDefineItemCategory = ref(false) // 检定项分类是否是从未定义过的 watch(() => itemFormData.value.itemCategoryName, (newValue) => { if (newValue) { // 判断是否是新增的检定项分类 const index = categoryNameDict.findIndex((item: any) => item === newValue) if (index === -1) { isNeverDefineItemCategory.value = true } else { isNeverDefineItemCategory.value = false } } }) // ------------------------------------------钩子---------------------------------------------- watch(() => props.infoId, (newValue) => { if (newValue) { infoId.value = newValue } }, { immediate: true }) onMounted(() => { if (pageType.value === 'add') { // 从我的任务跳转过来(新增) itemFormData.value.itemId = $route.query.itemId as string// 检定项id itemFormData.value.itemCategoryName = $route.query.itemCategoryName as string// 设备检定项分类名称 itemFormData.value.itemCategoryId = $route.query.itemCategoryId as string// 设备检定项分类名称id itemFormData.value.belongStandardEquipment = $route.query.belongStandardEquipment as string// 标准装置code itemFormData.value.belongStandardEquipmentName = $route.query.belongStandardEquipmentName as string// 标准装置名称 // 查输入值(查检定项管理的详情) fetchItemInfo($route.query.itemId! as string, $route.query.itemCategoryName! as string, $route.query.belongStandardEquipment as string) } else { itemFormData.value.itemCategoryName = $route.query.itemCategoryName as string // 设备检定项分类名称 itemFormData.value.itemCategoryId = $route.query.itemCategoryId as string// 设备检定项分类名称id itemFormData.value.belongStandardEquipment = $route.query.belongStandardEquipment as string// 标准装置code itemFormData.value.belongStandardEquipmentName = $route.query.belongStandardEquipmentName as string// 标准装置名称 fetchInfo() // fetchItemInfo($route.query.itemId! as string, $route.query.itemCategoryName! as string, $route.query.belongStandardEquipment as string) } }) defineExpose({ fetchInfo, checkout, itemFormData, templateFormAndTableRef, pageType, solveParamsBeforeSave }) </script> <template> <div class="measure-data-template-detail"> <template-form-and-table ref="templateFormAndTableRef" :page-type="pageType" @change-meter-identify="emits('changeMeterIdentify')" /> <!-- 标签 --> <detail-block v-if="!isNeverDefineItemCategory" :title="pageType !== 'detail' ? '检定数据' : ''" :class="pageType === 'detail' ? 'setBottom' : ''"> <el-radio-group v-if="pageType === 'detail'" 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' && itemFormData.appearance" ref="formRef" :model="itemFormData" label-width="140" label-position="right" style="margin-top: 20px;" > <el-row> <!-- 外观 --> <el-col :span="12"> <el-form-item label="外观及功能性检查:" prop="appearanceFunctionCheck"> <el-input v-model="itemFormData.appearanceFunctionCheck" class="full-width-input" autosize type="textarea" :disabled="pageType === 'detail'" /> </el-form-item> </el-col> </el-row> </el-form> <!-- 时基 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '数字示波器' && itemFormData.timeBase" title="时基" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('时基')"> 计算结果 </el-button> </template> <template-table v-loading="timeBaseLoading" :data="timeBaseList" :columns="itemFormData.methodType === '方法一' ? columns_time_base_method1 : columns_time_base_method2" :page-type="pageType" /> </detail-block> <!-- 直流增益 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '数字示波器' && itemFormData.currentGain" title="直流增益" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('直流增益')"> 计算结果 </el-button> </template> <template-table v-loading="zeroFrequencyGainLoading" :data="zeroFrequencyGainList" :columns="columns_zero_frequency_gain" :page-type="pageType" /> </detail-block> <!-- 直流偏置 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '数字示波器' && itemFormData.currentBias" title="直流偏置" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('直流偏置')"> 计算结果 </el-button> </template> <template-table v-loading="DCBiasLoading" type="直流偏置" :data="DCBiasList" :columns="columns_DC_bias" :page-type="pageType" /> </detail-block> <!-- 频带宽度 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '数字示波器' && itemFormData.bandWidth" title="频带宽度" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('频带宽度')"> 计算结果 </el-button> </template> <template-table v-loading="frequencyBandwidthLoading" :data="frequencyBandwidthList" :columns="columns_frequency_bandwidth" :page-type="pageType" /> </detail-block> <!-- 触发灵敏度 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '数字示波器' && itemFormData.triggerSensitivity" title="触发灵敏度" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('触发灵敏度')"> 计算结果 </el-button> </template> <template-table v-loading="triggerSensitivityLoading" type="触发灵敏度" :data="triggerSensitivityList" :columns="columns_trigger_sensitivity" :page-type="pageType" /> </detail-block> <!-- 上升时间 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '数字示波器' && itemFormData.riseTime" title="上升时间" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('上升时间')"> 计算结果 </el-button> </template> <template-table v-loading="risetimeLoading" type="上升时间(数字示波器)" :data="risetimeList" :columns="columns_risetime" :page-type="pageType" /> </detail-block> <!-- 输入电阻 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '数字示波器' && itemFormData.inputResistance" title="输入电阻" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('输入电阻')"> 计算结果 </el-button> </template> <template-table v-loading="inputResistanceLoading" type="输入电阻(数字示波器)" :data="inputResistanceList" :columns="columns_input_resistance" :page-type="pageType" /> </detail-block> <!-- 校准信号 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '数字示波器' && itemFormData.calibratingSignal" title="校准信号" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('校准信号')"> 计算结果 </el-button> </template> <template-table v-loading="calibratingSignalLoading" type="校准信号(数字示波器)" :data="calibratingSignalList" :columns="columns_calibrating_signal" :page-type="pageType" /> </detail-block> <!-- 扫描时间系数及扩展 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '模拟示波器' && itemFormData.scanTimeCoefficient" title="扫描时间系数及扩展" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('扫描时间系数及扩展')"> 计算结果 </el-button> </template> <template-table v-loading="scanningTimeLoading" type="扫描时间系数及扩展" :data="scanningTimeList" :columns="columns_scan_time" :page-type="pageType" /> </detail-block> <!-- 垂直幅度 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '模拟示波器' && itemFormData.verticalAmplitude" title="垂直幅度" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('垂直幅度')"> 计算结果 </el-button> </template> <template-table v-loading="verticalSizeLoading" type="垂直幅度" :data="verticalSizeList" :columns="columns_vertical_size" :page-type="pageType" /> </detail-block> <!-- 频带宽度 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '模拟示波器' && itemFormData.bandWidth" title="频带宽度" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('频带宽度')"> 计算结果 </el-button> </template> <template-table v-loading="frequencyBandwidthSimulateLoading" type="频带宽度(模拟示波器)" :data="frequencyBandwidthSimulateList" :columns="columns_frequency_bandwidth_simulate" :page-type="pageType" /> </detail-block> <!-- 触发特性 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '模拟示波器' && itemFormData.triggerCharacter" title="触发特性" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('触发特性')"> 计算结果 </el-button> </template> <template-table v-loading="triggerCharacteristicLoading" type="触发特性" :data="triggerCharacteristicList" :columns="columns_trigger_characteristic" :page-type="pageType" /> </detail-block> <!-- 输入电阻 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '模拟示波器' && itemFormData.inputResistance" title="输入电阻" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('输入电阻')"> 计算结果 </el-button> </template> <template-table v-loading="inputResistanceSimulateLoading" type="输入电阻(模拟示波器)" :data="inputResistanceSimulateList" :columns="columns_input_resistance_simulate" :page-type="pageType" /> </detail-block> <!-- 上升时间 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '模拟示波器' && itemFormData.riseTime" title="上升时间" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('上升时间')"> 计算结果 </el-button> </template> <template-table v-loading="risetimeSimulateLoading" type="上升时间(模拟示波器)" :data="risetimeSimulateList" :columns="columns_risetime_simulate" :page-type="pageType" /> </detail-block> <!-- 校准信号 --> <detail-block v-if="current === 'measure-data' && itemFormData.itemCategoryName === '模拟示波器' && itemFormData.calibratingSignal" title="校准信号" > <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="calculate('校准信号')"> 计算结果 </el-button> </template> <template-table v-loading="calibratingSignalSimulateLoading" type="校准信号(模拟示波器)" :data="calibratingSignalSimulateList" :columns="columns_calibrating_signal_simulate" :page-type="pageType" /> </detail-block> <!-- 历史修改记录 --> <change-record v-if="pageType === 'detail' && current === 'change-record'" :info-id="infoId" /> </detail-block> <!-- ------------------------------------------------结论------------------------------------------------ --> <el-form v-if="current === 'measure-data' && !isNeverDefineItemCategory" ref="formRef" :model="itemFormData" label-width="140" label-position="right" style="margin-top: 20px;" > <el-row> <el-col :span="12"> <el-form-item label="备注:" prop="remark"> <el-input v-model="itemFormData.remark" class="full-width-input" :placeholder="pageType === 'detail' ? ' ' : '备注'" autosize type="textarea" :disabled="pageType === 'detail'" /> </el-form-item> </el-col> </el-row> </el-form> </div> </template> <style lang="scss"> .measure-data-template-detail { .el-radio__label { display: block !important; } } </style>