<!-- eslint-disable vue/no-dupe-keys --> <!-- 第10套:信号发生器标准装置 --> <script lang="ts" setup name="TemplateDetailTenth"> import { ElMessage } from 'element-plus' import type { IList } from './templateDetail-interface' import templateTable from './templateTable.vue' import type { dictType } from '@/global' import { getDictByCode } from '@/api/system/dict' import { calc } from '@/utils/useCalc' import { useCheckList } from '@/commonMethods/useCheckList' import { calculate, recalculate } from '@/api/business/measure/caculate' import type { TableColumn } from '@/components/NormalTable/table_interface' import { differenceArray } from '@/utils/Array' const props = defineProps({ pageType: { type: String, default: 'add', }, itemCategoryName: { type: String, require: true, }, // 设备检定项分类名称 belongStandardEquipment: { // 检校标准装置code type: String, require: true, }, list: { type: Array as any, }, form: { // 检定项表单 type: Object as any, }, itemId: { // 检定项id type: String, default: '', }, }) const form = ref({ appearanceFunctionCheck: 1, // 外观及功能性检查 frequency: 1, // 频率 power: 1, // 功率 relativeLevel: 1, // 相对电平 amplitudeModulationDepth: 1, // 调幅深度 frequencyModulationDeviation: 1, // 调频频偏 remainAmplitudeModulation: 1, // 剩余调幅 remainFrequencyModulation: 1, // 剩余调频 harmonic: 1, // 谐波 phaseModulationPhaseDeviation: 1, // 调相相偏 noHarmonic: 1, // 非谐波 }) const tableLoading = ref(false) const frequencyList = ref<IList[]>([]) // 频率 const powerList = ref<IList[]>([]) // 功率 const relativeLevelList = ref<IList[]>([]) // 相对电平 const amplitudeModulationDepthList = ref<IList[]>([]) // 调幅深度 const frequencyModulationDeviationList = ref<IList[]>([]) // 调频频偏 const residentialAmplitudeModulationList = ref<IList[]>([]) // 剩余调幅 const residentialFrequencyModulationList = ref<IList[]>([]) // 剩余调频 const harmonicList = ref<IList[]>([]) // 谐波 const phaseList = ref<IList[]>([]) // 调相相偏 const noHarmonicList = ref<IList[]>([]) // 非谐波 const frequencyCheckoutList = ref<IList[]>([]) // 频率 const powerCheckoutList = ref<IList[]>([]) // 功率 const relativeLevelCheckoutList = ref<IList[]>([]) // 相对电平 const amplitudeModulationDepthCheckoutList = ref<IList[]>([]) // 调幅深度 const frequencyModulationDeviationCheckoutList = ref<IList[]>([]) // 调频频偏 const residentialAmplitudeModulationCheckoutList = ref<IList[]>([]) // 剩余调幅 const residentialFrequencyModulationCheckoutList = ref<IList[]>([]) // 剩余调频 const harmonicCheckoutList = ref<IList[]>([]) // 谐波 const phaseCheckoutList = ref<IList[]>([]) // 调相相偏 const noHarmonicheckoutList = ref<IList[]>([]) // 谐波 // ----------------------------------------表头------------------------------------------------ const columns_frequency = ref<TableColumn[]>([ // 频率 { text: '检定项目', value: 'params', align: 'center', required: true }, { text: '标称值', value: 'nominalValue', align: 'center', required: true, width: '180' }, { text: '标称值单位', value: 'unit', align: 'center', required: true, width: '100' }, { text: '幅度', value: 'amplitude', align: 'center', required: true, width: '180' }, { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, width: '100' }, { text: 'U(k=2)', value: 'urel', align: 'center', required: false, width: '180' }, { text: '技术指标', value: 'technicalIndex', align: 'center', required: false, width: '340' }, ]) const columns_power = ref<TableColumn[]>([ // 功率 { text: '检定项目', value: 'params', align: 'center', required: true }, { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' }, { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' }, { text: '标称值', value: 'nominalValue', align: 'center', required: true, width: '180' }, { text: '标称值单位', value: 'unit', align: 'center', required: true, width: '100' }, { text: '技术指标', value: 'technicalIndex', align: 'center', required: false, width: '340' }, { text: 'U(k=2)', value: 'urel', align: 'center', required: false, width: '180' }, ]) const columns_amplitude_modulation_depth = ref<TableColumn[]>([ // 调幅深度\调频频偏\调相相偏 { text: '检定项目', value: 'params', align: 'center', required: true }, { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' }, { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' }, { text: '标称值', value: 'nominalValue', align: 'center', required: true, width: '180' }, { text: '标称值单位', value: 'unit', align: 'center', required: true, width: '100' }, { text: '幅度', value: 'amplitude', align: 'center', required: true, width: '180' }, { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, width: '100' }, { text: '高通滤波', value: 'highPassFilter', align: 'center', required: true, width: '180' }, { text: '高通滤波单位', value: 'highPassFilterUnit', align: 'center', required: true, width: '100' }, { text: '低通滤波', value: 'lowerPassFilter', align: 'center', required: true, width: '180' }, { text: '低通滤波单位', value: 'lowerPassFilterUnit', align: 'center', required: true, width: '100' }, { text: '调制速率', value: 'modulationRate', align: 'center', required: true, width: '180' }, { text: '调制速率单位', value: 'modulationRateUnit', align: 'center', required: true, width: '100' }, { text: '技术指标', value: 'technicalIndex', align: 'center', required: false, width: '340' }, { text: 'U(k=2)', value: 'urel', align: 'center', required: false, width: '180' }, { text: 'THD上限', value: 'upperIndex', align: 'center', required: false, width: '340' }, ]) const columns_residential_amplitude_modulation = ref<TableColumn[]>([ // 剩余调幅\剩余调频 { text: '检定项目', value: 'params', align: 'center', required: true }, { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' }, { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' }, { text: '幅度', value: 'amplitude', align: 'center', required: true, width: '180' }, { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, width: '100' }, { text: '高通滤波', value: 'highPassFilter', align: 'center', required: true, width: '180' }, { text: '高通滤波单位', value: 'highPassFilterUnit', align: 'center', required: true, width: '100' }, { text: '低通滤波', value: 'lowerPassFilter', align: 'center', required: true, width: '180' }, { text: '低通滤波单位', value: 'lowerPassFilterUnit', align: 'center', required: true, width: '100' }, { text: '指标上限', value: 'upperIndex', align: 'center', required: false, width: '340' }, { text: 'U(k=2)', value: 'urel', align: 'center', required: false, width: '180' }, ]) const columns_harmonic = ref<TableColumn[]>([ // 谐波 { text: '检定项目', value: 'params', align: 'center', required: true }, { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' }, { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' }, { text: '幅度', value: 'amplitude', align: 'center', required: true, width: '180' }, { text: '幅度单位', value: 'amplitudeUnit', align: 'center', required: true, width: '100' }, { text: '谐波次数', value: 'harmonicNumber', align: 'center', required: true, width: '180' }, { text: 'RBW', value: 'rbwValue', align: 'center', required: false, width: '180' }, { text: 'RBW单位', value: 'rbwValueUnit', align: 'center', required: false, width: '100' }, { text: 'VBW', value: 'vbwValue', align: 'center', required: false, width: '180' }, { text: 'VBW单位', value: 'vbwValueUnit', align: 'center', required: false, width: '100' }, { text: '指标上限', value: 'upperIndex', align: 'center', required: false, width: '340' }, { text: 'U(k=2)', value: 'urel', align: 'center', required: false, width: '180' }, ]) const columns_noHarmonic = ref<TableColumn[]>([ // 非谐波 { text: '检定项目', value: 'params', align: 'center', required: true }, { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' }, { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' }, { text: '功率', value: 'power', align: 'center', required: true, width: '180' }, { text: '功率单位', value: 'powerUnit', align: 'center', required: true, width: '100' }, { text: '偏移频率', value: 'offsetFrequency', align: 'center', required: true, width: '180' }, { text: '偏移频率单位', value: 'offsetFrequencyUnit', align: 'center', required: true, width: '100' }, { text: 'RBW', value: 'rbwValue', align: 'center', required: false, width: '180' }, { text: 'RBW单位', value: 'rbwValueUnit', align: 'center', required: false, width: '100' }, { text: 'VBW', value: 'vbwValue', align: 'center', required: false, width: '180' }, { text: 'VBW单位', value: 'vbwValueUnit', align: 'center', required: false, width: '100' }, { text: '指标上限', value: 'upperIndex', align: 'center', required: false, width: '340' }, { text: 'U(k=2)', value: 'urel', align: 'center', required: false, width: '180' }, ]) // --------------------------------表格操作--------------------------------------------------- // 多选 const handleSelectionChange = (e: any, type: string) => { switch (type) { case '频率': frequencyCheckoutList.value = e break case '功率': powerCheckoutList.value = e break case '调幅深度': amplitudeModulationDepthCheckoutList.value = e break case '调频频偏': frequencyModulationDeviationCheckoutList.value = e break case '剩余调幅': residentialAmplitudeModulationCheckoutList.value = e break case '剩余调频': residentialFrequencyModulationCheckoutList.value = e break case '谐波': harmonicCheckoutList.value = e break case '调相相偏': phaseCheckoutList.value = e break case '非谐波': noHarmonicheckoutList.value = e break } } /** * 增加行公共方法 * @param list 要操作的数组 * @param title 操作的表格 */ const addRow = (list: IList[], title: string) => { if (checkList(list, `${title}表格`)) { if (list.length) { // 增加行时默认上一行数据 list.push({ ...list[list.length - 1], id: `custom-${new Date().getTime()}` }) } else { switch (title) { case '频率': list.push({ id: `custom-${new Date().getTime()}`, // id,更新/删除使用参数 dataType: '1', // 检定项数据类型(一个检定项中区分两个表格)(字典code) itemId: props.itemId, // 检定项id params: title, // 检定项目 nominalValue: undefined, // 标称值 unit: 'Hz', // 标称值单位 amplitude: undefined, // 幅度 amplitudeUnit: 'dBm', // 幅度单位 urel: undefined, // U(k=2) technicalIndex: undefined, // 技术指标 technicalIndexSymbol: '±', // 技术指标前符号 technicalIndexUnit: 'Hz', // 技术指标单位 }) break case '功率': list.push({ id: `custom-${new Date().getTime()}`, // id,更新/删除使用参数 dataType: '2', // 检定项数据类型(一个检定项中区分两个表格)(字典code) itemId: props.itemId, // 检定项id params: title, // 检定项目 frequency: '', // 频率 frequencyUnit: 'Hz', // 频率单位 nominalValue: '', // 标称值 unit: 'dBm', // 标称值单位 urel: undefined, // U(k=2) technicalIndex: undefined, // 技术指标 technicalIndexSymbol: '±', // 技术指标前符号 technicalIndexUnit: 'dB', // 技术指标单位 }) break case '相对电平': list.push({ id: `custom-${new Date().getTime()}`, // id,更新/删除使用参数 dataType: '10', // 检定项数据类型(一个检定项中区分两个表格)(字典code) itemId: props.itemId, // 检定项id params: title, // 检定项目 frequency: '', // 频率 frequencyUnit: 'Hz', // 频率单位 nominalValue: '', // 标称值 unit: 'dBm', // 标称值单位 urel: undefined, // U(k=2) technicalIndex: undefined, // 技术指标 technicalIndexSymbol: '±', // 技术指标前符号 technicalIndexUnit: 'dB', // 技术指标单位 }) break case '调幅深度': list.push({ id: `custom-${new Date().getTime()}`, // id,更新/删除使用参数 dataType: '3', // 检定项数据类型(一个检定项中区分两个表格)(字典code) itemId: props.itemId, // 检定项id params: title, // 检定项目 frequency: '', // 频率 frequencyUnit: '', // 频率单位 nominalValue: '', // 标称值 unit: '%', // 标称值单位 amplitude: undefined, // 幅度 amplitudeUnit: 'dBm', // 幅度单位 highPassFilter: '50', // 高通滤波 highPassFilterUnit: 'Hz', // 高通滤波单位 lowerPassFilter: '3', // 低通滤波 lowerPassFilterUnit: 'kHz', // 低通滤波单位 modulationRate: undefined, // 调制速率 modulationRateUnit: 'Hz', // 调制速率单位 technicalIndex: undefined, // 技术指标 technicalIndexSymbol: '±', // 技术指标前符号 technicalIndexUnit: '%', // 技术指标单位 urel: undefined, // U(k=2) upperIndex: undefined, // 指标上限/THD上限 upperIndexSymbol: '≤', // 指标上限符号/THD上限符号 upperIndexUnit: '%', // 指标上限单位/THD上限单位 }) break case '调频频偏': list.push({ id: `custom-${new Date().getTime()}`, // id,更新/删除使用参数 dataType: '4', // 检定项数据类型(一个检定项中区分两个表格)(字典code) itemId: props.itemId, // 检定项id params: title, // 检定项目 frequency: '', // 频率 frequencyUnit: '', // 频率单位 nominalValue: '', // 标称值 unit: 'Hz', // 标称值单位 amplitude: undefined, // 幅度 amplitudeUnit: 'dBm', // 幅度单位 highPassFilter: '50', // 高通滤波 highPassFilterUnit: 'Hz', // 高通滤波单位 lowerPassFilter: '3', // 低通滤波 lowerPassFilterUnit: 'kHz', // 低通滤波单位 modulationRate: undefined, // 调制速率 modulationRateUnit: 'Hz', // 调制速率单位 technicalIndex: undefined, // 技术指标 technicalIndexSymbol: '±', // 技术指标前符号 technicalIndexUnit: 'Hz', // 技术指标单位 urel: undefined, // U(k=2) upperIndex: undefined, // 指标上限/THD上限 upperIndexSymbol: '≤', // 指标上限符号/THD上限符号 upperIndexUnit: '%', // 指标上限单位/THD上限单位 }) break case '剩余调幅': list.push({ id: `custom-${new Date().getTime()}`, // id,更新/删除使用参数 dataType: '5', // 检定项数据类型(一个检定项中区分两个表格)(字典code) itemId: props.itemId, // 检定项id params: title, // 检定项目 frequency: '', // 频率 frequencyUnit: '', // 频率单位 amplitude: undefined, // 幅度 amplitudeUnit: 'dBm', // 幅度单位 highPassFilter: '50', // 高通滤波 highPassFilterUnit: 'Hz', // 高通滤波单位 lowerPassFilter: '3', // 低通滤波 lowerPassFilterUnit: 'kHz', // 低通滤波单位 urel: undefined, // U(k=2) upperIndex: undefined, // 指标上限/THD上限 upperIndexSymbol: '≤', // 指标上限符号/THD上限符号 upperIndexUnit: '%', // 指标上限单位/THD上限单位 }) break case '剩余调频': list.push({ id: `custom-${new Date().getTime()}`, // id,更新/删除使用参数 dataType: '6', // 检定项数据类型(一个检定项中区分两个表格)(字典code) itemId: props.itemId, // 检定项id params: title, // 检定项目 frequency: '', // 频率 frequencyUnit: '', // 频率单位 amplitude: undefined, // 幅度 amplitudeUnit: 'dBm', // 幅度单位 highPassFilter: '50', // 高通滤波 highPassFilterUnit: 'Hz', // 高通滤波单位 lowerPassFilter: '3', // 低通滤波 lowerPassFilterUnit: 'kHz', // 低通滤波单位 urel: undefined, // U(k=2) upperIndex: undefined, // 指标上限/THD上限 upperIndexSymbol: '≤', // 指标上限符号/THD上限符号 upperIndexUnit: 'Hz', // 指标上限单位/THD上限单位 }) break case '谐波': list.push({ id: `custom-${new Date().getTime()}`, // id,更新/删除使用参数 dataType: '7', // 检定项数据类型(一个检定项中区分两个表格)(字典code) itemId: props.itemId, // 检定项id params: title, // 检定项目 frequency: undefined, // 频率 frequencyUnit: '', // 频率单位 amplitude: undefined, // 幅度 amplitudeUnit: 'dBm', // 幅度单位 harmonicNumber: '', // 谐波次数 rbwValue: '1', // RBW rbwValueUnit: 'kHz', // RBW单位 vbwValue: '1', // VBW vbwValueUnit: 'kHz', // VBW单位 urel: undefined, // U(k=2) upperIndex: undefined, // 指标上限/THD上限 upperIndexSymbol: '≤', // 指标上限符号/THD上限符号 upperIndexUnit: 'dBc', // 指标上限单位/THD上限单位 }) break case '调相相偏': list.push({ id: `custom-${new Date().getTime()}`, // id,更新/删除使用参数 dataType: '8', // 检定项数据类型(一个检定项中区分两个表格)(字典code) itemId: props.itemId, // 检定项id params: title, // 检定项目 frequency: '', // 频率 frequencyUnit: 'MHz', // 频率单位 nominalValue: undefined, // 标称值 unit: 'rad', // 标称值单位 amplitude: undefined, // 幅度 amplitudeUnit: 'dBm', // 幅度单位 highPassFilter: '50', // 高通滤波 highPassFilterUnit: 'Hz', // 高通滤波单位 lowerPassFilter: '3', // 低通滤波 lowerPassFilterUnit: 'kHz', // 低通滤波单位 modulationRate: undefined, // 调制速率 modulationRateUnit: 'Hz', // 调制速率单位 technicalIndex: undefined, // 技术指标 technicalIndexSymbol: '±', // 技术指标前符号 technicalIndexUnit: 'rad', // 技术指标单位 urel: undefined, // U(k=2) upperIndex: undefined, // 指标上限/THD上限 upperIndexSymbol: '≤', // 指标上限符号/THD上限符号 upperIndexUnit: '%', // 指标上限单位/THD上限单位 }) break case '非谐波': list.push({ id: `custom-${new Date().getTime()}`, // id,更新/删除使用参数 dataType: '9', // 检定项数据类型(一个检定项中区分两个表格)(字典code) itemId: props.itemId, // 检定项id params: title, // 检定项目 frequency: undefined, // 频率 frequencyUnit: 'Hz', // 频率单位 power: undefined, // 功率 powerUnit: 'dBm', // 功率单位 offsetFrequency: undefined, // 偏移频率 offsetFrequencyUnit: 'Hz', // 偏移频率单位 rbwValue: '1', // RBW rbwValueUnit: 'kHz', // RBW单位 vbwValue: '1', // VBW vbwValueUnit: 'kHz', // VBW单位 urel: undefined, // U(k=2) upperIndex: undefined, // 指标上限/THD上限 upperIndexSymbol: '≤', // 指标上限符号/THD上限符号 upperIndexUnit: 'dBc', // 指标上限单位/THD上限单位 }) break } } } } /** * 删除行公共方法 * @param checkoutList 选中的数组 * @param list 操作的数组 */ const delRow = (checkoutList: IList[], list: IList[], title: string) => { if (!checkoutList.length) { ElMessage.warning('请选中要删除的行') } else { let data = [] as any[] data = differenceArray(list, checkoutList) switch (title) { case '频率': frequencyList.value = data break case '功率': powerList.value = data break case '相对电平': relativeLevelList.value = data break case '调幅深度': amplitudeModulationDepthList.value = data break case '调频频偏': frequencyModulationDeviationList.value = data break case '剩余调幅': residentialAmplitudeModulationList.value = data break case '剩余调频': residentialFrequencyModulationList.value = data break case '谐波': harmonicList.value = data break case '调相相偏': phaseList.value = data break case '非谐波': noHarmonicList.value = data break } } } // ---------------------------------------------校验--------------------------------------------------- // 增加行校验表格 function checkList(list: any, getTitle: string) { let title = '' if (getTitle.slice(getTitle.length - 2) === '表格') { title = getTitle.slice(0, getTitle.length - 2) } else { title = getTitle } let columns switch (title) { case '频率': columns = columns_frequency.value break case '功率': case '相对电平': columns = columns_power.value break case '调幅深度': columns = columns_amplitude_modulation_depth.value break case '调频频偏': columns = columns_amplitude_modulation_depth.value break case '剩余调幅': columns = columns_residential_amplitude_modulation.value break case '剩余调频': columns = columns_residential_amplitude_modulation.value break case '谐波': columns = columns_harmonic.value break case '调相相偏': columns = columns_amplitude_modulation_depth.value break case '非谐波': columns = columns_noHarmonic.value break } return useCheckList(list, columns, `${title}表格`) } // 保存之前校验 const checkListBeforeSave = () => { // 验空 if (form.value.frequency && !frequencyList.value.length) { // 频率 ElMessage.warning('频率 不能为空') return false } else if (form.value.power && !powerList.value.length) { // 功率 ElMessage.warning('功率 不能为空') return false } else if (form.value.relativeLevel && !relativeLevelList.value.length) { // 相对电平 ElMessage.warning('相对电平 不能为空') return false } else if (form.value.amplitudeModulationDepth && !amplitudeModulationDepthList.value.length) { // 调幅深度 ElMessage.warning('调幅深度 不能为空') return false } else if (form.value.frequencyModulationDeviation && !frequencyModulationDeviationList.value.length) { // 调频频偏 ElMessage.warning('调频频偏 不能为空') return false } else if (form.value.remainAmplitudeModulation && !residentialAmplitudeModulationList.value.length) { // 剩余调幅 ElMessage.warning('剩余调幅 不能为空') return false } else if (form.value.remainFrequencyModulation && !residentialFrequencyModulationList.value.length) { // 剩余调频 ElMessage.warning('剩余调频 不能为空') return false } else if (form.value.harmonic && !harmonicList.value.length) { // 谐波 ElMessage.warning('谐波 不能为空') return false } else if (form.value.phaseModulationPhaseDeviation && !phaseList.value.length) { // 调相相偏 ElMessage.warning('调相相偏 不能为空') return false } else if (form.value.noHarmonic && !noHarmonicList.value.length) { // 非谐波 ElMessage.warning('非谐波 不能为空') return false } // 验数据 let frequencyResult = true // 频率 let powerResult = true // 功率 let relativeLevel = true // 相对电平 let amplitudeModulationDepthResult = true // 调幅深度 let frequencyModulationDeviationResult = true // 调频频偏 let residentialAmplitudeModulationResult = true // 剩余调幅 let residentialFrequencyModulationResult = true // 剩余调频 let harmonicResult = true // 谐波 let phaseResult = true // 调相相偏 let noHarmonicResult = true // 非谐波 if (form.value.frequency) { frequencyResult = checkList(frequencyList.value, '频率') } if (form.value.power) { powerResult = checkList(powerList.value, '功率') } if (form.value.relativeLevel) { relativeLevel = checkList(relativeLevelList.value, '相对电平') } if (form.value.amplitudeModulationDepth) { amplitudeModulationDepthResult = checkList(amplitudeModulationDepthList.value, '调幅深度') } if (form.value.frequencyModulationDeviation) { frequencyModulationDeviationResult = checkList(frequencyModulationDeviationList.value, '调频频偏') } if (form.value.remainAmplitudeModulation) { residentialAmplitudeModulationResult = checkList(residentialAmplitudeModulationList.value, '剩余调幅') } if (form.value.remainFrequencyModulation) { residentialFrequencyModulationResult = checkList(residentialFrequencyModulationList.value, '剩余调频') } if (form.value.harmonic) { harmonicResult = checkList(harmonicList.value, '谐波') } if (form.value.phaseModulationPhaseDeviation) { phaseResult = checkList(phaseList.value, '调相相偏') } if (form.value.noHarmonic) { noHarmonicResult = checkList(noHarmonicList.value, '非谐波') } if (frequencyResult && powerResult && relativeLevel && amplitudeModulationDepthResult && frequencyModulationDeviationResult && residentialAmplitudeModulationResult && residentialFrequencyModulationResult && harmonicResult && phaseResult && noHarmonicResult ) { return true } else { return false } } // 保存之前处理数据 const solveDataBeforeSave = () => { // 数据处理 let tempList = [] as any if (form.value.frequency) { // 频率 tempList = tempList.concat(frequencyList.value) } if (form.value.power) { // 功率 tempList = tempList.concat(powerList.value) } if (form.value.relativeLevel) { // 相对电平 tempList = tempList.concat(relativeLevelList.value) } if (form.value.amplitudeModulationDepth) { // 调幅深度 tempList = tempList.concat(amplitudeModulationDepthList.value) } if (form.value.frequencyModulationDeviation) { // 调频频偏 tempList = tempList.concat(frequencyModulationDeviationList.value) } if (form.value.remainAmplitudeModulation) { // 剩余调幅 tempList = tempList.concat(residentialAmplitudeModulationList.value) } if (form.value.remainFrequencyModulation) { // 剩余调频 tempList = tempList.concat(residentialFrequencyModulationList.value) } if (form.value.harmonic) { // 谐波 tempList = tempList.concat(harmonicList.value) } if (form.value.phaseModulationPhaseDeviation) { // 调相相偏 tempList = tempList.concat(phaseList.value) } if (form.value.noHarmonic) { // 非谐波 tempList = tempList.concat(noHarmonicList.value) } tempList = tempList.map((item: { id: string }) => { return { ...item, id: '', } }) return tempList } // ------------------------------------------------------------------------------------------------ watch(() => props.list, (newVal) => { // 检定项表格 if (newVal && newVal.length) { const data = newVal.map((item: IList) => { return { ...item, technicalIndex: item.technicalIndex === '' ? undefined : item.technicalIndex, // technicalIndexSymbol: (item.technicalIndex === '' && props.pageType === 'detail') ? '' : item.technicalIndexSymbol, // 技术指标符号 // technicalIndexUnit: (item.technicalIndex === '' && props.pageType === 'detail') ? '' : item.technicalIndexUnit, // 技术指标单位 urel: item.urel === '' ? undefined : item.urel, upperIndex: item.upperIndex === '' ? undefined : item.upperIndex, // upperIndexSymbol: (item.upperIndex === '' && props.pageType === 'detail') ? '' : item.upperIndexSymbol, // 指标上限符号/THD上限符号 // upperIndexUnit: (item.upperIndex === '' && props.pageType === 'detail') ? '' : item.upperIndexUnit, // 指标上限单位/THD上限单位 } }) frequencyList.value = data.filter((item: any) => `${item.dataType}` === '1').map((item: any) => { item.params = '频率'; return item }) powerList.value = data.filter((item: any) => `${item.dataType}` === '2').map((item: any) => { item.params = '功率'; return item }) relativeLevelList.value = data.filter((item: any) => `${item.dataType}` === '10').map((item: any) => { item.params = '相对电平'; return item }) form.value.relativeLevel = relativeLevelList.value.length ? 1 : 0 // 相对电平 amplitudeModulationDepthList.value = data.filter((item: any) => `${item.dataType}` === '3').map((item: any) => { item.params = '调幅深度'; return item }) frequencyModulationDeviationList.value = data.filter((item: any) => `${item.dataType}` === '4').map((item: any) => { item.params = '调频频偏'; return item }) residentialAmplitudeModulationList.value = data.filter((item: any) => `${item.dataType}` === '5').map((item: any) => { item.params = '剩余调幅'; return item }) residentialFrequencyModulationList.value = data.filter((item: any) => `${item.dataType}` === '6').map((item: any) => { item.params = '剩余调频'; return item }) harmonicList.value = data.filter((item: any) => `${item.dataType}` === '7').map((item: any) => { item.params = '谐波'; return item }) phaseList.value = data.filter((item: any) => `${item.dataType}` === '8').map((item: any) => { item.params = '调相相偏'; return item }) noHarmonicList.value = data.filter((item: any) => `${item.dataType}` === '9').map((item: any) => { item.params = '非谐波'; return item }) } }) const $route = useRoute() watch(() => props.form, (newValue) => { const updataOld = $route.query.updataOld as string const isFirstConfig = $route.query.isFirstConfig as string if (newValue && Object.keys(newValue).length && updataOld !== 'true' && isFirstConfig !== 'true') { form.value.appearanceFunctionCheck = `${newValue.appearanceFunctionCheck}` === '' ? 1 : newValue.appearanceFunctionCheck // 外观及功能性检查 form.value.frequency = `${newValue.frequency}` === '' ? 1 : newValue.frequency // 频率 form.value.power = `${newValue.power}` === '' ? 1 : newValue.power // 功率 // form.value.relativeLevel = `${newValue.relativeLevel}` === '' ? 1 : newValue.relativeLevel // 相对电平 form.value.amplitudeModulationDepth = `${newValue.amplitudeModulationDepth}` === '' ? 1 : newValue.amplitudeModulationDepth // 调幅深度 form.value.frequencyModulationDeviation = `${newValue.frequencyModulationDeviation}` === '' ? 1 : newValue.frequencyModulationDeviation // 调频频偏 form.value.remainAmplitudeModulation = `${newValue.remainAmplitudeModulation}` === '' ? 1 : newValue.remainAmplitudeModulation // 剩余调幅 form.value.remainFrequencyModulation = `${newValue.remainFrequencyModulation}` === '' ? 1 : newValue.remainFrequencyModulation // 剩余调频 form.value.harmonic = `${newValue.harmonic}` === '' ? 1 : newValue.harmonic // 谐波 form.value.phaseModulationPhaseDeviation = `${newValue.phaseModulationPhaseDeviation}` === '' ? 1 : newValue.phaseModulationPhaseDeviation // 调相相偏 form.value.noHarmonic = `${newValue.noHarmonic}` === '' ? 1 : newValue.noHarmonic // 非谐波 } }, { deep: true, immediate: true }) // 清空配置方法 const clearConfig = () => { frequencyList.value = [] // 频率 powerList.value = [] // 功率 relativeLevelList.value = [] // 相对电平 amplitudeModulationDepthList.value = [] // 调幅深度 frequencyModulationDeviationList.value = [] // 调频频偏 residentialAmplitudeModulationList.value = [] // 剩余调幅 residentialFrequencyModulationList.value = [] // 剩余调频 harmonicList.value = [] // 谐波 phaseList.value = [] // 调相相偏 noHarmonicList.value = [] // 非谐波 } defineExpose({ checkListBeforeSave, solveDataBeforeSave, form, clearConfig }) </script> <template> <div style="padding: 0 10px;"> <el-checkbox v-model="form.appearanceFunctionCheck" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 外观及功能性检查 </el-checkbox> </div> <!-- 频率 --> <detail-block title=""> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="form.frequency" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 频率 </el-checkbox> <div v-if="pageType !== 'detail' && form.frequency" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(frequencyList, '频率')"> 增加行 </el-button> <el-button type="info" @click="delRow(frequencyCheckoutList, frequencyList, '频率')"> 删除行 </el-button> </div> </div> <template-table v-if="form.frequency" type="频率" :data="frequencyList" :columns="columns_frequency" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '频率')" /> </detail-block> <!-- 功率 --> <detail-block title=""> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="form.power" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 功率 </el-checkbox> <div v-if="pageType !== 'detail' && form.power" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(powerList, '功率')"> 增加行 </el-button> <el-button type="info" @click="delRow(powerCheckoutList, powerList, '功率')"> 删除行 </el-button> </div> </div> <template-table v-if="form.power" type="功率" :data="powerList" :columns="columns_power" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '功率')" /> </detail-block> <!-- 相对电平 --> <detail-block title=""> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="form.relativeLevel" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 相对电平 </el-checkbox> <div v-if="pageType !== 'detail' && form.relativeLevel" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(relativeLevelList, '相对电平')"> 增加行 </el-button> <el-button type="info" @click="delRow(relativeLevelCheckoutList, relativeLevelList, '相对电平')"> 删除行 </el-button> </div> </div> <template-table v-if="form.relativeLevel" type="相对电平" :data="relativeLevelList" :columns="columns_power" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '相对电平')" /> </detail-block> <!-- 调幅深度 --> <detail-block title=""> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="form.amplitudeModulationDepth" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 调幅深度 </el-checkbox> <div v-if="pageType !== 'detail' && form.amplitudeModulationDepth" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(amplitudeModulationDepthList, '调幅深度')"> 增加行 </el-button> <el-button type="info" @click="delRow(amplitudeModulationDepthCheckoutList, amplitudeModulationDepthList, '调幅深度')"> 删除行 </el-button> </div> </div> <template-table v-if="form.amplitudeModulationDepth" type="调幅深度" :data="amplitudeModulationDepthList" :columns="columns_amplitude_modulation_depth" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '调幅深度')" /> </detail-block> <!-- 调频频偏 --> <detail-block title=""> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="form.frequencyModulationDeviation" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 调频频偏 </el-checkbox> <div v-if="pageType !== 'detail' && form.frequencyModulationDeviation" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(frequencyModulationDeviationList, '调频频偏')"> 增加行 </el-button> <el-button type="info" @click="delRow(frequencyModulationDeviationCheckoutList, frequencyModulationDeviationList, '调频频偏')"> 删除行 </el-button> </div> </div> <template-table v-if="form.frequencyModulationDeviation" type="调频频偏" :data="frequencyModulationDeviationList" :columns="columns_amplitude_modulation_depth" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '调频频偏')" /> </detail-block> <!-- 剩余调幅 --> <detail-block title=""> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="form.remainAmplitudeModulation" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 剩余调幅 </el-checkbox> <div v-if="pageType !== 'detail' && form.remainAmplitudeModulation" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(residentialAmplitudeModulationList, '剩余调幅')"> 增加行 </el-button> <el-button type="info" @click="delRow(residentialAmplitudeModulationCheckoutList, residentialAmplitudeModulationList, '剩余调幅')"> 删除行 </el-button> </div> </div> <template-table v-if="form.remainAmplitudeModulation" type="剩余调幅" :data="residentialAmplitudeModulationList" :columns="columns_residential_amplitude_modulation" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '剩余调幅')" /> </detail-block> <!-- 剩余调频 --> <detail-block title=""> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="form.remainFrequencyModulation" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 剩余调频 </el-checkbox> <div v-if="pageType !== 'detail' && form.remainFrequencyModulation" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(residentialFrequencyModulationList, '剩余调频')"> 增加行 </el-button> <el-button type="info" @click="delRow(residentialFrequencyModulationCheckoutList, residentialFrequencyModulationList, '剩余调频')"> 删除行 </el-button> </div> </div> <template-table v-if="form.remainFrequencyModulation" type="剩余调频" :data="residentialFrequencyModulationList" :columns="columns_residential_amplitude_modulation" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '剩余调频')" /> </detail-block> <!-- 谐波 --> <detail-block title=""> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="form.harmonic" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 谐波 </el-checkbox> <div v-if="pageType !== 'detail' && form.harmonic" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(harmonicList, '谐波')"> 增加行 </el-button> <el-button type="info" @click="delRow(harmonicCheckoutList, harmonicList, '谐波')"> 删除行 </el-button> </div> </div> <template-table v-if="form.harmonic" type="谐波" :data="harmonicList" :columns="columns_harmonic" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '谐波')" /> </detail-block> <!-- 调相相偏 --> <detail-block title=""> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="form.phaseModulationPhaseDeviation" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 调相相偏 </el-checkbox> <div v-if="pageType !== 'detail' && form.phaseModulationPhaseDeviation" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(phaseList, '调相相偏')"> 增加行 </el-button> <el-button type="info" @click="delRow(phaseCheckoutList, phaseList, '调相相偏')"> 删除行 </el-button> </div> </div> <template-table v-if="form.phaseModulationPhaseDeviation" type="调相相偏" :data="phaseList" :columns="columns_amplitude_modulation_depth" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '调相相偏')" /> </detail-block> <!-- 非谐波 --> <detail-block title=""> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="form.noHarmonic" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 非谐波 </el-checkbox> <div v-if="pageType !== 'detail' && form.noHarmonic" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(noHarmonicList, '非谐波')"> 增加行 </el-button> <el-button type="info" @click="delRow(noHarmonicheckoutList, noHarmonicList, '非谐波')"> 删除行 </el-button> </div> </div> <template-table v-if="form.noHarmonic" type="非谐波" :data="noHarmonicList" :columns="columns_noHarmonic" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '非谐波')" /> </detail-block> </template>