Newer
Older
xc-business-system / src / views / business / measure / item / components / seventeen / templateDetail.vue
dutingting on 29 Nov 73 KB 解决冲突
<!-- 第17套:S参数标准库 -->
<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'
import { validateStr } from '@/utils/validate'

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, // 外观及工作正常性检查
  vswr: 1, //	电压驻波比
  insertionLoss: 1, // 插入损耗
  isolationDegree: 1, // 隔离度
  gainFlatness: 1, //	增益、增益平坦度
  couplingDirection: 1, //	耦合度、方向性
  amplitudeConsistency: 1, //	幅度一致性
  phaseShift: 1, //	相移
  phaseConsistency: 1, //	相位一致性
  groupDelay: 1, //	群时延
  filterCharacter: 1, //	滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)
  pointOutputPowerLevel: 1, //	1dB压缩点输出功率电平
  powerFlatness: 1, //	输出功率、功率平坦度
  spuriousSuppression: 1, //	杂散抑制
  harmonicDistortion: 1, //	谐波失真
  phaseNoise: 1, //	相位噪声
  transferAmplitude: 1, //	传输幅度
  transferPhaseShift: 1, //	传输相移
})

const vswrMicrowaveList = ref<IList[]>([]) // 电压驻波比(微波器件)
const insertionLossList = ref<IList[]>([]) // 插入损耗
const isolationDegreeList = ref<IList[]>([]) // 隔离度
const gainFlatnessList = ref<IList[]>([]) // 增益、增益平坦度
const couplingDirectionList = ref<IList[]>([]) // 耦合度、方向性
const amplitudeConsistencyList = ref<IList[]>([]) // 幅度一致性
const phaseShiftList = ref<IList[]>([]) // 相移
const phaseConsistencyList = ref<IList[]>([]) // 相位一致性
const groupDelayList = ref<IList[]>([]) // 群时延
const filterCharacterList = ref<IList[]>([]) // 滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)
const pointOutputPowerLevelList = ref<IList[]>([]) // 1dB压缩点输出功率电平
const powerFlatnessList = ref<IList[]>([]) // 输出功率、功率平坦度
const spuriousSuppressionList = ref<IList[]>([]) // 杂散抑制
const harmonicDistortionList = ref<IList[]>([]) // 谐波失真
const phaseNoiseList = ref<IList[]>([]) // 相位噪声
const vswrNetList = ref<IList[]>([]) // 电压驻波比(矢量网络分析仪)
const transferAmplitudeList = ref<IList[]>([]) // 传输幅度(矢量网络分析仪)
const transferPhaseShiftList = ref<IList[]>([]) // 传输相移(矢量网络分析仪)

const vswrMicrowaveCheckoutList = ref<IList[]>([]) // 电压驻波比(微波器件)
const insertionLossCheckoutList = ref<IList[]>([]) // 插入损耗
const isolationDegreeCheckoutList = ref<IList[]>([]) // 隔离度
const gainFlatnessCheckoutList = ref<IList[]>([]) // 增益、增益平坦度
const couplingDirectionCheckoutList = ref<IList[]>([]) // 耦合度、方向性
const amplitudeConsistencyCheckoutList = ref<IList[]>([]) // 幅度一致性
const phaseShiftCheckoutList = ref<IList[]>([]) // 相移
const phaseConsistencyCheckoutList = ref<IList[]>([]) // 相位一致性
const groupDelayCheckoutList = ref<IList[]>([]) // 群时延
const filterCharacterCheckoutList = ref<IList[]>([]) // 滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)
const pointOutputPowerLevelCheckoutList = ref<IList[]>([]) // 1dB压缩点输出功率电平
const powerFlatnessCheckoutList = ref<IList[]>([]) // 输出功率、功率平坦度
const spuriousSuppressionCheckoutList = ref<IList[]>([]) // 杂散抑制
const harmonicDistortionCheckoutList = ref<IList[]>([]) // 谐波失真
const phaseNoiseCheckoutList = ref<IList[]>([]) // 相位噪声
const vswrNetCheckoutList = ref<IList[]>([]) // 电压驻波比(矢量网络分析仪)
const transferAmplitudeCheckoutList = ref<IList[]>([]) // 传输幅度(矢量网络分析仪)
const transferPhaseShiftCheckoutList = ref<IList[]>([]) // 传输相移(矢量网络分析仪)

// ----------------------------------------表头------------------------------------------------
const columns_vswrMicrowave = ref<TableColumn[]>([ // 电压驻波比、插入损耗、隔离度、幅度一致性、相移、相位一致性、群时延--微波器件
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '类型', value: 'typeValue', align: 'center', required: true, width: '100' },
  { text: '显示格式', value: 'displayFormat', align: 'center', required: true, width: '130' },
  { text: '中频带宽', value: 'ifBandwidth', align: 'center', required: true, width: '180' },
  { text: '中频带宽单位', value: 'ifBandwidthUnit', align: 'center', required: true, width: '100' },
  { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' },
  { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' },
  { text: '测试次数', value: 'testNumber', align: 'center', required: true, width: '90' },
  { text: 'U(k=2)', value: 'urel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
])

const columns_gainFlatness = ref<TableColumn[]>([ // 增益、增益平坦度
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '类型', value: 'typeValue', align: 'center', required: true, width: '100' },
  { text: '显示格式', value: 'displayFormat', align: 'center', required: true, width: '130' },
  { text: '中频带宽', value: 'ifBandwidth', align: 'center', required: true, width: '180' },
  { text: '中频带宽单位', value: 'ifBandwidthUnit', align: 'center', required: true, width: '100' },
  { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' },
  { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' },
  { text: '测试次数', value: 'testNumber', align: 'center', required: true, width: '90' },
  { text: '增益U(k=2)', value: 'urel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
  { text: '增益平坦度U(k=2)', value: 'flatnessUrel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
])

const columns_couplingDirection = ref<TableColumn[]>([ // 耦合度、方向性
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '类型', value: 'typeValue', align: 'center', required: true, width: '100' },
  { text: '显示格式', value: 'displayFormat', align: 'center', required: true, width: '130' },
  { text: '中频带宽', value: 'ifBandwidth', align: 'center', required: true, width: '180' },
  { text: '中频带宽单位', value: 'ifBandwidthUnit', align: 'center', required: true, width: '100' },
  { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' },
  { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' },
  { text: '测试次数', value: 'testNumber', align: 'center', required: true, width: '90' },
  { text: '耦合性U(k=2)', value: 'urel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
  { text: '方向性U(k=2)', value: 'flatnessUrel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
])

const columns_filterCharacter = ref<TableColumn[]>([ // 滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '类型', value: 'typeValue', align: 'center', required: true, width: '100' },
  { text: '显示格式', value: 'displayFormat', align: 'center', required: true, width: '130' },
  { text: '中频带宽', value: 'ifBandwidth', align: 'center', required: true, width: '180' },
  { text: '中频带宽单位', value: 'ifBandwidthUnit', align: 'center', required: true, width: '100' },
  { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' },
  { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' },
  { text: '上边频频率', value: 'upperFrequency', align: 'center', required: true, width: '180' },
  { text: '上边频频率单位', value: 'upperFrequencyUnit', align: 'center', required: true, width: '100' },
  { text: '下边频频率', value: 'lowerFrequency', align: 'center', required: true, width: '180' },
  { text: '下边频频率单位', value: 'lowerFrequencyUnit', align: 'center', required: true, width: '100' },
  { text: '3dB带宽U(k=2)', value: 'urel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
  { text: '60dB带宽U(k=2)', value: 'flatnessUrel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
  { text: '通带最小损耗U(k=2)', value: 'minLossUrel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
  { text: '阻带最大损耗U(k=2)', value: 'maxLossUrel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
])

const columns_pointOutputPowerLevel = ref<TableColumn[]>([ // 1dB压缩点输出功率电平
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '类型', value: 'typeValue', align: 'center', required: true, width: '100' },
  { text: '显示格式', value: 'displayFormat', align: 'center', required: true, width: '130' },
  { text: '中频带宽', value: 'ifBandwidth', align: 'center', required: true, width: '180' },
  { text: '中频带宽单位', value: 'ifBandwidthUnit', align: 'center', required: true, width: '100' },
  { text: '输出功率', value: 'outputPower', align: 'center', required: true, width: '180' },
  { text: '输出功率单位', value: 'outputPowerUnit', align: 'center', required: true, width: '100' },
  { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' },
  { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' },
  { text: '测试次数', value: 'testNumber', align: 'center', required: true, width: '90' },
  { text: 'U(k=2)', value: 'urel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
])

const columns_powerFlatness = ref<TableColumn[]>([ // 输出功率、功率平坦度
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' },
  { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' },
  { text: '输入功率', value: 'inputPower', align: 'center', required: true, width: '180' },
  { text: '输入功率单位', value: 'inputPowerUnit', align: 'center', required: true, width: '100' },
  { text: '测试次数', value: 'testNumber', align: 'center', required: true, width: '90' },
  { text: '输出功率U(k=2)', value: 'urel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
  { text: '输出功率平坦度U(k=2)', value: 'flatnessUrel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
])

const columns_spuriousSuppression = ref<TableColumn[]>([ // 杂散抑制
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '基波频率', value: 'fundamentalFrequency', align: 'center', required: true, width: '180' },
  { text: '基波频率单位', value: 'fundamentalFrequencyUnit', align: 'center', required: true, width: '100' },
  { text: '参考电平', value: 'spectrumLevel', align: 'center', required: true, width: '180' },
  { text: '参考电平单位', value: 'spectrumLevelUnit', align: 'center', required: true, width: '100' },
  { text: '中频频率', value: 'intermediateFrequency', align: 'center', required: true, width: '180' },
  { text: '中频频率单位', value: 'intermediateFrequencyUnit', align: 'center', required: true, width: '100' },
  { text: '跨度(SPAN)', value: 'span', align: 'center', required: true, width: '180' },
  { text: '分辨带宽', value: 'resolutionBandwidth', align: 'center', required: true, width: '180' },
  { text: '分辨带宽单位', value: 'resolutionBandwidthUnit', align: 'center', required: true, width: '100' },
  { text: 'U(k=2)', value: 'urel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
])

const columns_harmonicDistortion = ref<TableColumn[]>([ // 谐波失真
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '基波频率', value: 'fundamentalFrequency', align: 'center', required: true, width: '180' },
  { text: '基波频率单位', value: 'fundamentalFrequencyUnit', align: 'center', required: true, width: '100' },
  { text: '基波幅度', value: 'fundamentalAmplitude', align: 'center', required: true, width: '180' },
  { text: '基波幅度单位', value: 'fundamentalAmplitudeUnit', align: 'center', required: true, width: '100' },
  { text: '输入功率', value: 'inputPower', align: 'center', required: true, width: '180' },
  { text: '输入功率单位', value: 'inputPowerUnit', align: 'center', required: true, width: '100' },
  { text: '谐波次数', value: 'harmonicNumber', align: 'center', required: true, width: '180' },
  { text: 'RBW', value: 'rbwValue', align: 'center', required: true, width: '180' },
  { text: 'RBW单位', value: 'rbwValueUnit', align: 'center', required: true, width: '100' },
  { text: 'VBW', value: 'vbwValue', align: 'center', required: true, width: '180' },
  { text: 'VBW单位', value: 'vbwValueUnit', align: 'center', required: true, width: '100' },
  { text: 'U(k=2)', value: 'urel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
])

const columns_phaseNoise = ref<TableColumn[]>([ // 相位噪声
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' },
  { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' },
  { text: '边带频率', value: 'sidebandFrequency', align: 'center', required: true, width: '180' },
  { text: '边带频率单位', value: 'sidebandFrequencyUnit', align: 'center', required: true, width: '100' },
  { text: '随机噪声修正值', value: 'randomNoiseCorrectValue', align: 'center', required: true, width: '180' },
  { text: '随机噪声修正值单位', value: 'randomNoiseCorrectValueUnit', align: 'center', required: true, width: '100' },
  { text: '分辨带宽', value: 'resolutionBandwidth', align: 'center', required: true, width: '180' },
  { text: '分辨带宽单位', value: 'resolutionBandwidthUnit', align: 'center', required: true, width: '100' },
  { text: 'U(k=2)', value: 'urel', align: 'center', required: true, width: '180', reg: validateStr, belongStandardEquipment: '17' },
])

const columns_vswrNet = ref<TableColumn[]>([ // 电压驻波比--矢量网络分析仪
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '类型', value: 'typeValue', align: 'center', required: true, width: '100' },
  { text: 'VSMR', value: 'vsmr', align: 'center', required: true, width: '100' },
  { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' },
  { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' },
  { text: '标准值', value: 'standardValue', align: 'center', required: true, width: '180' },
  // { text: '标准值单位', value: 'standardValueUnit', align: 'center', required: true, width: '100' },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: '220' },
  { text: 'U(k=2)', value: 'urel', align: 'center', required: false, width: '180' },
])

const columns_transferAmplitude = ref<TableColumn[]>([ // 传输幅度--矢量网络分析仪
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '类型', value: 'typeValue', align: 'center', required: true, width: '100' },
  { 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: 'standardValue', align: 'center', required: true, width: '180' },
  { text: '标准值单位', value: 'standardValueUnit', align: 'center', required: true, width: '100' },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: '220' },
  { text: 'U(k=2)', value: 'urel', align: 'center', required: false, width: '180' },
])

const columns_transferPhaseShift = ref<TableColumn[]>([ // 传输相移--矢量网络分析仪
  { text: '检定项目', value: 'params', align: 'center', required: false },
  { text: '类型', value: 'typeValue', align: 'center', required: true, width: '100' },
  { text: '频率', value: 'frequency', align: 'center', required: true, width: '180' },
  { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: '100' },
  { text: '标准值', value: 'standardValue', align: 'center', required: true, width: '180' },
  { text: '标准值单位', value: 'standardValueUnit', align: 'center', required: true, width: '100' },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: '220' },
  { text: 'U(k=2)', value: 'urel', align: 'center', required: false, width: '180' },
])

// --------------------------------表格操作---------------------------------------------------
// 多选
const handleSelectionChange = (e: any, type: string) => {
  switch (type) {
    case '电压驻波比(微波器件)':
      vswrMicrowaveCheckoutList.value = e
      break
    case '插入损耗':
      insertionLossCheckoutList.value = e
      break
    case '隔离度':
      isolationDegreeCheckoutList.value = e
      break
    case '增益、增益平坦度':
      gainFlatnessCheckoutList.value = e
      break
    case '耦合度、方向性':
      couplingDirectionCheckoutList.value = e
      break
    case '幅度一致性':
      amplitudeConsistencyCheckoutList.value = e
      break
    case '相移':
      phaseShiftCheckoutList.value = e
      break
    case '相位一致性':
      phaseConsistencyCheckoutList.value = e
      break
    case '群时延':
      groupDelayCheckoutList.value = e
      break
    case '滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)':
      filterCharacterCheckoutList.value = e
      break
    case '1dB压缩点输出功率电平':
      pointOutputPowerLevelCheckoutList.value = e
      break
    case '输出功率、功率平坦度':
      powerFlatnessCheckoutList.value = e
      break
    case '杂散抑制':
      spuriousSuppressionCheckoutList.value = e
      break
    case '谐波失真':
      harmonicDistortionCheckoutList.value = e
      break
    case '相位噪声':
      phaseNoiseCheckoutList.value = e
      break
    case '电压驻波比(矢量网络分析仪)':
      vswrNetCheckoutList.value = e
      break
    case '传输幅度':
      transferAmplitudeCheckoutList.value = e
      break
    case '传输相移':
      transferPhaseShiftCheckoutList.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.slice(0, 5), // 检定项目
            typeValue: 'S11', //	类型
            displayFormat: 'VSWR', //	显示格式
            ifBandwidth: '100', //	中频带宽
            ifBandwidthUnit: 'MHz', //	中频带宽单位
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            testNumber: '10', //	测试次数
            urel: '', // U(k=2)
          })
          break
        case '插入损耗':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '2', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S21', //	类型
            displayFormat: '对数幅度', //	显示格式
            ifBandwidth: '100', //	中频带宽
            ifBandwidthUnit: 'MHz', //	中频带宽单位
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            testNumber: '10', //	测试次数
            urel: '', // U(k=2)
          })
          break
        case '隔离度':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '3', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S21', //	类型
            displayFormat: '对数幅度', //	显示格式
            ifBandwidth: '100', //	中频带宽
            ifBandwidthUnit: 'MHz', //	中频带宽单位
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            testNumber: '10', //	测试次数
            urel: '', // U(k=2)
          })
          break
        case '增益、增益平坦度':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '4', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S21', //	类型
            displayFormat: '对数幅度', //	显示格式
            ifBandwidth: '100', //	中频带宽
            ifBandwidthUnit: 'MHz', //	中频带宽单位
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            testNumber: '10', //	测试次数
            urel: '', // 增益U(k=2)
            flatnessUrel: '', //	增益平坦度U(k=2)
          })
          break
        case '耦合度、方向性':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '5', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S21', //	类型
            displayFormat: '对数幅度', //	显示格式
            ifBandwidth: '100', //	中频带宽
            ifBandwidthUnit: 'MHz', //	中频带宽单位
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            testNumber: '10', //	测试次数
            urel: '', // 耦合性U(k=2)
            flatnessUrel: '', // 方向性U(k=2)
          })
          break
        case '幅度一致性':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '6', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S21', //	类型
            displayFormat: '对数幅度', //	显示格式
            ifBandwidth: '100', //	中频带宽
            ifBandwidthUnit: 'MHz', //	中频带宽单位
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            testNumber: '10', //	测试次数
            urel: '', // U(k=2)
          })
          break
        case '相移':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '7', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S21', //	类型
            displayFormat: '相位', //	显示格式
            ifBandwidth: '100', //	中频带宽
            ifBandwidthUnit: 'MHz', //	中频带宽单位
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            testNumber: '10', //	测试次数
            urel: '', // U(k=2)
          })
          break
        case '相位一致性':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '8', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S21', //	类型
            displayFormat: '相位', //	显示格式
            ifBandwidth: '100', //	中频带宽
            ifBandwidthUnit: 'MHz', //	中频带宽单位
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            testNumber: '10', //	测试次数
            urel: '', // U(k=2)
          })
          break
        case '群时延':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '9', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S21', //	类型
            displayFormat: '群时延', //	显示格式
            ifBandwidth: '100', //	中频带宽
            ifBandwidthUnit: 'MHz', //	中频带宽单位
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            testNumber: '10', //	测试次数
            urel: '', // U(k=2)
          })
          break
        case '滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '10', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S21', //	类型
            displayFormat: '对数幅度', //	显示格式
            ifBandwidth: '100', //	中频带宽
            ifBandwidthUnit: 'MHz', //	中频带宽单位
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            upperFrequency: undefined, //	上边频频率
            upperFrequencyUnit: 'MHz', //	上边频频率单位
            lowerFrequency: undefined, //	下边频频率
            lowerFrequencyUnit: 'MHz', //	下边频频率单位
            urel: '', //	3dB带宽U(k=2)
            flatnessUrel: '', // 60dB带宽U(k=2)
            maxLossUrel: '', //	阻带最大损耗U(k=2)
            minLossUrel: '', //	通带最小损耗U(k=2)
          })
          break
        case '1dB压缩点输出功率电平':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '11', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S21', //	类型
            displayFormat: '相位', //	显示格式
            ifBandwidth: '1', //	中频带宽
            ifBandwidthUnit: 'kHz', //	中频带宽单位
            outputPower: undefined, //	输出功率
            outputPowerUnit: 'dBm', //	输出功率单位
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            testNumber: '10', //	测试次数
            urel: '', // U(k=2)
          })
          break
        case '输出功率、功率平坦度':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '12', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            inputPower: undefined, //	输入功率
            inputPowerUnit: 'dBm', //	输入功率单位
            testNumber: '10', //	测试次数
            urel: '', // 输出功率U(k=2)
            flatnessUrel: '', // 输出功率平坦度U(k=2)
          })
          break
        case '杂散抑制':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '13', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            fundamentalFrequency: undefined, //	基波频率
            fundamentalFrequencyUnit: 'kHz', //	基波频率单位
            spectrumLevel: undefined, //	参考电平
            spectrumLevelUnit: 'dBm', //	参考电平单位
            intermediateFrequency: undefined, //	中频频率
            intermediateFrequencyUnit: 'kHz', //	中频频率单位
            span: undefined, //	跨度
            resolutionBandwidth: undefined, //	分辨带宽
            resolutionBandwidthUnit: 'MHz', //	分辨带宽单位
            urel: '', // 输出功率U(k=2)
          })
          break
        case '谐波失真':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '14', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            fundamentalFrequency: undefined, //	基波频率
            fundamentalFrequencyUnit: 'Hz', //	基波频率单位
            fundamentalAmplitude: undefined, //	基波幅度
            fundamentalAmplitudeUnit: 'dBm', //	基波幅度单位
            inputPower: undefined, //	输入功率
            inputPowerUnit: 'dBm', //	输入功率单位
            harmonicNumber: '', // 谐波次数
            rbwValue: 1, //	RBW
            rbwValueUnit: 'kHz', //	RBW单位
            vbwValue: 1, //	VBW
            vbwValueUnit: 'kHz', //	VBW单位
            urel: '', // U(k=2)
          })
          break
        case '相位噪声':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '15', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            frequency: undefined, //	频率
            frequencyUnit: 'kHz', //	频率单位
            sidebandFrequency: undefined, //	边带频率
            sidebandFrequencyUnit: 'kHz', //	边带频率单位
            randomNoiseCorrectValue: undefined, //	随机噪声修正值
            randomNoiseCorrectValueUnit: 'dB', //	随机噪声修正值单位
            resolutionBandwidth: undefined, //	分辨带宽
            resolutionBandwidthUnit: 'kHz', //	分辨带宽单位
            urel: '', // U(k=2)
          })
          break
        case '电压驻波比(矢量网络分析仪)':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '1', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title.slice(0, 5), // 检定项目
            typeValue: 'S11', //	类型
            vsmr: '1.2', //	VSMR
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            standardValue: undefined, // 标准值
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndex: undefined, //	技术指标
            urel: undefined, // U(k=2)
          })
          break
        case '传输幅度':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '2', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S11', //	类型
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            amplitude: '20', //	幅度
            amplitudeUnit: 'dB', //	幅度单位
            standardValue: '', // 标准值
            standardValueUnit: 'dB', //	标准值单位
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndex: undefined, //	技术指标
            urel: undefined, // U(k=2)
          })
          break
        case '传输相移':
          list.push({
            id: `custom-${new Date().getTime()}`, //	id,更新/删除使用参数
            dataType: '3', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            typeValue: 'S11', //	类型
            frequency: undefined, //	频率
            frequencyUnit: 'MHz', //	频率单位
            standardValue: '', // 标准值
            standardValueUnit: '°', //	标准值单位
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndex: undefined, //	技术指标
            urel: undefined, // U(k=2)
          })
          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 '电压驻波比(微波器件)':
        vswrMicrowaveList.value = data
        break
      case '插入损耗':
        insertionLossList.value = data
        break
      case '隔离度':
        isolationDegreeList.value = data
        break
      case '增益、增益平坦度':
        gainFlatnessList.value = data
        break
      case '耦合度、方向性':
        couplingDirectionList.value = data
        break
      case '幅度一致性':
        amplitudeConsistencyList.value = data
        break
      case '相移':
        phaseShiftList.value = data
        break
      case '相位一致性':
        phaseConsistencyList.value = data
        break
      case '群时延':
        groupDelayList.value = data
        break
      case '滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)':
        filterCharacterList.value = data
        break
      case '1dB压缩点输出功率电平':
        pointOutputPowerLevelList.value = data
        break
      case '输出功率、功率平坦度':
        powerFlatnessList.value = data
        break
      case '杂散抑制':
        spuriousSuppressionList.value = data
        break
      case '谐波失真':
        harmonicDistortionList.value = data
        break
      case '相位噪声':
        phaseNoiseList.value = data
        break
      case '电压驻波比(矢量网络分析仪)':
        vswrNetList.value = data
        break
      case '传输幅度':
        transferAmplitudeList.value = data
        break
      case '传输相移':
        transferPhaseShiftList.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_vswrMicrowave.value
      break
    case '插入损耗':
      columns = columns_vswrMicrowave.value
      break
    case '隔离度':
      columns = columns_vswrMicrowave.value
      break
    case '增益、增益平坦度':
      columns = columns_gainFlatness.value
      break
    case '耦合度、方向性':
      columns = columns_couplingDirection.value
      break
    case '幅度一致性':
      columns = columns_vswrMicrowave.value
      break
    case '相移':
      columns = columns_vswrMicrowave.value
      break
    case '相位一致性':
      columns = columns_vswrMicrowave.value
      break
    case '群时延':
      columns = columns_vswrMicrowave.value
      break
    case '滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)':
      columns = columns_filterCharacter.value
      break
    case '1dB压缩点输出功率电平':
      columns = columns_pointOutputPowerLevel.value
      break
    case '输出功率、功率平坦度':
      columns = columns_powerFlatness.value
      break
    case '杂散抑制':
      columns = columns_spuriousSuppression.value
      break
    case '谐波失真':
      columns = columns_harmonicDistortion.value
      break
    case '相位噪声':
      columns = columns_phaseNoise.value
      break
    case '电压驻波比(矢量网络分析仪)':
      columns = columns_vswrNet.value
      break
    case '传输幅度':
      columns = columns_transferAmplitude.value
      break
    case '传输相移':
      columns = columns_transferPhaseShift.value
      break
  }

  return useCheckList(list, columns, `${title}表格`)
}
// 保存之前校验
const checkListBeforeSave = () => {
  if (props.itemCategoryName === '微波器件') {
    // 验空
    if (form.value.vswr && !vswrMicrowaveList.value.length) {
      ElMessage.warning('电压驻波比 不能为空')
      return false
    }
    if (form.value.insertionLoss && !insertionLossList.value.length) {
      ElMessage.warning('插入损耗 不能为空')
      return false
    }
    if (form.value.isolationDegree && !isolationDegreeList.value.length) {
      ElMessage.warning('隔离度 不能为空')
      return false
    }

    if (form.value.gainFlatness && !gainFlatnessList.value.length) {
      ElMessage.warning('增益、增益平坦度 不能为空')
      return false
    }

    if (form.value.couplingDirection && !couplingDirectionList.value.length) {
      ElMessage.warning('耦合度、方向性 不能为空')
      return false
    }

    if (form.value.amplitudeConsistency && !amplitudeConsistencyList.value.length) {
      ElMessage.warning('幅度一致性 不能为空')
      return false
    }

    if (form.value.phaseShift && !phaseShiftList.value.length) {
      ElMessage.warning('相移 不能为空')
      return false
    }

    if (form.value.phaseConsistency && !phaseConsistencyList.value.length) {
      ElMessage.warning('相位一致性 不能为空')
      return false
    }

    if (form.value.groupDelay && !groupDelayList.value.length) {
      ElMessage.warning('群时延 不能为空')
      return false
    }

    if (form.value.filterCharacter && !filterCharacterList.value.length) {
      ElMessage.warning('滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数) 不能为空')
      return false
    }

    if (form.value.pointOutputPowerLevel && !pointOutputPowerLevelList.value.length) {
      ElMessage.warning('1dB压缩点输出功率电平 不能为空')
      return false
    }

    if (form.value.powerFlatness && !powerFlatnessList.value.length) {
      ElMessage.warning('输出功率、功率平坦度 不能为空')
      return false
    }

    if (form.value.spuriousSuppression && !spuriousSuppressionList.value.length) {
      ElMessage.warning('杂散抑制 不能为空')
      return false
    }

    if (form.value.harmonicDistortion && !harmonicDistortionList.value.length) {
      ElMessage.warning('谐波失真 不能为空')
      return false
    }

    if (form.value.phaseNoise && !phaseNoiseList.value.length) {
      ElMessage.warning('相位噪声 不能为空')
      return false
    }
  }
  else if (props.itemCategoryName === '矢量网络分析仪') {
    // 验空
    if (form.value.vswr && !vswrNetList.value.length) {
      ElMessage.warning('电压驻波比 不能为空')
      return false
    }
    if (form.value.transferAmplitude && !transferAmplitudeList.value.length) {
      ElMessage.warning('传输幅度 不能为空')
      return false
    }
    if (form.value.transferPhaseShift && !transferPhaseShiftList.value.length) {
      ElMessage.warning('传输相移 不能为空')
      return false
    }
  }

  // 验数据
  let vswrResult = true //	电压驻波比
  let insertionLossResult = true // 插入损耗
  let isolationDegreeResult = true // 隔离度
  let gainFlatnessResult = true //	增益、增益平坦度
  let couplingDirectionResult = true //	耦合度、方向性
  let amplitudeConsistencyResult = true //	幅度一致性
  const phaseShiftResult = true //	相移
  let phaseConsistencyResult = true //	相位一致性
  let groupDelayResult = true //	群时延
  let filterCharacterResult = true //	滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)
  let pointOutputPowerLevelResult = true //	1dB压缩点输出功率电平
  let powerFlatnessResult = true //	输出功率、功率平坦度
  let spuriousSuppressionResult = true //	杂散抑制
  let harmonicDistortionResult = true //	谐波失真
  let phaseNoiseResult = true //	相位噪声

  let vswrResultNet = true //	电压驻波比
  let transferAmplitudeResult = true //	传输幅度
  let transferPhaseShiftResult = true //	传输相移
  if (props.itemCategoryName === '微波器件') {
    // 验空
    if (form.value.vswr) {
      vswrResult = checkList(vswrMicrowaveList.value, '电压驻波比(微波器件)')
    }
    if (form.value.insertionLoss) {
      insertionLossResult = checkList(insertionLossList.value, '插入损耗')
    }
    if (form.value.isolationDegree) {
      isolationDegreeResult = checkList(isolationDegreeList.value, '隔离度')
    }

    if (form.value.gainFlatness) {
      gainFlatnessResult = checkList(gainFlatnessList.value, '增益、增益平坦度')
    }

    if (form.value.couplingDirection) {
      couplingDirectionResult = checkList(couplingDirectionList.value, '耦合度、方向性')
    }

    if (form.value.amplitudeConsistency) {
      amplitudeConsistencyResult = checkList(amplitudeConsistencyList.value, '幅度一致性')
    }

    if (form.value.phaseShift && !phaseShiftList.value.length) {
      amplitudeConsistencyResult = checkList(amplitudeConsistencyList.value, '相移')
    }

    if (form.value.phaseConsistency) {
      phaseConsistencyResult = checkList(phaseConsistencyList.value, '相位一致性')
    }

    if (form.value.groupDelay) {
      groupDelayResult = checkList(groupDelayList.value, '群时延')
    }

    if (form.value.filterCharacter) {
      filterCharacterResult = checkList(filterCharacterList.value, '滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)')
    }

    if (form.value.pointOutputPowerLevel) {
      pointOutputPowerLevelResult = checkList(pointOutputPowerLevelList.value, '1dB压缩点输出功率电平')
    }

    if (form.value.powerFlatness) {
      powerFlatnessResult = checkList(powerFlatnessList.value, '输出功率、功率平坦度')
    }

    if (form.value.spuriousSuppression) {
      spuriousSuppressionResult = checkList(spuriousSuppressionList.value, '杂散抑制')
    }

    if (form.value.harmonicDistortion) {
      harmonicDistortionResult = checkList(harmonicDistortionList.value, '谐波失真')
    }

    if (form.value.phaseNoise) {
      phaseNoiseResult = checkList(phaseNoiseList.value, '相位噪声')
    }

    if (vswrResult
        && insertionLossResult
        && isolationDegreeResult
        && gainFlatnessResult
        && couplingDirectionResult
        && amplitudeConsistencyResult
        && phaseShiftResult
        && phaseConsistencyResult
        && groupDelayResult
        && filterCharacterResult
        && pointOutputPowerLevelResult
        && powerFlatnessResult
        && spuriousSuppressionResult
        && harmonicDistortionResult
        && phaseNoiseResult
    ) {
      return true
    }
    else {
      return false
    }
  }
  else if (props.itemCategoryName === '矢量网络分析仪') {
    // 验空
    if (form.value.vswr) {
      vswrResultNet = checkList(vswrNetList.value, '电压驻波比(矢量网络分析仪)')
    }
    if (form.value.transferAmplitude) {
      transferAmplitudeResult = checkList(transferAmplitudeList.value, '传输幅度')
    }
    if (form.value.transferPhaseShift && !transferPhaseShiftList.value.length) {
      transferPhaseShiftResult = checkList(transferPhaseShiftList.value, '传输相移')
    }
    if (vswrResultNet && transferAmplitudeResult && transferPhaseShiftResult) {
      return true
    }
    else {
      return false
    }
  }
}

// 保存之前处理数据
const solveDataBeforeSave = () => {
  // 数据处理
  let tempList = [] as any
  if (props.itemCategoryName === '微波器件') {
    if (form.value.vswr) { //	电压驻波比
      tempList = tempList.concat(vswrMicrowaveList.value)
    }
    if (form.value.insertionLoss) { // 插入损耗
      tempList = tempList.concat(insertionLossList.value)
    }
    if (form.value.isolationDegree) { // 隔离度
      tempList = tempList.concat(isolationDegreeList.value)
    }
    if (form.value.gainFlatness) { // 增益、增益平坦度
      gainFlatnessList.value = gainFlatnessList.value.map((item) => {
        return {
          ...item,
          flatnessUrel: gainFlatnessList.value[0].flatnessUrel,
        }
      })
      tempList = tempList.concat(gainFlatnessList.value)
    }
    if (form.value.couplingDirection) { // 耦合度、方向性
      tempList = tempList.concat(couplingDirectionList.value)
    }
    if (form.value.amplitudeConsistency) { // 幅度一致性
      tempList = tempList.concat(amplitudeConsistencyList.value)
    }
    if (form.value.phaseShift) { // 相移
      tempList = tempList.concat(phaseShiftList.value)
    }
    if (form.value.phaseConsistency) { // 相位一致性
      tempList = tempList.concat(phaseConsistencyList.value)
    }
    if (form.value.groupDelay) { // 群时延
      tempList = tempList.concat(groupDelayList.value)
    }
    if (form.value.filterCharacter) { // 滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)
      tempList = tempList.concat(filterCharacterList.value)
    }
    if (form.value.pointOutputPowerLevel) { // 1dB压缩点输出功率电平
      tempList = tempList.concat(pointOutputPowerLevelList.value)
    }
    if (form.value.powerFlatness) { // 输出功率、功率平坦度
      tempList = tempList.concat(powerFlatnessList.value)
    }
    if (form.value.spuriousSuppression) { // 杂散抑制
      tempList = tempList.concat(spuriousSuppressionList.value)
    }
    if (form.value.harmonicDistortion) { // 谐波失真
      tempList = tempList.concat(harmonicDistortionList.value)
    }
    if (form.value.phaseNoise) { // 相位噪声
      tempList = tempList.concat(phaseNoiseList.value)
    }
  }
  else if (props.itemCategoryName === '矢量网络分析仪') {
    if (form.value.vswr) { //	电压驻波比
      tempList = tempList.concat(vswrNetList.value)
    }
    if (form.value.transferAmplitude) { //	传输幅度
      tempList = tempList.concat(transferAmplitudeList.value)
    }
    if (form.value.transferPhaseShift) { //	传输相移
      tempList = tempList.concat(transferPhaseShiftList.value)
    }
  }

  tempList = tempList.map((item: { id: string }) => {
    return {
      ...item,
      id: '',
    }
  })
  return tempList
}
// ------------------------------------------------------------------------------------------------

watch(() => props.list, (newVal) => { // 检定项表格
  if (newVal && newVal.length) {
    if (props.itemCategoryName === '微波器件') {
      vswrMicrowaveList.value = newVal.filter((item: any) => `${item.dataType}` === '1').map((item: any) => { item.params = '电压驻波比'; return item })
      insertionLossList.value = newVal.filter((item: any) => `${item.dataType}` === '2').map((item: any) => { item.params = '插入损耗'; return item })
      isolationDegreeList.value = newVal.filter((item: any) => `${item.dataType}` === '3').map((item: any) => { item.params = '隔离度'; return item })
      gainFlatnessList.value = newVal.filter((item: any) => `${item.dataType}` === '4').map((item: any) => { item.params = '增益、增益平坦度'; return item })
      couplingDirectionList.value = newVal.filter((item: any) => `${item.dataType}` === '5').map((item: any) => { item.params = '耦合度、方向性'; return item })
      amplitudeConsistencyList.value = newVal.filter((item: any) => `${item.dataType}` === '6').map((item: any) => { item.params = '幅度一致性'; return item })
      phaseShiftList.value = newVal.filter((item: any) => `${item.dataType}` === '7').map((item: any) => { item.params = '相移'; return item })
      phaseConsistencyList.value = newVal.filter((item: any) => `${item.dataType}` === '8').map((item: any) => { item.params = '相位一致性'; return item })
      groupDelayList.value = newVal.filter((item: any) => `${item.dataType}` === '9').map((item: any) => { item.params = '群时延'; return item })
      filterCharacterList.value = newVal.filter((item: any) => `${item.dataType}` === '10').map((item: any) => { item.params = '滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)'; return item })
      pointOutputPowerLevelList.value = newVal.filter((item: any) => `${item.dataType}` === '11').map((item: any) => { item.params = '1dB压缩点输出功率电平'; return item })
      powerFlatnessList.value = newVal.filter((item: any) => `${item.dataType}` === '12').map((item: any) => { item.params = '输出功率、功率平坦度'; return item })
      spuriousSuppressionList.value = newVal.filter((item: any) => `${item.dataType}` === '13').map((item: any) => { item.params = '杂散抑制'; return item })
      harmonicDistortionList.value = newVal.filter((item: any) => `${item.dataType}` === '14').map((item: any) => { item.params = '谐波失真'; return item })
      phaseNoiseList.value = newVal.filter((item: any) => `${item.dataType}` === '15').map((item: any) => { item.params = '相位噪声'; return item })
    }
    else if (props.itemCategoryName === '矢量网络分析仪') {
      vswrNetList.value = newVal.filter((item: any) => `${item.dataType}` === '1').map((item: any) => { item.params = '电压驻波比'; return item })
      transferAmplitudeList.value = newVal.filter((item: any) => `${item.dataType}` === '2').map((item: any) => { item.params = '传输幅度'; return item })
      transferPhaseShiftList.value = newVal.filter((item: any) => `${item.dataType}` === '3').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
  console.log('====5555======', isFirstConfig)

  if (newValue && Object.keys(newValue).length && updataOld !== 'true' && isFirstConfig !== 'true') {
    form.value.appearanceFunctionCheck = `${newValue.appearanceFunctionCheck}` === '' ? 1 : newValue.appearanceFunctionCheck // 外观及功能性检查
    form.value.vswr = `${newValue.vswr}` === '' ? 1 : newValue.vswr //	电压驻波比
    form.value.insertionLoss = `${newValue.insertionLoss}` === '' ? 1 : newValue.insertionLoss // 插入损耗
    form.value.isolationDegree = `${newValue.isolationDegree}` === '' ? 1 : newValue.isolationDegree // 隔离度
    form.value.gainFlatness = `${newValue.gainFlatness}` === '' ? 1 : newValue.gainFlatness //	增益、增益平坦度
    form.value.couplingDirection = `${newValue.couplingDirection}` === '' ? 1 : newValue.couplingDirection //	耦合度、方向性
    form.value.amplitudeConsistency = `${newValue.amplitudeConsistency}` === '' ? 1 : newValue.amplitudeConsistency //	幅度一致性
    form.value.phaseShift = `${newValue.phaseShift}` === '' ? 1 : newValue.phaseShift //	相移
    form.value.phaseConsistency = `${newValue.phaseConsistency}` === '' ? 1 : newValue.phaseConsistency //	相位一致性
    form.value.groupDelay = `${newValue.groupDelay}` === '' ? 1 : newValue.groupDelay //	群时延
    form.value.filterCharacter = `${newValue.filterCharacter}` === '' ? 1 : newValue.filterCharacter //	滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)
    form.value.pointOutputPowerLevel = `${newValue.pointOutputPowerLevel}` === '' ? 1 : newValue.pointOutputPowerLevel //	1dB压缩点输出功率电平
    form.value.powerFlatness = `${newValue.powerFlatness}` === '' ? 1 : newValue.powerFlatness //	输出功率、功率平坦度
    form.value.spuriousSuppression = `${newValue.spuriousSuppression}` === '' ? 1 : newValue.spuriousSuppression //	杂散抑制
    form.value.harmonicDistortion = `${newValue.harmonicDistortion}` === '' ? 1 : newValue.harmonicDistortion //	谐波失真
    form.value.phaseNoise = `${newValue.phaseNoise}` === '' ? 1 : newValue.phaseNoise //	相位噪声
    form.value.transferAmplitude = `${newValue.transferAmplitude}` === '' ? 1 : newValue.transferAmplitude //	传输幅度
  }
}, { deep: true, immediate: true })

defineExpose({ checkListBeforeSave, solveDataBeforeSave, form })
</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 v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.vswr" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        电压驻波比
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.vswr" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(vswrMicrowaveList, '电压驻波比(微波器件)')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(vswrMicrowaveCheckoutList, vswrMicrowaveList, '电压驻波比(微波器件)')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.vswr" type="电压驻波比(微波器件)" :data="vswrMicrowaveList" :columns="columns_vswrMicrowave" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '电压驻波比(微波器件)')" />
  </detail-block>

  <!-- 插入损耗 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.insertionLoss" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        插入损耗
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.insertionLoss" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(insertionLossList, '插入损耗')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(insertionLossCheckoutList, insertionLossList, '插入损耗')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.insertionLoss" type="插入损耗" :data="insertionLossList" :columns="columns_vswrMicrowave" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '插入损耗')" />
  </detail-block>

  <!-- 隔离度 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.isolationDegree" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        隔离度
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.isolationDegree" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(isolationDegreeList, '隔离度')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(isolationDegreeCheckoutList, isolationDegreeList, '隔离度')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.isolationDegree" type="隔离度" :data="isolationDegreeList" :columns="columns_vswrMicrowave" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '隔离度')" />
  </detail-block>

  <!-- 增益、增益平坦度 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.gainFlatness" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        增益、增益平坦度
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.gainFlatness" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(gainFlatnessList, '增益、增益平坦度')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(gainFlatnessCheckoutList, gainFlatnessList, '增益、增益平坦度')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.gainFlatness" type="增益、增益平坦度" :data="gainFlatnessList" :columns="columns_gainFlatness" :page-type="pageType" :need-merge-cells="['flatnessUrel']" @selection-change="(e: any) => handleSelectionChange(e, '增益、增益平坦度')" />
  </detail-block>

  <!-- 耦合度、方向性 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.couplingDirection" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        耦合度、方向性
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.couplingDirection" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(couplingDirectionList, '耦合度、方向性')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(couplingDirectionCheckoutList, couplingDirectionList, '耦合度、方向性')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.couplingDirection" type="耦合度、方向性" :data="couplingDirectionList" :columns="columns_couplingDirection" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '耦合度、方向性')" />
  </detail-block>

  <!-- 幅度一致性 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.amplitudeConsistency" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        幅度一致性
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.amplitudeConsistency" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(amplitudeConsistencyList, '幅度一致性')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(amplitudeConsistencyCheckoutList, amplitudeConsistencyList, '幅度一致性')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.amplitudeConsistency" type="幅度一致性" :data="amplitudeConsistencyList" :columns="columns_gainFlatness" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '幅度一致性')" />
  </detail-block>

  <!-- 相移 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.phaseShift" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        相移
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.phaseShift" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(phaseShiftList, '相移')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(phaseShiftCheckoutList, phaseShiftList, '相移')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.phaseShift" type="相移" :data="phaseShiftList" :columns="columns_vswrMicrowave" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '相移')" />
  </detail-block>

  <!-- 相位一致性 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.phaseConsistency" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        相位一致性
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.phaseConsistency" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(phaseConsistencyList, '相位一致性')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(phaseConsistencyCheckoutList, phaseConsistencyList, '相位一致性')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.phaseConsistency" type="相位一致性" :data="phaseConsistencyList" :columns="columns_vswrMicrowave" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '相位一致性')" />
  </detail-block>

  <!-- 群时延 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.groupDelay" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        群时延
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.groupDelay" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(groupDelayList, '群时延')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(groupDelayCheckoutList, groupDelayList, '群时延')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.groupDelay" type="群时延" :data="groupDelayList" :columns="columns_vswrMicrowave" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '群时延')" />
  </detail-block>

  <!-- 滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数) -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.filterCharacter" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.filterCharacter" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(filterCharacterList, '滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(filterCharacterCheckoutList, filterCharacterList, '滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.filterCharacter" type="滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)" :data="filterCharacterList" :columns="columns_filterCharacter" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '滤波器特性(3dB截止频率、通带宽度、通带频响、通带插损、阻带衰减及矩形系数)')" />
  </detail-block>

  <!-- 1dB压缩点输出功率电平 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.pointOutputPowerLevel" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        1dB压缩点输出功率电平
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.pointOutputPowerLevel" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(pointOutputPowerLevelList, '1dB压缩点输出功率电平')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(pointOutputPowerLevelCheckoutList, pointOutputPowerLevelList, '1dB压缩点输出功率电平')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.pointOutputPowerLevel" type="1dB压缩点输出功率电平" :data="pointOutputPowerLevelList" :columns="columns_pointOutputPowerLevel" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '1dB压缩点输出功率电平')" />
  </detail-block>

  <!-- 输出功率、功率平坦度 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.powerFlatness" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        输出功率、功率平坦度
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.powerFlatness" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(powerFlatnessList, '输出功率、功率平坦度')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(powerFlatnessCheckoutList, powerFlatnessList, '输出功率、功率平坦度')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.powerFlatness" type="输出功率、功率平坦度" :data="powerFlatnessList" :columns="columns_powerFlatness" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '输出功率、功率平坦度')" />
  </detail-block>

  <!-- 杂散抑制 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.spuriousSuppression" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        杂散抑制
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.spuriousSuppression" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(spuriousSuppressionList, '杂散抑制')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(spuriousSuppressionCheckoutList, spuriousSuppressionList, '杂散抑制')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.spuriousSuppression" type="杂散抑制" :data="spuriousSuppressionList" :columns="columns_spuriousSuppression" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '杂散抑制')" />
  </detail-block>

  <!-- 谐波失真 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.harmonicDistortion" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        谐波失真
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.harmonicDistortion" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(harmonicDistortionList, '谐波失真')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(harmonicDistortionCheckoutList, harmonicDistortionList, '谐波失真')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.harmonicDistortion" type="谐波失真" :data="harmonicDistortionList" :columns="columns_harmonicDistortion" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '谐波失真')" />
  </detail-block>

  <!-- 相位噪声 -->
  <detail-block v-if="props.itemCategoryName === '微波器件'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.phaseNoise" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        相位噪声
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.phaseNoise" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(phaseNoiseList, '相位噪声')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(phaseNoiseCheckoutList, phaseNoiseList, '相位噪声')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.phaseNoise" type="相位噪声" :data="phaseNoiseList" :columns="columns_phaseNoise" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '相位噪声')" />
  </detail-block>

  <!-- 电压驻波比(矢量网络分析仪) -->
  <detail-block v-if="props.itemCategoryName === '矢量网络分析仪'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.vswr" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        电压驻波比(矢量网络分析仪)
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.vswr" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(vswrNetList, '电压驻波比(矢量网络分析仪)')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(vswrNetCheckoutList, vswrNetList, '电压驻波比(矢量网络分析仪)')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.vswr" type="电压驻波比(矢量网络分析仪)" :data="vswrNetList" :columns="columns_vswrNet" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '电压驻波比(矢量网络分析仪)')" />
  </detail-block>

  <!-- 传输幅度 -->
  <detail-block v-if="props.itemCategoryName === '矢量网络分析仪'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.transferAmplitude" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        传输幅度
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.transferAmplitude" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(transferAmplitudeList, '传输幅度')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(transferAmplitudeCheckoutList, transferAmplitudeList, '传输幅度')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.transferAmplitude" type="传输幅度" :data="transferAmplitudeList" :columns="columns_transferAmplitude" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '传输幅度')" />
  </detail-block>

  <!-- 传输相移 -->
  <detail-block v-if="props.itemCategoryName === '矢量网络分析仪'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.transferPhaseShift" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        传输相移
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.transferPhaseShift" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(transferPhaseShiftList, '传输相移')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(transferPhaseShiftCheckoutList, transferPhaseShiftList, '传输相移')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.transferPhaseShift" type="传输相移" :data="transferPhaseShiftList" :columns="columns_transferPhaseShift" :page-type="pageType" @selection-change="(e: any) => handleSelectionChange(e, '传输相移')" />
  </detail-block>
</template>