diff --git a/src/views/business/measure/item/components/ninth/templateDetail.vue b/src/views/business/measure/item/components/ninth/templateDetail.vue index 001555a..c043141 100644 --- a/src/views/business/measure/item/components/ninth/templateDetail.vue +++ b/src/views/business/measure/item/components/ninth/templateDetail.vue @@ -9,7 +9,8 @@ import { useCheckList } from '@/commonMethods/useCheckList' import { calculate, recalculate } from '@/api/business/measure/caculate' import type { TableColumn } from '@/components/NormalTable/table_interface' - +import templateTable1 from '@/views/business/measure/item/components/second/templateTable.vue' +import { differenceArray, setSelectList } from '@/utils/Array' const props = defineProps({ pageType: { type: String, @@ -34,7 +35,32 @@ default: '', }, }) +const form = ref({ + appearanceFunctionCheck: 1, // 外观及功能性检查 + frequencyDisplay: 1, // 频率显示 + sweepWidth: 1, // 扫频宽度 + middleFrequencyWidth: 1, // 中频带宽 + middleConversionDeviation: 1, // 中频带宽转换偏差 + referenceLevel: 1, // 参考电平 + verticalScale: 1, // 垂直刻度(显示位置从上到下) + inputFrequency: 1, // 输入频响 + averageNoiseLevel: 1, // 平均噪声电平 + harmonicDistortion: 1, // 谐波失真 + inputAttenuation: 1, // 输入衰减 + gainCompression: 1, // 1dB增益压缩点 + calibratingSignal: 1, // 校准信号 + + frequencyReferenceAccuracy: '', // 频率基准精度 + valueOne: '', // 数值1 + valueTwo: '', // 数值2 + valueThree: '', // 数值3 + valueFour: '', // 数值4 +}) +watch(() => props.form, (newVal) => { + form.value = newVal +}) const tableLoading = ref(false) +const list = ref([]) // 全部数据 const frequencyList = ref([]) // 频率显示 const sweepWidthList = ref([]) // 扫频宽度 const intermediateFrequencyBandwidthList = ref([]) // 中频带宽 @@ -46,278 +72,737 @@ const harmonicDistortionList = ref([]) // 谐波失真 const inputAttenuatorList = ref([]) // 输入衰减 const gainCompressionPointList = ref([]) // 1dB增益压缩点 - -const frequencyCheckoutList = ref([]) // 频率显示多选 -const sweepWidthCheckoutList = ref([]) // 扫频宽度多选 -const intermediateFrequencyBandwidthCheckoutList = ref([]) // 中频带宽多选 -const transitionDeviationCheckoutList = ref([]) // 中频带宽转换偏差多选 -const referenceElectricalLevelCheckoutList = ref([]) // 参考电平多选 -const verticalGraduatedCheckoutList = ref([]) // 垂直刻度(显示位置从上到下)多选 -const inputFrequencyResponseCheckoutList = ref([]) // 输入频响多选 -const averageNoiseLevelCheckoutList = ref([]) // 平均噪声电平多选 -const harmonicDistortionCheckoutList = ref([]) // 谐波失真 -const inputAttenuatorCheckoutList = ref([]) // 输入衰减多选 -const gainCompressionPointCheckoutList = ref([]) // 1dB增益压缩点多选 - +const calibratingSignalList = ref([]) // 校准信号 +// 表格数据对应 list 字典 +const listDict = ref<{ [key: string]: any }>() +watch(() => [frequencyList.value, sweepWidthList.value, intermediateFrequencyBandwidthList.value, transitionDeviationList.value, referenceElectricalLevelList.value, verticalGraduatedList.value, inputFrequencyResponseList.value, averageNoiseLevelList.value, harmonicDistortionList.value, inputAttenuatorList.value, gainCompressionPointList.value, calibratingSignalList.value], () => { + listDict.value = { + '1-频率显示': frequencyList.value, + '2-扫频宽度': sweepWidthList.value, + '3-中频带宽': intermediateFrequencyBandwidthList.value, + '4-中频带宽转换偏差': transitionDeviationList.value, + '5-参考电平': referenceElectricalLevelList.value, + '6-垂直刻度(显示位置从上到下)': verticalGraduatedList.value, + '7-输入频响': inputFrequencyResponseList.value, + '8-平均噪声电平': averageNoiseLevelList.value, + '9-谐波失真': harmonicDistortionList.value, + '10-输入衰减': inputAttenuatorList.value, + '11-1dB增益压缩点': gainCompressionPointList.value, + '12-校准信号': calibratingSignalList.value, + } + list.value = [] + for (const i in listDict.value) { + list.value = [...list.value, ...listDict.value[i]] + } +}, { + deep: true, +}) +// 表格对应的 选择状态 +let chekedDict = {} as { [key: string]: any } +watch(() => form.value, () => { + chekedDict = { + '1-频率显示': form.value.frequencyDisplay, + '2-扫频宽度': form.value.sweepWidth, + '3-中频带宽': form.value.middleFrequencyWidth, + '4-中频带宽转换偏差': form.value.middleConversionDeviation, + '5-参考电平': form.value.referenceLevel, + '6-垂直刻度(显示位置从上到下)': form.value.verticalScale, + '7-输入频响': form.value.inputFrequency, + '8-平均噪声电平': form.value.averageNoiseLevel, + '9-谐波失真': form.value.harmonicDistortion, + '10-输入衰减': form.value.inputAttenuation, + '11-1dB增益压缩点': form.value.gainCompression, + '12-校准信号': form.value.calibratingSignal, + } + frequencyList.value.forEach((item: any) => { + item.frequencyReferenceAccuracy = form.value.frequencyReferenceAccuracy + item.valueOne = form.value.valueOne + item.valueTwo = form.value.valueTwo + item.valueThree = form.value.valueThree + item.valueFour = form.value.valueFour + }) +}, { + deep: true, +}) // ----------------------------------------表头------------------------------------------------ const columns_frequency = ref([ // 频率显示 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '扫频宽度', value: 'nominalValue', align: 'center', required: true }, - { text: '扫频宽度单位', value: 'nominalValue', align: 'center', required: true }, - { text: '水平分辨率', value: 'minimumAllowFactorA', align: 'center', required: true }, - { text: '水平分辨率单位', value: 'maximumAllowFactorB', align: 'center', required: true }, - { text: '分辨率带宽', value: 'minimumAllowValue', align: 'center', required: false }, - { text: '分辨率带宽单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'frequencyNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '扫频宽度', value: 'sweepWidth', align: 'center', required: true, type: 'select-dict', code: 'frequencysweepWidth' }, + { text: '扫频宽度单位', value: 'sweepWidthUnit', align: 'center', required: true, type: 'select' }, + { text: '水平分辨率', value: 'horizontalResolution', align: 'center', required: true, type: 'number' }, + { text: '水平分辨率单位', value: 'horizontalResolutionUnit', align: 'center', required: true, type: 'select' }, + { text: '分辨率带宽', value: 'resolutionBandwidth', align: 'center', required: true, type: 'number' }, + { text: '分辨率带宽单位', value: 'resolutionBandwidthUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: false, type: 'text' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: false, type: 'text' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, ]) const columns_sweep_width = ref([ // 扫频宽度 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '水平分辨率', value: 'minimumAllowFactorA', align: 'center', required: true }, - { text: '水平分辨率单位', value: 'maximumAllowFactorB', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '水平分辨率', value: 'horizontalResolution', align: 'center', required: true, type: 'number' }, + { text: '水平分辨率单位', value: 'horizontalResolutionUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number', width: '400' }, ]) const columns_intermediate_frequency_bandwidth = ref([ // 中频带宽 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndexRight', align: 'center', required: true, width: '400' }, ]) const columns_transition_deviation = ref([ // 中频带宽转换偏差 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number', width: '250' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_reference_electrical_level = ref([ // 参考电平 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量单位', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '标准衰减器衰减量', value: 'standardAttenuatorAttenuation', align: 'center', required: true, type: 'number' }, + { text: '标准衰减器衰减量单位', value: 'standardAttenuatorAttenuationUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_vertical_graduated = ref([ // 垂直刻度(显示位置从上到下) - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量单位', value: 'nominalValue', align: 'center', required: true }, - { text: '信号源幅度', value: 'nominalValue', align: 'center', required: true }, - { text: '信号源幅度单位', value: 'nominalValue', align: 'center', required: true }, - { text: '垂直刻度', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'verticalGraduatedValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '标准衰减器衰减量', value: 'standardAttenuatorAttenuation', align: 'center', required: true, type: 'select-dict', code: 'standardAttenuatorAttenuation' }, + { text: '标准衰减器衰减量单位', value: 'standardAttenuatorAttenuationUnit', align: 'center', required: true, type: 'select' }, + { text: '信号源幅度', value: 'signalSourceAmplitude', align: 'center', required: true, type: 'select-dict', code: 'signalSourceAmplitude' }, + { text: '信号源幅度单位', value: 'signalSourceAmplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '垂直刻度', value: 'verticalScale', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'verticalScaleFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, ]) const columns_input_frequency_response = ref([ // 输入频响 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'inputFrequencyValue' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_average_noise_level = ref([ // 平均噪声电平 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '起始频率', value: 'nominalValue', align: 'center', required: true }, - { text: '起始频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '终止频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '终止频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '起始频率', value: 'startFrequency', align: 'center', required: true, type: 'select-dict', code: 'averageNoiseLevelStartFrequency' }, + { text: '起始频率单位', value: 'startFrequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '终止频率', value: 'endFrequency', align: 'center', required: true, type: 'select-dict', code: 'averageNoiseLevelEndFrequency' }, + { text: '终止频率单位', value: 'endFrequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '修正值', value: 'correctedValue', align: 'center', required: true, type: 'number' }, + { text: '指标上限', value: 'upperIndex', align: 'center', required: true, type: 'number' }, ]) const columns_harmonic_distortion = ref([ // 谐波失真 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '频率', value: 'nominalValue', align: 'center', required: true }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'harmonicDistortionFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: 'RBW', value: 'rbwValue', align: 'center', required: true, type: 'number' }, + { text: 'RBW单位', value: 'rbwValueUnit', align: 'center', required: true, type: 'select' }, + { text: 'VBW', value: 'vbwValue', align: 'center', required: true, type: 'number' }, + { text: 'VBW单位', value: 'vbwValueUnit', align: 'center', required: true, type: 'select' }, + { text: '二次谐波失真指标上限', value: 'upperIndexTwice', align: 'center', required: true, type: 'number' }, + { text: '三次谐波失真指标上限', value: 'upperIndexThrice', align: 'center', required: true, type: 'number' }, + { text: '四次谐波失真指标上限', value: 'upperIndexQuartic', align: 'center', required: true, type: 'number' }, ]) const columns_input_attenuator = ref([ // 输入衰减 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '衰减器衰减量', value: 'nominalValue', align: 'center', required: true }, - { text: '衰减器衰减量单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '输入衰减器', value: 'nominalValue', align: 'center', required: true }, - { text: '输入衰减器单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频谱仪参考电平', value: 'nominalValue', align: 'center', required: true }, - { text: '频谱仪参考电平单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率', value: 'nominalValue', align: 'center', required: true }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标准衰减器衰减量', value: 'standardAttenuatorAttenuation', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationStandardAttenuatorAttenuation' }, + { text: '标准衰减器衰减量单位', value: 'standardAttenuatorAttenuationUnit', align: 'center', required: true, type: 'select' }, + { text: '输入衰减器', value: 'inputAttenuator', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationStandardAttenuatorAttenuation' }, + { text: '输入衰减器单位', value: 'inputAttenuatorUnit', align: 'center', required: true, type: 'select' }, + { text: '频谱仪参考电平', value: 'spectrumLevel', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationSpectrumLevel' }, + { text: '频谱仪参考电平单位', value: 'spectrumLevelUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_gain_compression_point = ref([ // 1dB增益压缩点 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '输入衰减器', value: 'nominalValue', align: 'center', required: true }, - { text: '输入衰减器单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '参考电平', value: 'nominalValue', align: 'center', required: true }, - { text: '参考电平单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率', value: 'nominalValue', align: 'center', required: true }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '输入衰减器', value: 'inputAttenuator', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationStandardAttenuatorAttenuation' }, + { text: '输入衰减器单位', value: 'inputAttenuatorUnit', align: 'center', required: true, type: 'select' }, + { text: '参考电平', value: 'spectrumLevel', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationSpectrumLevel' }, + { text: '参考电平单位', value: 'spectrumLevelUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, +]) +const columns_calibrating_signal = ref([ // 校准信号 + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '类型', value: 'typeValue', align: 'center', required: true, type: 'select' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'number' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, ]) // --------------------------------表格操作--------------------------------------------------- -// 多选 -const handleSelectionChange = (e: any, type: string) => { - switch (type) { - case '频率显示': // 频率显示 - frequencyCheckoutList.value = e - break - case '扫频宽度': // 扫描宽度 - sweepWidthCheckoutList.value = e - break - case '中频带宽': // 中频带宽 - intermediateFrequencyBandwidthCheckoutList.value = e - break - case '中频带宽转换偏差': // 中频带宽转换偏差 - transitionDeviationCheckoutList.value = e - break - case '参考电平': // 参考电平 - referenceElectricalLevelCheckoutList.value = e - break - case '垂直刻度': // 垂直刻度(显示位置从上到下) - verticalGraduatedCheckoutList.value = e - break - case '输入频响': // 输入频响 - inputFrequencyResponseCheckoutList.value = e - break - case '平均噪声电平': // 平均噪声电平 - averageNoiseLevelCheckoutList.value = e - break - case '谐波失真': // 谐波失真 - harmonicDistortionCheckoutList.value = e - break - case '输入衰减': // 输入衰减 - inputAttenuatorCheckoutList.value = e - break - case '1dB增益压缩点': // 1dB增益压缩点 - gainCompressionPointCheckoutList.value = e - break - } -} - +// 表格对应 columns字典 +const columnsDict = ref<{ [key: string]: any }>( + { + '1-频率显示': columns_frequency.value, + '2-扫频宽度': columns_sweep_width.value, + '3-中频带宽': columns_intermediate_frequency_bandwidth.value, + '4-中频带宽转换偏差': columns_transition_deviation.value, + '5-参考电平': columns_reference_electrical_level.value, + '6-垂直刻度(显示位置从上到下)': columns_vertical_graduated.value, + '7-输入频响': columns_input_frequency_response.value, + '8-平均噪声电平': columns_average_noise_level.value, + '9-谐波失真': columns_harmonic_distortion.value, + '10-输入衰减': columns_input_attenuator.value, + '11-1dB增益压缩点': columns_gain_compression_point.value, + '12-校准信号': columns_calibrating_signal.value, + }, +) /** * 增加行公共方法 * @param list 要操作的数组 * @param title 操作的表格 */ -const addRow = (list: IList[], title: string) => { - // if (checkList(list, `${title}表格`)) { - // if (list.length) { // 增加行时默认上一行数据 - // list.push({ - // id: '', - // checkPoint: list[list.length - 1].checkPoint, // 核查点(直接存字典value) - // checkType: list[list.length - 1].checkType, // 核查类型 - // cycleNumber: list[list.length - 1].cycleNumber, // 循环次数 - // equipmentId: list[list.length - 1].equipmentId, // 配套设备id - // itemCategoryId: list[list.length - 1].itemCategoryId, // 核查项分类id(能够确定是哪个标准装置) - // params: list[list.length - 1].params, // 核查项目(直接存字典value) - // remark: list[list.length - 1].remark, // 核查项备注(每个数据存储的核查项备注相同,前端取列表中一个即可) - // resolution: list[list.length - 1].resolution, // 分辨力 - // testType: list[list.length - 1].testType, // 核查点类型(直接存字典value) - // unit: list[list.length - 1].unit, // 单位(直接存字典value) - // urel: list[list.length - 1].urel, // 测量标准相对扩展不确定度urel - // }) - // } - // else { - // list.push({ - // checkPoint: '', // 核查点 - // checkType: '', // 核查类型(直接存字典value,多个逗号分隔) - // cycleNumber: 6, // 循环次数 - // equipmentId: infoId.value, // 配套设备id - // itemCategoryId: form.value.itemCategoryId, // 核查项分类id(能够确定是哪个标准装置) - // params: '', // 核查项目(直接存字典value) - // remark: '', // 核查项备注 - // resolution: 0.0001, // 分辨力 - // testType: title, // 核查点类型(直接存字典value) - // unit: '', // 单位(直接存字典value) - // urel: 0, // 测量标准相对扩展不确定度urel - // }) - // } - // } +const addRow = (list: IList[], title: string, index: string) => { + if (checkList(list, columnsDict.value[`${index}-${title}`], `${title}表格`)) { + switch (title) { + case '频率显示': // 频率显示 + frequencyList.value.length + ? frequencyList.value.push(JSON.parse(JSON.stringify(frequencyList.value[frequencyList.value.length - 1]))) + : frequencyList.value.push({ + dataType: '1', + params: '频率显示', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + sweepWidth: '', // 扫频宽度 + sweepWidthUnit: '', // 扫频宽度单位 + horizontalResolution: '', // 水平分辨率 + horizontalResolutionUnit: '', // 水平分辨率单位 + resolutionBandwidth: '', // 分辨率带宽 + resolutionBandwidthUnit: '', // 分辨率带宽单位 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + + frequencyReferenceAccuracy: form.value.frequencyReferenceAccuracy, // 频率基准精度 + valueOne: form.value.valueOne, // 数值1 + valueTwo: form.value.valueTwo, // 数值2 + valueThree: form.value.valueThree, // 数值3 + valueFour: form.value.valueFour, // 数值4 + editable: true, + } as any) + break + case '扫频宽度': // 扫频宽度 + sweepWidthList.value.length + ? sweepWidthList.value.push(JSON.parse(JSON.stringify(sweepWidthList.value[sweepWidthList.value.length - 1]))) + : sweepWidthList.value.push({ + dataType: '2', + params: '扫频宽度', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + horizontalResolution: '', // 水平分辨率 + horizontalResolutionUnit: '', // 水平分辨率单位 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + editable: true, + } as any) + break + case '中频带宽': // 中频带宽 + intermediateFrequencyBandwidthList.value.length + ? intermediateFrequencyBandwidthList.value.push(JSON.parse(JSON.stringify(intermediateFrequencyBandwidthList.value[intermediateFrequencyBandwidthList.value.length - 1]))) + : intermediateFrequencyBandwidthList.value.push({ + dataType: '3', + params: '中频带宽', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexLeft: '', // 技术指标 + technicalIndexRight: '', // 技术指标 + editable: true, + } as any) + break + case '中频带宽转换偏差': // 中频带宽转换偏差 + transitionDeviationList.value.length + ? transitionDeviationList.value.push(JSON.parse(JSON.stringify({ ...transitionDeviationList.value[transitionDeviationList.value.length - 1], referencePoint: transitionDeviationList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : transitionDeviationList.value.push({ + dataType: '4', + params: '中频带宽转换偏差', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + editable: true, + } as any) + break + case '参考电平': // 参考电平 + referenceElectricalLevelList.value.length + ? referenceElectricalLevelList.value.push(JSON.parse(JSON.stringify({ ...referenceElectricalLevelList.value[referenceElectricalLevelList.value.length - 1], referencePoint: referenceElectricalLevelList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : referenceElectricalLevelList.value.push({ + dataType: '5', + params: '参考电平', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + standardAttenuatorAttenuation: '', // 标准衰减器衰减量 + standardAttenuatorAttenuationUnit: '', // 标准衰减器衰减量单位 + editable: true, + } as any) + break + case '垂直刻度(显示位置从上到下)': // 频率显示 + verticalGraduatedList.value.length + ? verticalGraduatedList.value.push(JSON.parse(JSON.stringify(verticalGraduatedList.value[verticalGraduatedList.value.length - 1]))) + : verticalGraduatedList.value.push({ + dataType: '6', + params: '垂直刻度', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + standardAttenuatorAttenuation: '', // 标准衰减器衰减量 + standardAttenuatorAttenuationUnit: '', // 标准衰减器衰减量单位 + signalSourceAmplitude: '', // 信号源幅度 + signalSourceAmplitudeUnit: '', // 信号源幅度单位 + verticalScale: '', // 垂直刻度 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + editable: true, + } as any) + break + case '输入频响': // 输入频响 + inputFrequencyResponseList.value.length + ? inputFrequencyResponseList.value.push(JSON.parse(JSON.stringify({ ...inputFrequencyResponseList.value[inputFrequencyResponseList.value.length - 1], referencePoint: inputFrequencyResponseList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : inputFrequencyResponseList.value.push({ + dataType: '7', + params: '输入频响', + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + editable: true, + } as any) + break + case '平均噪声电平': // 平均噪声电平 + averageNoiseLevelList.value.length + ? averageNoiseLevelList.value.push(JSON.parse(JSON.stringify(averageNoiseLevelList.value[averageNoiseLevelList.value.length - 1]))) + : averageNoiseLevelList.value.push({ + dataType: '8', + params: '平均噪声电平', + startFrequency: '', // 起始频率 + startFrequencyUnit: '', // 起始频率单位 + endFrequency: '', // 终止频率 + endFrequencyUnit: '', // 终止频率单位 + correctedValue: '', // 修正值 + upperIndex: '', // 指标上限 + editable: true, + } as any) + break + case '谐波失真': // 谐波失真 + harmonicDistortionList.value.length + ? harmonicDistortionList.value.push(JSON.parse(JSON.stringify(harmonicDistortionList.value[harmonicDistortionList.value.length - 1]))) + : harmonicDistortionList.value.push({ + dataType: '9', + params: '谐波失真', + frequency: '', // 频率 + frequencyUnit: '', // 频率 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + rbwValue: '1', // RBW + rbwValueUnit: '', // RBW单位 + vbwValue: '1', // VBW + vbwValueUnit: '', // VBW单位 + upperIndexTwice: '', // 二次谐波失真指标上限 + upperIndexThrice: '', // 三次谐波失真指标上限 + upperIndexQuartic: '', // 四次谐波失真指标上限 + + editable: true, + } as any) + break + case '输入衰减': // 输入衰减 + inputAttenuatorList.value.length + ? inputAttenuatorList.value.push(JSON.parse(JSON.stringify({ ...inputAttenuatorList.value[inputAttenuatorList.value.length - 1], referencePoint: inputAttenuatorList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : inputAttenuatorList.value.push({ + dataType: '10', + params: '输入衰减', + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + spectrumLevel: '', // 频谱仪参考电平 + spectrumLevelUnit: '', // 频谱仪参考电平单位 + standardAttenuatorAttenuation: '', // 衰减器衰减量 + standardAttenuatorAttenuationUnit: '', // 衰减器衰减量单位 + inputAttenuator: '', // 输入衰减器 + inputAttenuatorUnit: '', // 输入衰减器单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + editable: true, + } as any) + break + case '1dB增益压缩点': // 1dB增益压缩点 + gainCompressionPointList.value.length + ? gainCompressionPointList.value.push(JSON.parse(JSON.stringify(gainCompressionPointList.value[gainCompressionPointList.value.length - 1]))) + : gainCompressionPointList.value.push({ + dataType: '11', + params: '1dB增益压缩点', + inputAttenuator: '', // 输入衰减器 + inputAttenuatorUnit: '', // 输入衰减器单位 + spectrumLevel: '', // 参考电平 + spectrumLevelUnit: '', // 参考电平单位 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + + editable: true, + } as any) + break + case '校准信号': // 校准信号 + calibratingSignalList.value.length + ? calibratingSignalList.value.push(JSON.parse(JSON.stringify(calibratingSignalList.value[calibratingSignalList.value.length - 1]))) + : calibratingSignalList.value.push({ + dataType: '12', + params: '校准信号', + technicalIndex: '', // 技术指标 + technicalIndexUnit: '', // 技术指标单位 + typeValue: '', // 类型 + nominalValue: '', // 标称值 + unit: '', // 标称值单位 + editable: true, + } as any) + break + } + } } /** * 删除行公共方法 * @param checkoutList 选中的数组 * @param list 操作的数组 */ -const delRow = (checkoutList: IList[], list: IList[]) => { +const delRow = (checkoutList: IList[], list: IList[], title: string) => { if (!checkoutList.length) { ElMessage.warning('请选中要删除的行') } else { - list = list.filter((item: any) => { - return !checkoutList.includes(item) - }) + let data = [] as any[] + data = differenceArray(list, checkoutList) + switch (title) { + case '频率显示': // 频率显示 + frequencyList.value = data + break + case '扫频宽度': // 扫频宽度 + sweepWidthList.value = data + break + case '中频带宽': // 中频带宽 + intermediateFrequencyBandwidthList.value = data + break + case '中频带宽转换偏差': // 中频带宽转换偏差 + transitionDeviationList.value = data + break + case '参考电平': // 参考电平 + referenceElectricalLevelList.value = data + break + case '垂直刻度(显示位置从上到下)': // 垂直刻度(显示位置从上到下) + verticalGraduatedList.value = data + break + case '输入频响': // 垂直刻度(显示位置从上到下) + inputFrequencyResponseList.value = data + break + case '平均噪声电平': // 平均噪声电平 + averageNoiseLevelList.value = data + break + case '谐波失真': // 谐波失真 + harmonicDistortionList.value = data + break + case '输入衰减': // 输入衰减 + inputAttenuatorList.value = data + break + case '1dB增益压缩点': // 1dB增益压缩点 + gainCompressionPointList.value = data + break + case '校准信号': // 校准信号 + calibratingSignalList.value = data + break + } } } // ---------------------------------------------校验--------------------------------------------------- -// 校验表格(点击保存的时候用、生成标准器示值) -const checkList = () => { - // return useCheckList(list.value, columns.value, '检定项表格') +// 校验表格(点击保存的时候用、生成标准器示值) +function checkList(list: any[], columns: any[], title: string) { + return useCheckList(list, columns, title) } -// ------------------------------------------------------------------------------------------------ -// 点击计算结果--上方表格计算 -const calculateDataTop = () => { +// 校验所有表格 +function checkAllList() { + let result = true + for (const i in columnsDict.value) { + console.log(i, listDict.value[i], columnsDict.value[i]) + const requireLength = !!((chekedDict[i] === '1' || chekedDict[i] === 1) && chekedDict[i]) + if (!useCheckList(listDict.value[i], columnsDict.value[i], i.substring(2), '', '', '', requireLength)) { + result = false + break + } + } + return result +} -} -// 点击生成辅助接地电阻--下面表格计算 -const calculateDataBottom = () => { - -} // ----------------------------------------------------------------------------------------------------- +const clearAllList = () => { + list.value = [] + frequencyList.value = [] + sweepWidthList.value = [] + intermediateFrequencyBandwidthList.value = [] + transitionDeviationList.value = [] + referenceElectricalLevelList.value = [] + verticalGraduatedList.value = [] + inputFrequencyResponseList.value = [] + averageNoiseLevelList.value = [] + harmonicDistortionList.value = [] + inputAttenuatorList.value = [] + gainCompressionPointList.value = [] + calibratingSignalList.value = [] + for (const i in listDict.value) { + listDict.value[i] = [] + } +} +watch(() => props.list, (newVal) => { // 检定项表格 + if (newVal) { + clearAllList() + newVal.forEach((item: any) => { + switch (item.dataType) { + case '1': + // 频率显示 + frequencyList.value.push({ ...item, params: '频率显示' }) + form.value + form.value.frequencyReferenceAccuracy = item.frequencyReferenceAccuracy + form.value.valueOne = item.valueOne + form.value.valueTwo = item.valueTwo + form.value.valueThree = item.valueThree + form.value.valueFour = item.valueFour + break + case '2': + // 扫频宽度 + sweepWidthList.value.push({ ...item, params: '扫频宽度' }) + break + case '3': + // 中频带宽 + intermediateFrequencyBandwidthList.value.push({ ...item, params: '中频带宽' }) + break + case '4': + // 中频带宽转换偏差 + transitionDeviationList.value.push({ ...item, params: '中频带宽转换偏差' }) + break + case '5': + // 参考电平 + referenceElectricalLevelList.value.push({ ...item, params: '参考电平' }) + break + case '6': + // 垂直刻度 + verticalGraduatedList.value.push({ ...item, params: '垂直刻度' }) + break + case '7': + // 输入频响 + inputFrequencyResponseList.value.push({ ...item, params: '输入频响' }) + break + case '8': + // 平均噪声电平 + averageNoiseLevelList.value.push({ ...item, params: '平均噪声电平' }) + break + case '9': + // 谐波失真 + harmonicDistortionList.value.push({ ...item, params: '谐波失真' }) + break + case '10': + // 输入衰减 + inputAttenuatorList.value.push({ ...item, params: '输入衰减' }) + break + case '11': + // 1dB增益压缩点 + gainCompressionPointList.value.push({ ...item, params: '1dB增益压缩点' }) + break + case '12': + // 校准信号 + calibratingSignalList.value.push({ ...item, params: '校准信号' }) + break + } + }) + } +}) -// watch(() => props.list, (newVal) => { // 检定项表格 -// if (newVal) { -// list.value = [...newVal] -// } -// }) +defineExpose({ list, checkAllList, form }) -// defineExpose({ list }) +// 表格下拉框等内容是否禁用 +const disabled = ({ scope, column }, fun) => { + fun(props.pageType === 'detail') +} +// 每个table对应的下拉框内容 字典 +const tableDict = ref<{ [key: string]: { value: string;name: string;id: string }[] }>({}) +const changeLoadSituationa = (value: any, index: number, text: string, type: string, list: any[], item: string) => { + if (item === '频率显示') { + if (text === '标称值') { + list[index].frequency = value + } + if (text === '标称值单位') { + list[index].frequencyUnit = typeof value === 'string' ? value : '' + } + } + if (item === '中频带宽转换偏差' || item === '参考电平' || item === '输入频响' || item === '输入衰减') { + if (text === '是否为参考点') { + if (value === '1') { + list.forEach((citem: any, cindex: number) => { + list[cindex].referencePoint = '0' + }) + list[index].referencePoint = '1' + } + } + } + if (item === '谐波失真') { + if (text === '二次谐波失真指标上限') { + list[index].upperIndexThrice = value + list[index].upperIndexQuartic = value + // list[index].upperIndexThrice ? '' : list[index].upperIndexThrice = value + // list[index].upperIndexQuartic ? '' : list[index].upperIndexQuartic = value + } + } + if (item === '校准信号') { + if (text === '标称值单位') { + list[index].technicalIndexUnit = typeof value === 'string' ? value : '' + } + if (text === '类型') { + typeof value === 'string' ? list[index].unit = '' : '' + } + } +} + +// 获取字典 +const nominalValueUnit = ref<{ value: string;name: string;id: string }[]>([]) // 标称值单位 +const amplitudeUnit = ref<{ value: string;name: string;id: string }[]>([]) // 幅度单位 +const standardAttenuatorAttenuationUnit = ref<{ value: string;name: string;id: string }[]>([]) // 标准衰减器衰减量单位 +const verticalScale = ref<{ value: string;name: string;id: string }[]>([]) // 垂直刻度 +const typeValue = ref<{ value: string;name: string;id: string }[]>([]) // 校准信号类型 +const fetchDict = async () => { + // 标称值单位 + const res1 = await getDictByCode('bizFirstStandardFrequencyUnit') + nominalValueUnit.value = res1.data + // 幅度单位 + const res2 = await getDictByCode('standardAmplitudeUnit') + amplitudeUnit.value = res2.data + // 标准衰减器衰减量单位 + const res3 = await getDictByCode('standardDBunit') + standardAttenuatorAttenuationUnit.value = res3.data + // 垂直刻度 + const res4 = await getDictByCode('verticalScale') + verticalScale.value = res4.data + // 校准信号类型 + const res5 = await getDictByCode('calibratingSignalType') + typeValue.value = res5.data + + tableDict.value = { + 标称值单位: nominalValueUnit.value, + 频率单位: nominalValueUnit.value, + VBW单位: nominalValueUnit.value, + RBW单位: nominalValueUnit.value, + 起始频率单位: nominalValueUnit.value, + 终止频率单位: nominalValueUnit.value, + 扫频宽度单位: nominalValueUnit.value, + 水平分辨率单位: nominalValueUnit.value, + 分辨率带宽单位: nominalValueUnit.value, + 幅度单位: amplitudeUnit.value, + 信号源幅度单位: amplitudeUnit.value, + 标准衰减器衰减量单位: standardAttenuatorAttenuationUnit.value, + 输入衰减器单位: standardAttenuatorAttenuationUnit.value, + 输入衰减单位: standardAttenuatorAttenuationUnit.value, + 频谱仪参考电平单位: standardAttenuatorAttenuationUnit.value, + 参考电平单位: amplitudeUnit.value, + 垂直刻度: verticalScale.value, + 类型: typeValue.value, + } +} +fetchDict() + +// 自定义下拉框内容 +const customSelect = (data: any, fun: any) => { + console.log(data, fun, 'data') + if (data.title === '校准信号' && data.text === '标称值单位') { + if (data.scope.row.typeValue === '频率') { + fun(nominalValueUnit.value) + } + else { + fun(amplitudeUnit.value) + } + } + else if (data.title === '垂直刻度(显示位置从上到下)' && data.text === '标称值单位') { + fun(amplitudeUnit.value) + } + else if (data.title === '参考电平' && data.text === '标称值单位') { + fun(amplitudeUnit.value) + } + else { + fun(tableDict.value[data.text]) + } +} diff --git a/src/views/business/measure/item/components/ninth/templateDetail.vue b/src/views/business/measure/item/components/ninth/templateDetail.vue index 001555a..c043141 100644 --- a/src/views/business/measure/item/components/ninth/templateDetail.vue +++ b/src/views/business/measure/item/components/ninth/templateDetail.vue @@ -9,7 +9,8 @@ import { useCheckList } from '@/commonMethods/useCheckList' import { calculate, recalculate } from '@/api/business/measure/caculate' import type { TableColumn } from '@/components/NormalTable/table_interface' - +import templateTable1 from '@/views/business/measure/item/components/second/templateTable.vue' +import { differenceArray, setSelectList } from '@/utils/Array' const props = defineProps({ pageType: { type: String, @@ -34,7 +35,32 @@ default: '', }, }) +const form = ref({ + appearanceFunctionCheck: 1, // 外观及功能性检查 + frequencyDisplay: 1, // 频率显示 + sweepWidth: 1, // 扫频宽度 + middleFrequencyWidth: 1, // 中频带宽 + middleConversionDeviation: 1, // 中频带宽转换偏差 + referenceLevel: 1, // 参考电平 + verticalScale: 1, // 垂直刻度(显示位置从上到下) + inputFrequency: 1, // 输入频响 + averageNoiseLevel: 1, // 平均噪声电平 + harmonicDistortion: 1, // 谐波失真 + inputAttenuation: 1, // 输入衰减 + gainCompression: 1, // 1dB增益压缩点 + calibratingSignal: 1, // 校准信号 + + frequencyReferenceAccuracy: '', // 频率基准精度 + valueOne: '', // 数值1 + valueTwo: '', // 数值2 + valueThree: '', // 数值3 + valueFour: '', // 数值4 +}) +watch(() => props.form, (newVal) => { + form.value = newVal +}) const tableLoading = ref(false) +const list = ref([]) // 全部数据 const frequencyList = ref([]) // 频率显示 const sweepWidthList = ref([]) // 扫频宽度 const intermediateFrequencyBandwidthList = ref([]) // 中频带宽 @@ -46,278 +72,737 @@ const harmonicDistortionList = ref([]) // 谐波失真 const inputAttenuatorList = ref([]) // 输入衰减 const gainCompressionPointList = ref([]) // 1dB增益压缩点 - -const frequencyCheckoutList = ref([]) // 频率显示多选 -const sweepWidthCheckoutList = ref([]) // 扫频宽度多选 -const intermediateFrequencyBandwidthCheckoutList = ref([]) // 中频带宽多选 -const transitionDeviationCheckoutList = ref([]) // 中频带宽转换偏差多选 -const referenceElectricalLevelCheckoutList = ref([]) // 参考电平多选 -const verticalGraduatedCheckoutList = ref([]) // 垂直刻度(显示位置从上到下)多选 -const inputFrequencyResponseCheckoutList = ref([]) // 输入频响多选 -const averageNoiseLevelCheckoutList = ref([]) // 平均噪声电平多选 -const harmonicDistortionCheckoutList = ref([]) // 谐波失真 -const inputAttenuatorCheckoutList = ref([]) // 输入衰减多选 -const gainCompressionPointCheckoutList = ref([]) // 1dB增益压缩点多选 - +const calibratingSignalList = ref([]) // 校准信号 +// 表格数据对应 list 字典 +const listDict = ref<{ [key: string]: any }>() +watch(() => [frequencyList.value, sweepWidthList.value, intermediateFrequencyBandwidthList.value, transitionDeviationList.value, referenceElectricalLevelList.value, verticalGraduatedList.value, inputFrequencyResponseList.value, averageNoiseLevelList.value, harmonicDistortionList.value, inputAttenuatorList.value, gainCompressionPointList.value, calibratingSignalList.value], () => { + listDict.value = { + '1-频率显示': frequencyList.value, + '2-扫频宽度': sweepWidthList.value, + '3-中频带宽': intermediateFrequencyBandwidthList.value, + '4-中频带宽转换偏差': transitionDeviationList.value, + '5-参考电平': referenceElectricalLevelList.value, + '6-垂直刻度(显示位置从上到下)': verticalGraduatedList.value, + '7-输入频响': inputFrequencyResponseList.value, + '8-平均噪声电平': averageNoiseLevelList.value, + '9-谐波失真': harmonicDistortionList.value, + '10-输入衰减': inputAttenuatorList.value, + '11-1dB增益压缩点': gainCompressionPointList.value, + '12-校准信号': calibratingSignalList.value, + } + list.value = [] + for (const i in listDict.value) { + list.value = [...list.value, ...listDict.value[i]] + } +}, { + deep: true, +}) +// 表格对应的 选择状态 +let chekedDict = {} as { [key: string]: any } +watch(() => form.value, () => { + chekedDict = { + '1-频率显示': form.value.frequencyDisplay, + '2-扫频宽度': form.value.sweepWidth, + '3-中频带宽': form.value.middleFrequencyWidth, + '4-中频带宽转换偏差': form.value.middleConversionDeviation, + '5-参考电平': form.value.referenceLevel, + '6-垂直刻度(显示位置从上到下)': form.value.verticalScale, + '7-输入频响': form.value.inputFrequency, + '8-平均噪声电平': form.value.averageNoiseLevel, + '9-谐波失真': form.value.harmonicDistortion, + '10-输入衰减': form.value.inputAttenuation, + '11-1dB增益压缩点': form.value.gainCompression, + '12-校准信号': form.value.calibratingSignal, + } + frequencyList.value.forEach((item: any) => { + item.frequencyReferenceAccuracy = form.value.frequencyReferenceAccuracy + item.valueOne = form.value.valueOne + item.valueTwo = form.value.valueTwo + item.valueThree = form.value.valueThree + item.valueFour = form.value.valueFour + }) +}, { + deep: true, +}) // ----------------------------------------表头------------------------------------------------ const columns_frequency = ref([ // 频率显示 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '扫频宽度', value: 'nominalValue', align: 'center', required: true }, - { text: '扫频宽度单位', value: 'nominalValue', align: 'center', required: true }, - { text: '水平分辨率', value: 'minimumAllowFactorA', align: 'center', required: true }, - { text: '水平分辨率单位', value: 'maximumAllowFactorB', align: 'center', required: true }, - { text: '分辨率带宽', value: 'minimumAllowValue', align: 'center', required: false }, - { text: '分辨率带宽单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'frequencyNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '扫频宽度', value: 'sweepWidth', align: 'center', required: true, type: 'select-dict', code: 'frequencysweepWidth' }, + { text: '扫频宽度单位', value: 'sweepWidthUnit', align: 'center', required: true, type: 'select' }, + { text: '水平分辨率', value: 'horizontalResolution', align: 'center', required: true, type: 'number' }, + { text: '水平分辨率单位', value: 'horizontalResolutionUnit', align: 'center', required: true, type: 'select' }, + { text: '分辨率带宽', value: 'resolutionBandwidth', align: 'center', required: true, type: 'number' }, + { text: '分辨率带宽单位', value: 'resolutionBandwidthUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: false, type: 'text' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: false, type: 'text' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, ]) const columns_sweep_width = ref([ // 扫频宽度 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '水平分辨率', value: 'minimumAllowFactorA', align: 'center', required: true }, - { text: '水平分辨率单位', value: 'maximumAllowFactorB', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '水平分辨率', value: 'horizontalResolution', align: 'center', required: true, type: 'number' }, + { text: '水平分辨率单位', value: 'horizontalResolutionUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number', width: '400' }, ]) const columns_intermediate_frequency_bandwidth = ref([ // 中频带宽 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndexRight', align: 'center', required: true, width: '400' }, ]) const columns_transition_deviation = ref([ // 中频带宽转换偏差 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number', width: '250' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_reference_electrical_level = ref([ // 参考电平 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量单位', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '标准衰减器衰减量', value: 'standardAttenuatorAttenuation', align: 'center', required: true, type: 'number' }, + { text: '标准衰减器衰减量单位', value: 'standardAttenuatorAttenuationUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_vertical_graduated = ref([ // 垂直刻度(显示位置从上到下) - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量单位', value: 'nominalValue', align: 'center', required: true }, - { text: '信号源幅度', value: 'nominalValue', align: 'center', required: true }, - { text: '信号源幅度单位', value: 'nominalValue', align: 'center', required: true }, - { text: '垂直刻度', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'verticalGraduatedValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '标准衰减器衰减量', value: 'standardAttenuatorAttenuation', align: 'center', required: true, type: 'select-dict', code: 'standardAttenuatorAttenuation' }, + { text: '标准衰减器衰减量单位', value: 'standardAttenuatorAttenuationUnit', align: 'center', required: true, type: 'select' }, + { text: '信号源幅度', value: 'signalSourceAmplitude', align: 'center', required: true, type: 'select-dict', code: 'signalSourceAmplitude' }, + { text: '信号源幅度单位', value: 'signalSourceAmplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '垂直刻度', value: 'verticalScale', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'verticalScaleFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, ]) const columns_input_frequency_response = ref([ // 输入频响 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'inputFrequencyValue' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_average_noise_level = ref([ // 平均噪声电平 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '起始频率', value: 'nominalValue', align: 'center', required: true }, - { text: '起始频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '终止频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '终止频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '起始频率', value: 'startFrequency', align: 'center', required: true, type: 'select-dict', code: 'averageNoiseLevelStartFrequency' }, + { text: '起始频率单位', value: 'startFrequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '终止频率', value: 'endFrequency', align: 'center', required: true, type: 'select-dict', code: 'averageNoiseLevelEndFrequency' }, + { text: '终止频率单位', value: 'endFrequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '修正值', value: 'correctedValue', align: 'center', required: true, type: 'number' }, + { text: '指标上限', value: 'upperIndex', align: 'center', required: true, type: 'number' }, ]) const columns_harmonic_distortion = ref([ // 谐波失真 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '频率', value: 'nominalValue', align: 'center', required: true }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'harmonicDistortionFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: 'RBW', value: 'rbwValue', align: 'center', required: true, type: 'number' }, + { text: 'RBW单位', value: 'rbwValueUnit', align: 'center', required: true, type: 'select' }, + { text: 'VBW', value: 'vbwValue', align: 'center', required: true, type: 'number' }, + { text: 'VBW单位', value: 'vbwValueUnit', align: 'center', required: true, type: 'select' }, + { text: '二次谐波失真指标上限', value: 'upperIndexTwice', align: 'center', required: true, type: 'number' }, + { text: '三次谐波失真指标上限', value: 'upperIndexThrice', align: 'center', required: true, type: 'number' }, + { text: '四次谐波失真指标上限', value: 'upperIndexQuartic', align: 'center', required: true, type: 'number' }, ]) const columns_input_attenuator = ref([ // 输入衰减 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '衰减器衰减量', value: 'nominalValue', align: 'center', required: true }, - { text: '衰减器衰减量单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '输入衰减器', value: 'nominalValue', align: 'center', required: true }, - { text: '输入衰减器单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频谱仪参考电平', value: 'nominalValue', align: 'center', required: true }, - { text: '频谱仪参考电平单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率', value: 'nominalValue', align: 'center', required: true }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标准衰减器衰减量', value: 'standardAttenuatorAttenuation', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationStandardAttenuatorAttenuation' }, + { text: '标准衰减器衰减量单位', value: 'standardAttenuatorAttenuationUnit', align: 'center', required: true, type: 'select' }, + { text: '输入衰减器', value: 'inputAttenuator', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationStandardAttenuatorAttenuation' }, + { text: '输入衰减器单位', value: 'inputAttenuatorUnit', align: 'center', required: true, type: 'select' }, + { text: '频谱仪参考电平', value: 'spectrumLevel', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationSpectrumLevel' }, + { text: '频谱仪参考电平单位', value: 'spectrumLevelUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_gain_compression_point = ref([ // 1dB增益压缩点 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '输入衰减器', value: 'nominalValue', align: 'center', required: true }, - { text: '输入衰减器单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '参考电平', value: 'nominalValue', align: 'center', required: true }, - { text: '参考电平单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率', value: 'nominalValue', align: 'center', required: true }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '输入衰减器', value: 'inputAttenuator', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationStandardAttenuatorAttenuation' }, + { text: '输入衰减器单位', value: 'inputAttenuatorUnit', align: 'center', required: true, type: 'select' }, + { text: '参考电平', value: 'spectrumLevel', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationSpectrumLevel' }, + { text: '参考电平单位', value: 'spectrumLevelUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, +]) +const columns_calibrating_signal = ref([ // 校准信号 + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '类型', value: 'typeValue', align: 'center', required: true, type: 'select' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'number' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, ]) // --------------------------------表格操作--------------------------------------------------- -// 多选 -const handleSelectionChange = (e: any, type: string) => { - switch (type) { - case '频率显示': // 频率显示 - frequencyCheckoutList.value = e - break - case '扫频宽度': // 扫描宽度 - sweepWidthCheckoutList.value = e - break - case '中频带宽': // 中频带宽 - intermediateFrequencyBandwidthCheckoutList.value = e - break - case '中频带宽转换偏差': // 中频带宽转换偏差 - transitionDeviationCheckoutList.value = e - break - case '参考电平': // 参考电平 - referenceElectricalLevelCheckoutList.value = e - break - case '垂直刻度': // 垂直刻度(显示位置从上到下) - verticalGraduatedCheckoutList.value = e - break - case '输入频响': // 输入频响 - inputFrequencyResponseCheckoutList.value = e - break - case '平均噪声电平': // 平均噪声电平 - averageNoiseLevelCheckoutList.value = e - break - case '谐波失真': // 谐波失真 - harmonicDistortionCheckoutList.value = e - break - case '输入衰减': // 输入衰减 - inputAttenuatorCheckoutList.value = e - break - case '1dB增益压缩点': // 1dB增益压缩点 - gainCompressionPointCheckoutList.value = e - break - } -} - +// 表格对应 columns字典 +const columnsDict = ref<{ [key: string]: any }>( + { + '1-频率显示': columns_frequency.value, + '2-扫频宽度': columns_sweep_width.value, + '3-中频带宽': columns_intermediate_frequency_bandwidth.value, + '4-中频带宽转换偏差': columns_transition_deviation.value, + '5-参考电平': columns_reference_electrical_level.value, + '6-垂直刻度(显示位置从上到下)': columns_vertical_graduated.value, + '7-输入频响': columns_input_frequency_response.value, + '8-平均噪声电平': columns_average_noise_level.value, + '9-谐波失真': columns_harmonic_distortion.value, + '10-输入衰减': columns_input_attenuator.value, + '11-1dB增益压缩点': columns_gain_compression_point.value, + '12-校准信号': columns_calibrating_signal.value, + }, +) /** * 增加行公共方法 * @param list 要操作的数组 * @param title 操作的表格 */ -const addRow = (list: IList[], title: string) => { - // if (checkList(list, `${title}表格`)) { - // if (list.length) { // 增加行时默认上一行数据 - // list.push({ - // id: '', - // checkPoint: list[list.length - 1].checkPoint, // 核查点(直接存字典value) - // checkType: list[list.length - 1].checkType, // 核查类型 - // cycleNumber: list[list.length - 1].cycleNumber, // 循环次数 - // equipmentId: list[list.length - 1].equipmentId, // 配套设备id - // itemCategoryId: list[list.length - 1].itemCategoryId, // 核查项分类id(能够确定是哪个标准装置) - // params: list[list.length - 1].params, // 核查项目(直接存字典value) - // remark: list[list.length - 1].remark, // 核查项备注(每个数据存储的核查项备注相同,前端取列表中一个即可) - // resolution: list[list.length - 1].resolution, // 分辨力 - // testType: list[list.length - 1].testType, // 核查点类型(直接存字典value) - // unit: list[list.length - 1].unit, // 单位(直接存字典value) - // urel: list[list.length - 1].urel, // 测量标准相对扩展不确定度urel - // }) - // } - // else { - // list.push({ - // checkPoint: '', // 核查点 - // checkType: '', // 核查类型(直接存字典value,多个逗号分隔) - // cycleNumber: 6, // 循环次数 - // equipmentId: infoId.value, // 配套设备id - // itemCategoryId: form.value.itemCategoryId, // 核查项分类id(能够确定是哪个标准装置) - // params: '', // 核查项目(直接存字典value) - // remark: '', // 核查项备注 - // resolution: 0.0001, // 分辨力 - // testType: title, // 核查点类型(直接存字典value) - // unit: '', // 单位(直接存字典value) - // urel: 0, // 测量标准相对扩展不确定度urel - // }) - // } - // } +const addRow = (list: IList[], title: string, index: string) => { + if (checkList(list, columnsDict.value[`${index}-${title}`], `${title}表格`)) { + switch (title) { + case '频率显示': // 频率显示 + frequencyList.value.length + ? frequencyList.value.push(JSON.parse(JSON.stringify(frequencyList.value[frequencyList.value.length - 1]))) + : frequencyList.value.push({ + dataType: '1', + params: '频率显示', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + sweepWidth: '', // 扫频宽度 + sweepWidthUnit: '', // 扫频宽度单位 + horizontalResolution: '', // 水平分辨率 + horizontalResolutionUnit: '', // 水平分辨率单位 + resolutionBandwidth: '', // 分辨率带宽 + resolutionBandwidthUnit: '', // 分辨率带宽单位 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + + frequencyReferenceAccuracy: form.value.frequencyReferenceAccuracy, // 频率基准精度 + valueOne: form.value.valueOne, // 数值1 + valueTwo: form.value.valueTwo, // 数值2 + valueThree: form.value.valueThree, // 数值3 + valueFour: form.value.valueFour, // 数值4 + editable: true, + } as any) + break + case '扫频宽度': // 扫频宽度 + sweepWidthList.value.length + ? sweepWidthList.value.push(JSON.parse(JSON.stringify(sweepWidthList.value[sweepWidthList.value.length - 1]))) + : sweepWidthList.value.push({ + dataType: '2', + params: '扫频宽度', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + horizontalResolution: '', // 水平分辨率 + horizontalResolutionUnit: '', // 水平分辨率单位 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + editable: true, + } as any) + break + case '中频带宽': // 中频带宽 + intermediateFrequencyBandwidthList.value.length + ? intermediateFrequencyBandwidthList.value.push(JSON.parse(JSON.stringify(intermediateFrequencyBandwidthList.value[intermediateFrequencyBandwidthList.value.length - 1]))) + : intermediateFrequencyBandwidthList.value.push({ + dataType: '3', + params: '中频带宽', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexLeft: '', // 技术指标 + technicalIndexRight: '', // 技术指标 + editable: true, + } as any) + break + case '中频带宽转换偏差': // 中频带宽转换偏差 + transitionDeviationList.value.length + ? transitionDeviationList.value.push(JSON.parse(JSON.stringify({ ...transitionDeviationList.value[transitionDeviationList.value.length - 1], referencePoint: transitionDeviationList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : transitionDeviationList.value.push({ + dataType: '4', + params: '中频带宽转换偏差', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + editable: true, + } as any) + break + case '参考电平': // 参考电平 + referenceElectricalLevelList.value.length + ? referenceElectricalLevelList.value.push(JSON.parse(JSON.stringify({ ...referenceElectricalLevelList.value[referenceElectricalLevelList.value.length - 1], referencePoint: referenceElectricalLevelList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : referenceElectricalLevelList.value.push({ + dataType: '5', + params: '参考电平', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + standardAttenuatorAttenuation: '', // 标准衰减器衰减量 + standardAttenuatorAttenuationUnit: '', // 标准衰减器衰减量单位 + editable: true, + } as any) + break + case '垂直刻度(显示位置从上到下)': // 频率显示 + verticalGraduatedList.value.length + ? verticalGraduatedList.value.push(JSON.parse(JSON.stringify(verticalGraduatedList.value[verticalGraduatedList.value.length - 1]))) + : verticalGraduatedList.value.push({ + dataType: '6', + params: '垂直刻度', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + standardAttenuatorAttenuation: '', // 标准衰减器衰减量 + standardAttenuatorAttenuationUnit: '', // 标准衰减器衰减量单位 + signalSourceAmplitude: '', // 信号源幅度 + signalSourceAmplitudeUnit: '', // 信号源幅度单位 + verticalScale: '', // 垂直刻度 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + editable: true, + } as any) + break + case '输入频响': // 输入频响 + inputFrequencyResponseList.value.length + ? inputFrequencyResponseList.value.push(JSON.parse(JSON.stringify({ ...inputFrequencyResponseList.value[inputFrequencyResponseList.value.length - 1], referencePoint: inputFrequencyResponseList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : inputFrequencyResponseList.value.push({ + dataType: '7', + params: '输入频响', + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + editable: true, + } as any) + break + case '平均噪声电平': // 平均噪声电平 + averageNoiseLevelList.value.length + ? averageNoiseLevelList.value.push(JSON.parse(JSON.stringify(averageNoiseLevelList.value[averageNoiseLevelList.value.length - 1]))) + : averageNoiseLevelList.value.push({ + dataType: '8', + params: '平均噪声电平', + startFrequency: '', // 起始频率 + startFrequencyUnit: '', // 起始频率单位 + endFrequency: '', // 终止频率 + endFrequencyUnit: '', // 终止频率单位 + correctedValue: '', // 修正值 + upperIndex: '', // 指标上限 + editable: true, + } as any) + break + case '谐波失真': // 谐波失真 + harmonicDistortionList.value.length + ? harmonicDistortionList.value.push(JSON.parse(JSON.stringify(harmonicDistortionList.value[harmonicDistortionList.value.length - 1]))) + : harmonicDistortionList.value.push({ + dataType: '9', + params: '谐波失真', + frequency: '', // 频率 + frequencyUnit: '', // 频率 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + rbwValue: '1', // RBW + rbwValueUnit: '', // RBW单位 + vbwValue: '1', // VBW + vbwValueUnit: '', // VBW单位 + upperIndexTwice: '', // 二次谐波失真指标上限 + upperIndexThrice: '', // 三次谐波失真指标上限 + upperIndexQuartic: '', // 四次谐波失真指标上限 + + editable: true, + } as any) + break + case '输入衰减': // 输入衰减 + inputAttenuatorList.value.length + ? inputAttenuatorList.value.push(JSON.parse(JSON.stringify({ ...inputAttenuatorList.value[inputAttenuatorList.value.length - 1], referencePoint: inputAttenuatorList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : inputAttenuatorList.value.push({ + dataType: '10', + params: '输入衰减', + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + spectrumLevel: '', // 频谱仪参考电平 + spectrumLevelUnit: '', // 频谱仪参考电平单位 + standardAttenuatorAttenuation: '', // 衰减器衰减量 + standardAttenuatorAttenuationUnit: '', // 衰减器衰减量单位 + inputAttenuator: '', // 输入衰减器 + inputAttenuatorUnit: '', // 输入衰减器单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + editable: true, + } as any) + break + case '1dB增益压缩点': // 1dB增益压缩点 + gainCompressionPointList.value.length + ? gainCompressionPointList.value.push(JSON.parse(JSON.stringify(gainCompressionPointList.value[gainCompressionPointList.value.length - 1]))) + : gainCompressionPointList.value.push({ + dataType: '11', + params: '1dB增益压缩点', + inputAttenuator: '', // 输入衰减器 + inputAttenuatorUnit: '', // 输入衰减器单位 + spectrumLevel: '', // 参考电平 + spectrumLevelUnit: '', // 参考电平单位 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + + editable: true, + } as any) + break + case '校准信号': // 校准信号 + calibratingSignalList.value.length + ? calibratingSignalList.value.push(JSON.parse(JSON.stringify(calibratingSignalList.value[calibratingSignalList.value.length - 1]))) + : calibratingSignalList.value.push({ + dataType: '12', + params: '校准信号', + technicalIndex: '', // 技术指标 + technicalIndexUnit: '', // 技术指标单位 + typeValue: '', // 类型 + nominalValue: '', // 标称值 + unit: '', // 标称值单位 + editable: true, + } as any) + break + } + } } /** * 删除行公共方法 * @param checkoutList 选中的数组 * @param list 操作的数组 */ -const delRow = (checkoutList: IList[], list: IList[]) => { +const delRow = (checkoutList: IList[], list: IList[], title: string) => { if (!checkoutList.length) { ElMessage.warning('请选中要删除的行') } else { - list = list.filter((item: any) => { - return !checkoutList.includes(item) - }) + let data = [] as any[] + data = differenceArray(list, checkoutList) + switch (title) { + case '频率显示': // 频率显示 + frequencyList.value = data + break + case '扫频宽度': // 扫频宽度 + sweepWidthList.value = data + break + case '中频带宽': // 中频带宽 + intermediateFrequencyBandwidthList.value = data + break + case '中频带宽转换偏差': // 中频带宽转换偏差 + transitionDeviationList.value = data + break + case '参考电平': // 参考电平 + referenceElectricalLevelList.value = data + break + case '垂直刻度(显示位置从上到下)': // 垂直刻度(显示位置从上到下) + verticalGraduatedList.value = data + break + case '输入频响': // 垂直刻度(显示位置从上到下) + inputFrequencyResponseList.value = data + break + case '平均噪声电平': // 平均噪声电平 + averageNoiseLevelList.value = data + break + case '谐波失真': // 谐波失真 + harmonicDistortionList.value = data + break + case '输入衰减': // 输入衰减 + inputAttenuatorList.value = data + break + case '1dB增益压缩点': // 1dB增益压缩点 + gainCompressionPointList.value = data + break + case '校准信号': // 校准信号 + calibratingSignalList.value = data + break + } } } // ---------------------------------------------校验--------------------------------------------------- -// 校验表格(点击保存的时候用、生成标准器示值) -const checkList = () => { - // return useCheckList(list.value, columns.value, '检定项表格') +// 校验表格(点击保存的时候用、生成标准器示值) +function checkList(list: any[], columns: any[], title: string) { + return useCheckList(list, columns, title) } -// ------------------------------------------------------------------------------------------------ -// 点击计算结果--上方表格计算 -const calculateDataTop = () => { +// 校验所有表格 +function checkAllList() { + let result = true + for (const i in columnsDict.value) { + console.log(i, listDict.value[i], columnsDict.value[i]) + const requireLength = !!((chekedDict[i] === '1' || chekedDict[i] === 1) && chekedDict[i]) + if (!useCheckList(listDict.value[i], columnsDict.value[i], i.substring(2), '', '', '', requireLength)) { + result = false + break + } + } + return result +} -} -// 点击生成辅助接地电阻--下面表格计算 -const calculateDataBottom = () => { - -} // ----------------------------------------------------------------------------------------------------- +const clearAllList = () => { + list.value = [] + frequencyList.value = [] + sweepWidthList.value = [] + intermediateFrequencyBandwidthList.value = [] + transitionDeviationList.value = [] + referenceElectricalLevelList.value = [] + verticalGraduatedList.value = [] + inputFrequencyResponseList.value = [] + averageNoiseLevelList.value = [] + harmonicDistortionList.value = [] + inputAttenuatorList.value = [] + gainCompressionPointList.value = [] + calibratingSignalList.value = [] + for (const i in listDict.value) { + listDict.value[i] = [] + } +} +watch(() => props.list, (newVal) => { // 检定项表格 + if (newVal) { + clearAllList() + newVal.forEach((item: any) => { + switch (item.dataType) { + case '1': + // 频率显示 + frequencyList.value.push({ ...item, params: '频率显示' }) + form.value + form.value.frequencyReferenceAccuracy = item.frequencyReferenceAccuracy + form.value.valueOne = item.valueOne + form.value.valueTwo = item.valueTwo + form.value.valueThree = item.valueThree + form.value.valueFour = item.valueFour + break + case '2': + // 扫频宽度 + sweepWidthList.value.push({ ...item, params: '扫频宽度' }) + break + case '3': + // 中频带宽 + intermediateFrequencyBandwidthList.value.push({ ...item, params: '中频带宽' }) + break + case '4': + // 中频带宽转换偏差 + transitionDeviationList.value.push({ ...item, params: '中频带宽转换偏差' }) + break + case '5': + // 参考电平 + referenceElectricalLevelList.value.push({ ...item, params: '参考电平' }) + break + case '6': + // 垂直刻度 + verticalGraduatedList.value.push({ ...item, params: '垂直刻度' }) + break + case '7': + // 输入频响 + inputFrequencyResponseList.value.push({ ...item, params: '输入频响' }) + break + case '8': + // 平均噪声电平 + averageNoiseLevelList.value.push({ ...item, params: '平均噪声电平' }) + break + case '9': + // 谐波失真 + harmonicDistortionList.value.push({ ...item, params: '谐波失真' }) + break + case '10': + // 输入衰减 + inputAttenuatorList.value.push({ ...item, params: '输入衰减' }) + break + case '11': + // 1dB增益压缩点 + gainCompressionPointList.value.push({ ...item, params: '1dB增益压缩点' }) + break + case '12': + // 校准信号 + calibratingSignalList.value.push({ ...item, params: '校准信号' }) + break + } + }) + } +}) -// watch(() => props.list, (newVal) => { // 检定项表格 -// if (newVal) { -// list.value = [...newVal] -// } -// }) +defineExpose({ list, checkAllList, form }) -// defineExpose({ list }) +// 表格下拉框等内容是否禁用 +const disabled = ({ scope, column }, fun) => { + fun(props.pageType === 'detail') +} +// 每个table对应的下拉框内容 字典 +const tableDict = ref<{ [key: string]: { value: string;name: string;id: string }[] }>({}) +const changeLoadSituationa = (value: any, index: number, text: string, type: string, list: any[], item: string) => { + if (item === '频率显示') { + if (text === '标称值') { + list[index].frequency = value + } + if (text === '标称值单位') { + list[index].frequencyUnit = typeof value === 'string' ? value : '' + } + } + if (item === '中频带宽转换偏差' || item === '参考电平' || item === '输入频响' || item === '输入衰减') { + if (text === '是否为参考点') { + if (value === '1') { + list.forEach((citem: any, cindex: number) => { + list[cindex].referencePoint = '0' + }) + list[index].referencePoint = '1' + } + } + } + if (item === '谐波失真') { + if (text === '二次谐波失真指标上限') { + list[index].upperIndexThrice = value + list[index].upperIndexQuartic = value + // list[index].upperIndexThrice ? '' : list[index].upperIndexThrice = value + // list[index].upperIndexQuartic ? '' : list[index].upperIndexQuartic = value + } + } + if (item === '校准信号') { + if (text === '标称值单位') { + list[index].technicalIndexUnit = typeof value === 'string' ? value : '' + } + if (text === '类型') { + typeof value === 'string' ? list[index].unit = '' : '' + } + } +} + +// 获取字典 +const nominalValueUnit = ref<{ value: string;name: string;id: string }[]>([]) // 标称值单位 +const amplitudeUnit = ref<{ value: string;name: string;id: string }[]>([]) // 幅度单位 +const standardAttenuatorAttenuationUnit = ref<{ value: string;name: string;id: string }[]>([]) // 标准衰减器衰减量单位 +const verticalScale = ref<{ value: string;name: string;id: string }[]>([]) // 垂直刻度 +const typeValue = ref<{ value: string;name: string;id: string }[]>([]) // 校准信号类型 +const fetchDict = async () => { + // 标称值单位 + const res1 = await getDictByCode('bizFirstStandardFrequencyUnit') + nominalValueUnit.value = res1.data + // 幅度单位 + const res2 = await getDictByCode('standardAmplitudeUnit') + amplitudeUnit.value = res2.data + // 标准衰减器衰减量单位 + const res3 = await getDictByCode('standardDBunit') + standardAttenuatorAttenuationUnit.value = res3.data + // 垂直刻度 + const res4 = await getDictByCode('verticalScale') + verticalScale.value = res4.data + // 校准信号类型 + const res5 = await getDictByCode('calibratingSignalType') + typeValue.value = res5.data + + tableDict.value = { + 标称值单位: nominalValueUnit.value, + 频率单位: nominalValueUnit.value, + VBW单位: nominalValueUnit.value, + RBW单位: nominalValueUnit.value, + 起始频率单位: nominalValueUnit.value, + 终止频率单位: nominalValueUnit.value, + 扫频宽度单位: nominalValueUnit.value, + 水平分辨率单位: nominalValueUnit.value, + 分辨率带宽单位: nominalValueUnit.value, + 幅度单位: amplitudeUnit.value, + 信号源幅度单位: amplitudeUnit.value, + 标准衰减器衰减量单位: standardAttenuatorAttenuationUnit.value, + 输入衰减器单位: standardAttenuatorAttenuationUnit.value, + 输入衰减单位: standardAttenuatorAttenuationUnit.value, + 频谱仪参考电平单位: standardAttenuatorAttenuationUnit.value, + 参考电平单位: amplitudeUnit.value, + 垂直刻度: verticalScale.value, + 类型: typeValue.value, + } +} +fetchDict() + +// 自定义下拉框内容 +const customSelect = (data: any, fun: any) => { + console.log(data, fun, 'data') + if (data.title === '校准信号' && data.text === '标称值单位') { + if (data.scope.row.typeValue === '频率') { + fun(nominalValueUnit.value) + } + else { + fun(amplitudeUnit.value) + } + } + else if (data.title === '垂直刻度(显示位置从上到下)' && data.text === '标称值单位') { + fun(amplitudeUnit.value) + } + else if (data.title === '参考电平' && data.text === '标称值单位') { + fun(amplitudeUnit.value) + } + else { + fun(tableDict.value[data.text]) + } +} diff --git a/src/views/business/measure/item/components/second/templateTable.vue b/src/views/business/measure/item/components/second/templateTable.vue index a0580c7..f0dff0b 100644 --- a/src/views/business/measure/item/components/second/templateTable.vue +++ b/src/views/business/measure/item/components/second/templateTable.vue @@ -289,9 +289,9 @@ *{{ item.text }} diff --git a/src/views/business/measure/item/components/ninth/templateDetail.vue b/src/views/business/measure/item/components/ninth/templateDetail.vue index 001555a..c043141 100644 --- a/src/views/business/measure/item/components/ninth/templateDetail.vue +++ b/src/views/business/measure/item/components/ninth/templateDetail.vue @@ -9,7 +9,8 @@ import { useCheckList } from '@/commonMethods/useCheckList' import { calculate, recalculate } from '@/api/business/measure/caculate' import type { TableColumn } from '@/components/NormalTable/table_interface' - +import templateTable1 from '@/views/business/measure/item/components/second/templateTable.vue' +import { differenceArray, setSelectList } from '@/utils/Array' const props = defineProps({ pageType: { type: String, @@ -34,7 +35,32 @@ default: '', }, }) +const form = ref({ + appearanceFunctionCheck: 1, // 外观及功能性检查 + frequencyDisplay: 1, // 频率显示 + sweepWidth: 1, // 扫频宽度 + middleFrequencyWidth: 1, // 中频带宽 + middleConversionDeviation: 1, // 中频带宽转换偏差 + referenceLevel: 1, // 参考电平 + verticalScale: 1, // 垂直刻度(显示位置从上到下) + inputFrequency: 1, // 输入频响 + averageNoiseLevel: 1, // 平均噪声电平 + harmonicDistortion: 1, // 谐波失真 + inputAttenuation: 1, // 输入衰减 + gainCompression: 1, // 1dB增益压缩点 + calibratingSignal: 1, // 校准信号 + + frequencyReferenceAccuracy: '', // 频率基准精度 + valueOne: '', // 数值1 + valueTwo: '', // 数值2 + valueThree: '', // 数值3 + valueFour: '', // 数值4 +}) +watch(() => props.form, (newVal) => { + form.value = newVal +}) const tableLoading = ref(false) +const list = ref([]) // 全部数据 const frequencyList = ref([]) // 频率显示 const sweepWidthList = ref([]) // 扫频宽度 const intermediateFrequencyBandwidthList = ref([]) // 中频带宽 @@ -46,278 +72,737 @@ const harmonicDistortionList = ref([]) // 谐波失真 const inputAttenuatorList = ref([]) // 输入衰减 const gainCompressionPointList = ref([]) // 1dB增益压缩点 - -const frequencyCheckoutList = ref([]) // 频率显示多选 -const sweepWidthCheckoutList = ref([]) // 扫频宽度多选 -const intermediateFrequencyBandwidthCheckoutList = ref([]) // 中频带宽多选 -const transitionDeviationCheckoutList = ref([]) // 中频带宽转换偏差多选 -const referenceElectricalLevelCheckoutList = ref([]) // 参考电平多选 -const verticalGraduatedCheckoutList = ref([]) // 垂直刻度(显示位置从上到下)多选 -const inputFrequencyResponseCheckoutList = ref([]) // 输入频响多选 -const averageNoiseLevelCheckoutList = ref([]) // 平均噪声电平多选 -const harmonicDistortionCheckoutList = ref([]) // 谐波失真 -const inputAttenuatorCheckoutList = ref([]) // 输入衰减多选 -const gainCompressionPointCheckoutList = ref([]) // 1dB增益压缩点多选 - +const calibratingSignalList = ref([]) // 校准信号 +// 表格数据对应 list 字典 +const listDict = ref<{ [key: string]: any }>() +watch(() => [frequencyList.value, sweepWidthList.value, intermediateFrequencyBandwidthList.value, transitionDeviationList.value, referenceElectricalLevelList.value, verticalGraduatedList.value, inputFrequencyResponseList.value, averageNoiseLevelList.value, harmonicDistortionList.value, inputAttenuatorList.value, gainCompressionPointList.value, calibratingSignalList.value], () => { + listDict.value = { + '1-频率显示': frequencyList.value, + '2-扫频宽度': sweepWidthList.value, + '3-中频带宽': intermediateFrequencyBandwidthList.value, + '4-中频带宽转换偏差': transitionDeviationList.value, + '5-参考电平': referenceElectricalLevelList.value, + '6-垂直刻度(显示位置从上到下)': verticalGraduatedList.value, + '7-输入频响': inputFrequencyResponseList.value, + '8-平均噪声电平': averageNoiseLevelList.value, + '9-谐波失真': harmonicDistortionList.value, + '10-输入衰减': inputAttenuatorList.value, + '11-1dB增益压缩点': gainCompressionPointList.value, + '12-校准信号': calibratingSignalList.value, + } + list.value = [] + for (const i in listDict.value) { + list.value = [...list.value, ...listDict.value[i]] + } +}, { + deep: true, +}) +// 表格对应的 选择状态 +let chekedDict = {} as { [key: string]: any } +watch(() => form.value, () => { + chekedDict = { + '1-频率显示': form.value.frequencyDisplay, + '2-扫频宽度': form.value.sweepWidth, + '3-中频带宽': form.value.middleFrequencyWidth, + '4-中频带宽转换偏差': form.value.middleConversionDeviation, + '5-参考电平': form.value.referenceLevel, + '6-垂直刻度(显示位置从上到下)': form.value.verticalScale, + '7-输入频响': form.value.inputFrequency, + '8-平均噪声电平': form.value.averageNoiseLevel, + '9-谐波失真': form.value.harmonicDistortion, + '10-输入衰减': form.value.inputAttenuation, + '11-1dB增益压缩点': form.value.gainCompression, + '12-校准信号': form.value.calibratingSignal, + } + frequencyList.value.forEach((item: any) => { + item.frequencyReferenceAccuracy = form.value.frequencyReferenceAccuracy + item.valueOne = form.value.valueOne + item.valueTwo = form.value.valueTwo + item.valueThree = form.value.valueThree + item.valueFour = form.value.valueFour + }) +}, { + deep: true, +}) // ----------------------------------------表头------------------------------------------------ const columns_frequency = ref([ // 频率显示 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '扫频宽度', value: 'nominalValue', align: 'center', required: true }, - { text: '扫频宽度单位', value: 'nominalValue', align: 'center', required: true }, - { text: '水平分辨率', value: 'minimumAllowFactorA', align: 'center', required: true }, - { text: '水平分辨率单位', value: 'maximumAllowFactorB', align: 'center', required: true }, - { text: '分辨率带宽', value: 'minimumAllowValue', align: 'center', required: false }, - { text: '分辨率带宽单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'frequencyNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '扫频宽度', value: 'sweepWidth', align: 'center', required: true, type: 'select-dict', code: 'frequencysweepWidth' }, + { text: '扫频宽度单位', value: 'sweepWidthUnit', align: 'center', required: true, type: 'select' }, + { text: '水平分辨率', value: 'horizontalResolution', align: 'center', required: true, type: 'number' }, + { text: '水平分辨率单位', value: 'horizontalResolutionUnit', align: 'center', required: true, type: 'select' }, + { text: '分辨率带宽', value: 'resolutionBandwidth', align: 'center', required: true, type: 'number' }, + { text: '分辨率带宽单位', value: 'resolutionBandwidthUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: false, type: 'text' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: false, type: 'text' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, ]) const columns_sweep_width = ref([ // 扫频宽度 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '水平分辨率', value: 'minimumAllowFactorA', align: 'center', required: true }, - { text: '水平分辨率单位', value: 'maximumAllowFactorB', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '水平分辨率', value: 'horizontalResolution', align: 'center', required: true, type: 'number' }, + { text: '水平分辨率单位', value: 'horizontalResolutionUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number', width: '400' }, ]) const columns_intermediate_frequency_bandwidth = ref([ // 中频带宽 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndexRight', align: 'center', required: true, width: '400' }, ]) const columns_transition_deviation = ref([ // 中频带宽转换偏差 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number', width: '250' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_reference_electrical_level = ref([ // 参考电平 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量单位', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'sweepWidthNominalValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '标准衰减器衰减量', value: 'standardAttenuatorAttenuation', align: 'center', required: true, type: 'number' }, + { text: '标准衰减器衰减量单位', value: 'standardAttenuatorAttenuationUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'number' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_vertical_graduated = ref([ // 垂直刻度(显示位置从上到下) - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '标称值单位', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量', value: 'nominalValue', align: 'center', required: true }, - { text: '标准衰减器衰减量单位', value: 'nominalValue', align: 'center', required: true }, - { text: '信号源幅度', value: 'nominalValue', align: 'center', required: true }, - { text: '信号源幅度单位', value: 'nominalValue', align: 'center', required: true }, - { text: '垂直刻度', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'select-dict', code: 'verticalGraduatedValue' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '标准衰减器衰减量', value: 'standardAttenuatorAttenuation', align: 'center', required: true, type: 'select-dict', code: 'standardAttenuatorAttenuation' }, + { text: '标准衰减器衰减量单位', value: 'standardAttenuatorAttenuationUnit', align: 'center', required: true, type: 'select' }, + { text: '信号源幅度', value: 'signalSourceAmplitude', align: 'center', required: true, type: 'select-dict', code: 'signalSourceAmplitude' }, + { text: '信号源幅度单位', value: 'signalSourceAmplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '垂直刻度', value: 'verticalScale', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'verticalScaleFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, ]) const columns_input_frequency_response = ref([ // 输入频响 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '标称值', value: 'nominalValue', align: 'center', required: true }, - { text: '频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'inputFrequencyValue' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_average_noise_level = ref([ // 平均噪声电平 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '起始频率', value: 'nominalValue', align: 'center', required: true }, - { text: '起始频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '终止频率', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '终止频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '起始频率', value: 'startFrequency', align: 'center', required: true, type: 'select-dict', code: 'averageNoiseLevelStartFrequency' }, + { text: '起始频率单位', value: 'startFrequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '终止频率', value: 'endFrequency', align: 'center', required: true, type: 'select-dict', code: 'averageNoiseLevelEndFrequency' }, + { text: '终止频率单位', value: 'endFrequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '修正值', value: 'correctedValue', align: 'center', required: true, type: 'number' }, + { text: '指标上限', value: 'upperIndex', align: 'center', required: true, type: 'number' }, ]) const columns_harmonic_distortion = ref([ // 谐波失真 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '频率', value: 'nominalValue', align: 'center', required: true }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '指标上限单位', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'harmonicDistortionFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: 'RBW', value: 'rbwValue', align: 'center', required: true, type: 'number' }, + { text: 'RBW单位', value: 'rbwValueUnit', align: 'center', required: true, type: 'select' }, + { text: 'VBW', value: 'vbwValue', align: 'center', required: true, type: 'number' }, + { text: 'VBW单位', value: 'vbwValueUnit', align: 'center', required: true, type: 'select' }, + { text: '二次谐波失真指标上限', value: 'upperIndexTwice', align: 'center', required: true, type: 'number' }, + { text: '三次谐波失真指标上限', value: 'upperIndexThrice', align: 'center', required: true, type: 'number' }, + { text: '四次谐波失真指标上限', value: 'upperIndexQuartic', align: 'center', required: true, type: 'number' }, ]) const columns_input_attenuator = ref([ // 输入衰减 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '衰减器衰减量', value: 'nominalValue', align: 'center', required: true }, - { text: '衰减器衰减量单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '输入衰减器', value: 'nominalValue', align: 'center', required: true }, - { text: '输入衰减器单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频谱仪参考电平', value: 'nominalValue', align: 'center', required: true }, - { text: '频谱仪参考电平单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率', value: 'nominalValue', align: 'center', required: true }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '是否为参考点', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '标准衰减器衰减量', value: 'standardAttenuatorAttenuation', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationStandardAttenuatorAttenuation' }, + { text: '标准衰减器衰减量单位', value: 'standardAttenuatorAttenuationUnit', align: 'center', required: true, type: 'select' }, + { text: '输入衰减器', value: 'inputAttenuator', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationStandardAttenuatorAttenuation' }, + { text: '输入衰减器单位', value: 'inputAttenuatorUnit', align: 'center', required: true, type: 'select' }, + { text: '频谱仪参考电平', value: 'spectrumLevel', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationSpectrumLevel' }, + { text: '频谱仪参考电平单位', value: 'spectrumLevelUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, + { text: '是否为参考点', value: 'referencePoint', align: 'center', required: true, type: 'radio' }, ]) const columns_gain_compression_point = ref([ // 1dB增益压缩点 - { text: '检定项目', value: 'params', align: 'center', required: true }, - { text: '输入衰减器', value: 'nominalValue', align: 'center', required: true }, - { text: '输入衰减器单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '参考电平', value: 'nominalValue', align: 'center', required: true }, - { text: '参考电平单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '频率', value: 'nominalValue', align: 'center', required: true }, - { text: '频率单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '幅度单位', value: 'maximumAllowValue', align: 'center', required: false }, - { text: '技术指标', value: 'maximumAllowValue', align: 'center', required: false }, + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '输入衰减器', value: 'inputAttenuator', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationStandardAttenuatorAttenuation' }, + { text: '输入衰减器单位', value: 'inputAttenuatorUnit', align: 'center', required: true, type: 'select' }, + { text: '参考电平', value: 'spectrumLevel', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationSpectrumLevel' }, + { text: '参考电平单位', value: 'spectrumLevelUnit', align: 'center', required: true, type: 'select' }, + { text: '频率', value: 'frequency', align: 'center', required: true, type: 'select-dict', code: 'inputAttenuationFrequency' }, + { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, type: 'select' }, + { text: '幅度', value: 'amplitude', align: 'center', required: true, type: 'number' }, + { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, +]) +const columns_calibrating_signal = ref([ // 校准信号 + { text: '检定项目', value: 'params', align: 'center', required: true, type: 'text' }, + { text: '类型', value: 'typeValue', align: 'center', required: true, type: 'select' }, + { text: '标称值', value: 'nominalValue', align: 'center', required: true, type: 'number' }, + { text: '标称值单位', value: 'unit', align: 'center', required: true, type: 'select' }, + { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, type: 'number' }, ]) // --------------------------------表格操作--------------------------------------------------- -// 多选 -const handleSelectionChange = (e: any, type: string) => { - switch (type) { - case '频率显示': // 频率显示 - frequencyCheckoutList.value = e - break - case '扫频宽度': // 扫描宽度 - sweepWidthCheckoutList.value = e - break - case '中频带宽': // 中频带宽 - intermediateFrequencyBandwidthCheckoutList.value = e - break - case '中频带宽转换偏差': // 中频带宽转换偏差 - transitionDeviationCheckoutList.value = e - break - case '参考电平': // 参考电平 - referenceElectricalLevelCheckoutList.value = e - break - case '垂直刻度': // 垂直刻度(显示位置从上到下) - verticalGraduatedCheckoutList.value = e - break - case '输入频响': // 输入频响 - inputFrequencyResponseCheckoutList.value = e - break - case '平均噪声电平': // 平均噪声电平 - averageNoiseLevelCheckoutList.value = e - break - case '谐波失真': // 谐波失真 - harmonicDistortionCheckoutList.value = e - break - case '输入衰减': // 输入衰减 - inputAttenuatorCheckoutList.value = e - break - case '1dB增益压缩点': // 1dB增益压缩点 - gainCompressionPointCheckoutList.value = e - break - } -} - +// 表格对应 columns字典 +const columnsDict = ref<{ [key: string]: any }>( + { + '1-频率显示': columns_frequency.value, + '2-扫频宽度': columns_sweep_width.value, + '3-中频带宽': columns_intermediate_frequency_bandwidth.value, + '4-中频带宽转换偏差': columns_transition_deviation.value, + '5-参考电平': columns_reference_electrical_level.value, + '6-垂直刻度(显示位置从上到下)': columns_vertical_graduated.value, + '7-输入频响': columns_input_frequency_response.value, + '8-平均噪声电平': columns_average_noise_level.value, + '9-谐波失真': columns_harmonic_distortion.value, + '10-输入衰减': columns_input_attenuator.value, + '11-1dB增益压缩点': columns_gain_compression_point.value, + '12-校准信号': columns_calibrating_signal.value, + }, +) /** * 增加行公共方法 * @param list 要操作的数组 * @param title 操作的表格 */ -const addRow = (list: IList[], title: string) => { - // if (checkList(list, `${title}表格`)) { - // if (list.length) { // 增加行时默认上一行数据 - // list.push({ - // id: '', - // checkPoint: list[list.length - 1].checkPoint, // 核查点(直接存字典value) - // checkType: list[list.length - 1].checkType, // 核查类型 - // cycleNumber: list[list.length - 1].cycleNumber, // 循环次数 - // equipmentId: list[list.length - 1].equipmentId, // 配套设备id - // itemCategoryId: list[list.length - 1].itemCategoryId, // 核查项分类id(能够确定是哪个标准装置) - // params: list[list.length - 1].params, // 核查项目(直接存字典value) - // remark: list[list.length - 1].remark, // 核查项备注(每个数据存储的核查项备注相同,前端取列表中一个即可) - // resolution: list[list.length - 1].resolution, // 分辨力 - // testType: list[list.length - 1].testType, // 核查点类型(直接存字典value) - // unit: list[list.length - 1].unit, // 单位(直接存字典value) - // urel: list[list.length - 1].urel, // 测量标准相对扩展不确定度urel - // }) - // } - // else { - // list.push({ - // checkPoint: '', // 核查点 - // checkType: '', // 核查类型(直接存字典value,多个逗号分隔) - // cycleNumber: 6, // 循环次数 - // equipmentId: infoId.value, // 配套设备id - // itemCategoryId: form.value.itemCategoryId, // 核查项分类id(能够确定是哪个标准装置) - // params: '', // 核查项目(直接存字典value) - // remark: '', // 核查项备注 - // resolution: 0.0001, // 分辨力 - // testType: title, // 核查点类型(直接存字典value) - // unit: '', // 单位(直接存字典value) - // urel: 0, // 测量标准相对扩展不确定度urel - // }) - // } - // } +const addRow = (list: IList[], title: string, index: string) => { + if (checkList(list, columnsDict.value[`${index}-${title}`], `${title}表格`)) { + switch (title) { + case '频率显示': // 频率显示 + frequencyList.value.length + ? frequencyList.value.push(JSON.parse(JSON.stringify(frequencyList.value[frequencyList.value.length - 1]))) + : frequencyList.value.push({ + dataType: '1', + params: '频率显示', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + sweepWidth: '', // 扫频宽度 + sweepWidthUnit: '', // 扫频宽度单位 + horizontalResolution: '', // 水平分辨率 + horizontalResolutionUnit: '', // 水平分辨率单位 + resolutionBandwidth: '', // 分辨率带宽 + resolutionBandwidthUnit: '', // 分辨率带宽单位 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + + frequencyReferenceAccuracy: form.value.frequencyReferenceAccuracy, // 频率基准精度 + valueOne: form.value.valueOne, // 数值1 + valueTwo: form.value.valueTwo, // 数值2 + valueThree: form.value.valueThree, // 数值3 + valueFour: form.value.valueFour, // 数值4 + editable: true, + } as any) + break + case '扫频宽度': // 扫频宽度 + sweepWidthList.value.length + ? sweepWidthList.value.push(JSON.parse(JSON.stringify(sweepWidthList.value[sweepWidthList.value.length - 1]))) + : sweepWidthList.value.push({ + dataType: '2', + params: '扫频宽度', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + horizontalResolution: '', // 水平分辨率 + horizontalResolutionUnit: '', // 水平分辨率单位 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + editable: true, + } as any) + break + case '中频带宽': // 中频带宽 + intermediateFrequencyBandwidthList.value.length + ? intermediateFrequencyBandwidthList.value.push(JSON.parse(JSON.stringify(intermediateFrequencyBandwidthList.value[intermediateFrequencyBandwidthList.value.length - 1]))) + : intermediateFrequencyBandwidthList.value.push({ + dataType: '3', + params: '中频带宽', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexLeft: '', // 技术指标 + technicalIndexRight: '', // 技术指标 + editable: true, + } as any) + break + case '中频带宽转换偏差': // 中频带宽转换偏差 + transitionDeviationList.value.length + ? transitionDeviationList.value.push(JSON.parse(JSON.stringify({ ...transitionDeviationList.value[transitionDeviationList.value.length - 1], referencePoint: transitionDeviationList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : transitionDeviationList.value.push({ + dataType: '4', + params: '中频带宽转换偏差', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + editable: true, + } as any) + break + case '参考电平': // 参考电平 + referenceElectricalLevelList.value.length + ? referenceElectricalLevelList.value.push(JSON.parse(JSON.stringify({ ...referenceElectricalLevelList.value[referenceElectricalLevelList.value.length - 1], referencePoint: referenceElectricalLevelList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : referenceElectricalLevelList.value.push({ + dataType: '5', + params: '参考电平', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + standardAttenuatorAttenuation: '', // 标准衰减器衰减量 + standardAttenuatorAttenuationUnit: '', // 标准衰减器衰减量单位 + editable: true, + } as any) + break + case '垂直刻度(显示位置从上到下)': // 频率显示 + verticalGraduatedList.value.length + ? verticalGraduatedList.value.push(JSON.parse(JSON.stringify(verticalGraduatedList.value[verticalGraduatedList.value.length - 1]))) + : verticalGraduatedList.value.push({ + dataType: '6', + params: '垂直刻度', + unit: '', // 标称值单位 + nominalValue: '', // 标称值 + standardAttenuatorAttenuation: '', // 标准衰减器衰减量 + standardAttenuatorAttenuationUnit: '', // 标准衰减器衰减量单位 + signalSourceAmplitude: '', // 信号源幅度 + signalSourceAmplitudeUnit: '', // 信号源幅度单位 + verticalScale: '', // 垂直刻度 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + editable: true, + } as any) + break + case '输入频响': // 输入频响 + inputFrequencyResponseList.value.length + ? inputFrequencyResponseList.value.push(JSON.parse(JSON.stringify({ ...inputFrequencyResponseList.value[inputFrequencyResponseList.value.length - 1], referencePoint: inputFrequencyResponseList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : inputFrequencyResponseList.value.push({ + dataType: '7', + params: '输入频响', + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + editable: true, + } as any) + break + case '平均噪声电平': // 平均噪声电平 + averageNoiseLevelList.value.length + ? averageNoiseLevelList.value.push(JSON.parse(JSON.stringify(averageNoiseLevelList.value[averageNoiseLevelList.value.length - 1]))) + : averageNoiseLevelList.value.push({ + dataType: '8', + params: '平均噪声电平', + startFrequency: '', // 起始频率 + startFrequencyUnit: '', // 起始频率单位 + endFrequency: '', // 终止频率 + endFrequencyUnit: '', // 终止频率单位 + correctedValue: '', // 修正值 + upperIndex: '', // 指标上限 + editable: true, + } as any) + break + case '谐波失真': // 谐波失真 + harmonicDistortionList.value.length + ? harmonicDistortionList.value.push(JSON.parse(JSON.stringify(harmonicDistortionList.value[harmonicDistortionList.value.length - 1]))) + : harmonicDistortionList.value.push({ + dataType: '9', + params: '谐波失真', + frequency: '', // 频率 + frequencyUnit: '', // 频率 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + rbwValue: '1', // RBW + rbwValueUnit: '', // RBW单位 + vbwValue: '1', // VBW + vbwValueUnit: '', // VBW单位 + upperIndexTwice: '', // 二次谐波失真指标上限 + upperIndexThrice: '', // 三次谐波失真指标上限 + upperIndexQuartic: '', // 四次谐波失真指标上限 + + editable: true, + } as any) + break + case '输入衰减': // 输入衰减 + inputAttenuatorList.value.length + ? inputAttenuatorList.value.push(JSON.parse(JSON.stringify({ ...inputAttenuatorList.value[inputAttenuatorList.value.length - 1], referencePoint: inputAttenuatorList.value.every((item: any) => item.referencePoint === '0') ? '1' : '0' } as any))) + : inputAttenuatorList.value.push({ + dataType: '10', + params: '输入衰减', + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + spectrumLevel: '', // 频谱仪参考电平 + spectrumLevelUnit: '', // 频谱仪参考电平单位 + standardAttenuatorAttenuation: '', // 衰减器衰减量 + standardAttenuatorAttenuationUnit: '', // 衰减器衰减量单位 + inputAttenuator: '', // 输入衰减器 + inputAttenuatorUnit: '', // 输入衰减器单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + referencePoint: '1', + editable: true, + } as any) + break + case '1dB增益压缩点': // 1dB增益压缩点 + gainCompressionPointList.value.length + ? gainCompressionPointList.value.push(JSON.parse(JSON.stringify(gainCompressionPointList.value[gainCompressionPointList.value.length - 1]))) + : gainCompressionPointList.value.push({ + dataType: '11', + params: '1dB增益压缩点', + inputAttenuator: '', // 输入衰减器 + inputAttenuatorUnit: '', // 输入衰减器单位 + spectrumLevel: '', // 参考电平 + spectrumLevelUnit: '', // 参考电平单位 + frequency: '', // 频率 + frequencyUnit: '', // 频率单位 + amplitude: '', // 幅度 + amplitudeUnit: '', // 幅度单位 + technicalIndex: '', // 技术指标 + technicalIndexUnit: 'dB', // 技术指标单位 + + editable: true, + } as any) + break + case '校准信号': // 校准信号 + calibratingSignalList.value.length + ? calibratingSignalList.value.push(JSON.parse(JSON.stringify(calibratingSignalList.value[calibratingSignalList.value.length - 1]))) + : calibratingSignalList.value.push({ + dataType: '12', + params: '校准信号', + technicalIndex: '', // 技术指标 + technicalIndexUnit: '', // 技术指标单位 + typeValue: '', // 类型 + nominalValue: '', // 标称值 + unit: '', // 标称值单位 + editable: true, + } as any) + break + } + } } /** * 删除行公共方法 * @param checkoutList 选中的数组 * @param list 操作的数组 */ -const delRow = (checkoutList: IList[], list: IList[]) => { +const delRow = (checkoutList: IList[], list: IList[], title: string) => { if (!checkoutList.length) { ElMessage.warning('请选中要删除的行') } else { - list = list.filter((item: any) => { - return !checkoutList.includes(item) - }) + let data = [] as any[] + data = differenceArray(list, checkoutList) + switch (title) { + case '频率显示': // 频率显示 + frequencyList.value = data + break + case '扫频宽度': // 扫频宽度 + sweepWidthList.value = data + break + case '中频带宽': // 中频带宽 + intermediateFrequencyBandwidthList.value = data + break + case '中频带宽转换偏差': // 中频带宽转换偏差 + transitionDeviationList.value = data + break + case '参考电平': // 参考电平 + referenceElectricalLevelList.value = data + break + case '垂直刻度(显示位置从上到下)': // 垂直刻度(显示位置从上到下) + verticalGraduatedList.value = data + break + case '输入频响': // 垂直刻度(显示位置从上到下) + inputFrequencyResponseList.value = data + break + case '平均噪声电平': // 平均噪声电平 + averageNoiseLevelList.value = data + break + case '谐波失真': // 谐波失真 + harmonicDistortionList.value = data + break + case '输入衰减': // 输入衰减 + inputAttenuatorList.value = data + break + case '1dB增益压缩点': // 1dB增益压缩点 + gainCompressionPointList.value = data + break + case '校准信号': // 校准信号 + calibratingSignalList.value = data + break + } } } // ---------------------------------------------校验--------------------------------------------------- -// 校验表格(点击保存的时候用、生成标准器示值) -const checkList = () => { - // return useCheckList(list.value, columns.value, '检定项表格') +// 校验表格(点击保存的时候用、生成标准器示值) +function checkList(list: any[], columns: any[], title: string) { + return useCheckList(list, columns, title) } -// ------------------------------------------------------------------------------------------------ -// 点击计算结果--上方表格计算 -const calculateDataTop = () => { +// 校验所有表格 +function checkAllList() { + let result = true + for (const i in columnsDict.value) { + console.log(i, listDict.value[i], columnsDict.value[i]) + const requireLength = !!((chekedDict[i] === '1' || chekedDict[i] === 1) && chekedDict[i]) + if (!useCheckList(listDict.value[i], columnsDict.value[i], i.substring(2), '', '', '', requireLength)) { + result = false + break + } + } + return result +} -} -// 点击生成辅助接地电阻--下面表格计算 -const calculateDataBottom = () => { - -} // ----------------------------------------------------------------------------------------------------- +const clearAllList = () => { + list.value = [] + frequencyList.value = [] + sweepWidthList.value = [] + intermediateFrequencyBandwidthList.value = [] + transitionDeviationList.value = [] + referenceElectricalLevelList.value = [] + verticalGraduatedList.value = [] + inputFrequencyResponseList.value = [] + averageNoiseLevelList.value = [] + harmonicDistortionList.value = [] + inputAttenuatorList.value = [] + gainCompressionPointList.value = [] + calibratingSignalList.value = [] + for (const i in listDict.value) { + listDict.value[i] = [] + } +} +watch(() => props.list, (newVal) => { // 检定项表格 + if (newVal) { + clearAllList() + newVal.forEach((item: any) => { + switch (item.dataType) { + case '1': + // 频率显示 + frequencyList.value.push({ ...item, params: '频率显示' }) + form.value + form.value.frequencyReferenceAccuracy = item.frequencyReferenceAccuracy + form.value.valueOne = item.valueOne + form.value.valueTwo = item.valueTwo + form.value.valueThree = item.valueThree + form.value.valueFour = item.valueFour + break + case '2': + // 扫频宽度 + sweepWidthList.value.push({ ...item, params: '扫频宽度' }) + break + case '3': + // 中频带宽 + intermediateFrequencyBandwidthList.value.push({ ...item, params: '中频带宽' }) + break + case '4': + // 中频带宽转换偏差 + transitionDeviationList.value.push({ ...item, params: '中频带宽转换偏差' }) + break + case '5': + // 参考电平 + referenceElectricalLevelList.value.push({ ...item, params: '参考电平' }) + break + case '6': + // 垂直刻度 + verticalGraduatedList.value.push({ ...item, params: '垂直刻度' }) + break + case '7': + // 输入频响 + inputFrequencyResponseList.value.push({ ...item, params: '输入频响' }) + break + case '8': + // 平均噪声电平 + averageNoiseLevelList.value.push({ ...item, params: '平均噪声电平' }) + break + case '9': + // 谐波失真 + harmonicDistortionList.value.push({ ...item, params: '谐波失真' }) + break + case '10': + // 输入衰减 + inputAttenuatorList.value.push({ ...item, params: '输入衰减' }) + break + case '11': + // 1dB增益压缩点 + gainCompressionPointList.value.push({ ...item, params: '1dB增益压缩点' }) + break + case '12': + // 校准信号 + calibratingSignalList.value.push({ ...item, params: '校准信号' }) + break + } + }) + } +}) -// watch(() => props.list, (newVal) => { // 检定项表格 -// if (newVal) { -// list.value = [...newVal] -// } -// }) +defineExpose({ list, checkAllList, form }) -// defineExpose({ list }) +// 表格下拉框等内容是否禁用 +const disabled = ({ scope, column }, fun) => { + fun(props.pageType === 'detail') +} +// 每个table对应的下拉框内容 字典 +const tableDict = ref<{ [key: string]: { value: string;name: string;id: string }[] }>({}) +const changeLoadSituationa = (value: any, index: number, text: string, type: string, list: any[], item: string) => { + if (item === '频率显示') { + if (text === '标称值') { + list[index].frequency = value + } + if (text === '标称值单位') { + list[index].frequencyUnit = typeof value === 'string' ? value : '' + } + } + if (item === '中频带宽转换偏差' || item === '参考电平' || item === '输入频响' || item === '输入衰减') { + if (text === '是否为参考点') { + if (value === '1') { + list.forEach((citem: any, cindex: number) => { + list[cindex].referencePoint = '0' + }) + list[index].referencePoint = '1' + } + } + } + if (item === '谐波失真') { + if (text === '二次谐波失真指标上限') { + list[index].upperIndexThrice = value + list[index].upperIndexQuartic = value + // list[index].upperIndexThrice ? '' : list[index].upperIndexThrice = value + // list[index].upperIndexQuartic ? '' : list[index].upperIndexQuartic = value + } + } + if (item === '校准信号') { + if (text === '标称值单位') { + list[index].technicalIndexUnit = typeof value === 'string' ? value : '' + } + if (text === '类型') { + typeof value === 'string' ? list[index].unit = '' : '' + } + } +} + +// 获取字典 +const nominalValueUnit = ref<{ value: string;name: string;id: string }[]>([]) // 标称值单位 +const amplitudeUnit = ref<{ value: string;name: string;id: string }[]>([]) // 幅度单位 +const standardAttenuatorAttenuationUnit = ref<{ value: string;name: string;id: string }[]>([]) // 标准衰减器衰减量单位 +const verticalScale = ref<{ value: string;name: string;id: string }[]>([]) // 垂直刻度 +const typeValue = ref<{ value: string;name: string;id: string }[]>([]) // 校准信号类型 +const fetchDict = async () => { + // 标称值单位 + const res1 = await getDictByCode('bizFirstStandardFrequencyUnit') + nominalValueUnit.value = res1.data + // 幅度单位 + const res2 = await getDictByCode('standardAmplitudeUnit') + amplitudeUnit.value = res2.data + // 标准衰减器衰减量单位 + const res3 = await getDictByCode('standardDBunit') + standardAttenuatorAttenuationUnit.value = res3.data + // 垂直刻度 + const res4 = await getDictByCode('verticalScale') + verticalScale.value = res4.data + // 校准信号类型 + const res5 = await getDictByCode('calibratingSignalType') + typeValue.value = res5.data + + tableDict.value = { + 标称值单位: nominalValueUnit.value, + 频率单位: nominalValueUnit.value, + VBW单位: nominalValueUnit.value, + RBW单位: nominalValueUnit.value, + 起始频率单位: nominalValueUnit.value, + 终止频率单位: nominalValueUnit.value, + 扫频宽度单位: nominalValueUnit.value, + 水平分辨率单位: nominalValueUnit.value, + 分辨率带宽单位: nominalValueUnit.value, + 幅度单位: amplitudeUnit.value, + 信号源幅度单位: amplitudeUnit.value, + 标准衰减器衰减量单位: standardAttenuatorAttenuationUnit.value, + 输入衰减器单位: standardAttenuatorAttenuationUnit.value, + 输入衰减单位: standardAttenuatorAttenuationUnit.value, + 频谱仪参考电平单位: standardAttenuatorAttenuationUnit.value, + 参考电平单位: amplitudeUnit.value, + 垂直刻度: verticalScale.value, + 类型: typeValue.value, + } +} +fetchDict() + +// 自定义下拉框内容 +const customSelect = (data: any, fun: any) => { + console.log(data, fun, 'data') + if (data.title === '校准信号' && data.text === '标称值单位') { + if (data.scope.row.typeValue === '频率') { + fun(nominalValueUnit.value) + } + else { + fun(amplitudeUnit.value) + } + } + else if (data.title === '垂直刻度(显示位置从上到下)' && data.text === '标称值单位') { + fun(amplitudeUnit.value) + } + else if (data.title === '参考电平' && data.text === '标称值单位') { + fun(amplitudeUnit.value) + } + else { + fun(tableDict.value[data.text]) + } +} diff --git a/src/views/business/measure/item/components/second/templateTable.vue b/src/views/business/measure/item/components/second/templateTable.vue index a0580c7..f0dff0b 100644 --- a/src/views/business/measure/item/components/second/templateTable.vue +++ b/src/views/business/measure/item/components/second/templateTable.vue @@ -289,9 +289,9 @@ *{{ item.text }} diff --git a/src/views/business/measure/item/detail.vue b/src/views/business/measure/item/detail.vue index 7892344..a65be15 100644 --- a/src/views/business/measure/item/detail.vue +++ b/src/views/business/measure/item/detail.vue @@ -175,6 +175,13 @@ } if (!standardRef.value.checkList()) { return false } } + else if (form.value.belongStandardEquipment === '9') { // 频谱分析仪 + if (!standardRef.value.list.length) { + ElMessage.warning('检定项不能为空') + return false + } + if (!standardRef.value.checkAllList()) { return false } + } return true } @@ -307,7 +314,32 @@ appearanceFunctionCheck: standardRef.value.form.appearanceFunctionCheck, // 外观及功能检查 } } + else if (form.value.belongStandardEquipment === '9') { // 第九套:频谱分析仪 + params = { + helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 + itemRemark: form.value.itemRemark, // 检定项备注 + itemId: infoId.value, // 检定项id + appearanceFunctionCheck: standardRef.value.form.appearanceFunctionCheck, // 外观及功能性检查 + frequencyDisplay: standardRef.value.form.frequencyDisplay, // 频率显示 + sweepWidth: standardRef.value.form.sweepWidth, // 扫频宽度 + middleFrequencyWidth: standardRef.value.form.middleFrequencyWidth, // 中频带宽 + middleConversionDeviation: standardRef.value.form.middleConversionDeviation, // 中频带宽转换偏差 + referenceLevel: standardRef.value.form.referenceLevel, // 参考电平 + verticalScale: standardRef.value.form.verticalScale, // 垂直刻度(显示位置从上到下) + inputFrequency: standardRef.value.form.inputFrequency, // 输入频响 + averageNoiseLevel: standardRef.value.form.averageNoiseLevel, // 平均噪声电平 + harmonicDistortion: standardRef.value.form.harmonicDistortion, // 谐波失真 + inputAttenuation: standardRef.value.form.inputAttenuation, // 输入衰减 + gainCompression: standardRef.value.form.gainCompression, // 1dB增益压缩点 + calibratingSignal: standardRef.value.form.calibratingSignal, // 校准信号 + + measureItemDataSpectrumAnalyzerList: standardRef.value.list.map((item: any) => ({ + ...item, + itemId: infoId.value, + })), // 鉴定项列表 + } + } return params } @@ -451,6 +483,10 @@ getList.value = response.measureItemDataETwoList // 检定项表格 getObject.value = response // 检定项表单 } + else if (form.value.belongStandardEquipment === '9') { // 第9套:频谱分析仪 + getList.value = response.measureItemDataSpectrumAnalyzerList // 检定项表格 + getObject.value = response // 检定项表单 + } } function fetchInfo() {