Newer
Older
xc-business-system / src / views / business / measure / item / components / thirteenth / templateDetail.vue
<!-- 第13套:示波器检定装置装置 -->
<script lang="ts" setup name="TemplateDetailNinth">
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 { deepCopy } from '@/utils/deepCopy'
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({
  methodType: '方法一', // 时基的方法
  appearanceFunctionCheck: 1, // 外观及功能性检查
  timeBase: 1, //	时基(示波器-数字)
  scanTimeCoefficient: 1, // 扫描时间系数及扩展(示波器-模拟)
  bandWidth: 1, // 频带宽度(示波器-数字/模拟)
  calibratingSignal: 1, //	校准信号(示波器-数字/模拟)
  currentBias: 1, //	直流偏置(示波器-数字)
  currentGain: 1, //	直流增益(示波器-数字)
  inputResistance: 1, //	输入电阻(示波器-数字/模拟)
  riseTime: 1, //	上升时间(示波器-数字/模拟)
  triggerCharacter: 1, //	触发特性(示波器-模拟)
  triggerSensitivity: 1, //	触发灵敏度(示波器-数字)
  verticalAmplitude: 1, // 垂直幅度(示波器-模拟)
})

const tableLoading = ref(false)
const timeBaseList = ref<IList[]>([]) // 时基
const zeroFrequencyGainList = ref<IList[]>([]) // 直流增益
const DCBiasList = ref<IList[]>([]) // 直流偏置
const frequencyBandwidthList = ref<IList[]>([]) // 频带宽度(数字示波器)
const triggerSensitivityList = ref<IList[]>([]) // 触发灵敏度
const risetimeList = ref<IList[]>([]) // 上升时间(数字示波器)
const inputResistanceList = ref<IList[]>([]) // 输入电阻(数字示波器)
const calibratingSignalList = ref<IList[]>([]) // 校准信号(数字示波器)
const scanningTimeList = ref<IList[]>([]) // 扫描时间系数及扩展
const verticalSizeList = ref<IList[]>([]) // 垂直幅度
const frequencyBandwidthSimulateList = ref<IList[]>([]) // 频带宽度(模拟示波器)
const triggerCharacteristicList = ref<IList[]>([]) // 触发特性
const inputResistanceSimulateList = ref<IList[]>([]) // 输入电阻(模拟示波器)
const risetimeSimulateList = ref<IList[]>([]) // 上升时间(模拟示波器)
const calibratingSignalSimulateList = ref<IList[]>([]) // 校准信号(模拟示波器)

const timeBaseCheckoutList = ref<IList[]>([]) // 时基多选
const zeroFrequencyGainCheckoutList = ref<IList[]>([]) // 直流增益多选
const DCBiasCheckoutList = ref<IList[]>([]) // 直流偏置多选
const frequencyBandwidthCheckoutList = ref<IList[]>([]) // 频带宽度(数字示波器)多选
const triggerSensitivityCheckoutList = ref<IList[]>([]) // 触发灵敏度多选
const risetimeCheckoutList = ref<IList[]>([]) // 上升时间(数字示波器)多选
const inputResistanceCheckoutList = ref<IList[]>([]) // 输入电阻(数字示波器)多选
const calibratingSignalCheckoutList = ref<IList[]>([]) // 校准信号(数字示波器)多选
const scanningTimeCheckoutList = ref<IList[]>([]) // 扫描时间系数及扩展多选
const verticalSizeCheckoutList = ref<IList[]>([]) // 垂直幅度多选
const frequencyBandwidthSimulateCheckoutList = ref<IList[]>([]) // 频带宽度(模拟示波器)多选
const triggerCharacteristicCheckoutList = ref<IList[]>([]) // 触发特性多选
const inputResistanceSimulateCheckoutList = ref<IList[]>([]) // 输入电阻(模拟示波器)
const risetimeSimulateCheckoutList = ref<IList[]>([]) // 上升时间(模拟示波器)
const calibratingSignalSimulateCheckoutList = ref<IList[]>([]) // 校准信号(模拟示波器)

// ----------------------------------------表头------------------------------------------------
const columns_time_base_method1 = ref<TableColumn[]>([ // 时基 --方法一
  { text: '检定项目', value: 'params', align: 'center', required: true, width: 90 },
  { text: '周期时标信号', value: 'cycleSignal', align: 'center', required: true },
  { text: '周期时标信号单位', value: 'cycleSignalUnit', align: 'center', required: true },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: 300 },
])

const columns_time_base_method2 = ref<TableColumn[]>([ // 时基 --方法二
  { text: '检定项目', value: 'params', align: 'center', required: true, width: 90 },
  { text: '参考输出', value: 'cycleSignal', align: 'center', required: true },
  { text: '参考输出单位', value: 'cycleSignalUnit', align: 'center', required: true },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: 300 },
])

const columns_zero_frequency_gain = ref<TableColumn[]>([ // 直流增益
  { text: '检定项目', value: 'params', align: 'center', required: true, width: 90 },
  { text: '阻抗', value: 'impedance', align: 'center', required: true, width: 180 },
  { text: '阻抗单位', value: 'impedanceUnit', align: 'center', required: true, width: 90 },
  { text: '通道', value: 'thoroughfare', align: 'center', required: true, width: 100 },
  { text: '垂直偏转系数(/div)', value: 'verticalDeflectCoefficient', align: 'center', required: true, width: 180 },
  { text: '垂直偏转系数(/div)单位', value: 'verticalDeflectCoefficientUnit', 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: 340 },
])

const columns_frequency_bandwidth = ref<TableColumn[]>([ // 频带宽度
  { text: '检定项目', value: 'params', align: 'center', required: true, width: 90 },
  { text: '阻抗', value: 'impedance', align: 'center', required: true, width: 180 },
  { text: '阻抗单位', value: 'impedanceUnit', align: 'center', required: true, width: 90 },
  { text: '通道', value: 'thoroughfare', align: 'center', required: true, width: 100 },
  { text: '垂直偏转系数(/div)', value: 'verticalDeflectCoefficient', align: 'center', required: true, width: 180 },
  { text: '垂直偏转系数(/div)单位', value: 'verticalDeflectCoefficientUnit', align: 'center', required: true, width: 100 },
  { text: '水平偏转系数', value: 'horizontalDeflectCoefficient', align: 'center', required: true, width: 180 },
  { text: '水平偏转系数单位', value: 'horizontalDeflectCoefficientUnit', align: 'center', required: true, width: 100 },
  { text: '参考点频率', value: 'referencePointFrequency', align: 'center', required: true, width: 180 },
  { text: '参考点频率单位', value: 'referencePointFrequencyUnit', align: 'center', required: true, width: 100 },
  { text: '频带宽度', value: 'bandWidth', align: 'center', required: true, width: 180 },
  { text: '频带宽度单位', value: 'bandWidthUnit', align: 'center', required: true, width: 100 },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: 300 },
])

const columns_trigger_sensitivity = ref<TableColumn[]>([ // 触发灵敏度
  { text: '检定项目', value: 'params', align: 'center', required: true, width: 110 },
  { text: '通道', value: 'thoroughfare', align: 'center', required: true, width: 100 },
  { text: '触发类型', value: 'triggerType', align: 'center', required: true, width: 120 },
  { text: '信号频率', value: 'signalFrequency', align: 'center', required: true, width: 180 },
  { text: '信号频率单位', value: 'signalFrequencyUnit', align: 'center', required: true, width: 100 },
  { text: '垂直偏转系数(/div)', value: 'verticalDeflectCoefficient', align: 'center', required: true, width: 180 },
  { text: '垂直偏转系数(/div)单位', value: 'verticalDeflectCoefficientUnit', align: 'center', required: true, width: 100 },
  { text: '标称值', value: 'nominalValue', align: 'center', required: true, width: 180 },
  { text: '标称值单位', value: 'nominalValueUnit', align: 'center', required: true, width: 100 },
])

const columns_risetime = ref<TableColumn[]>([ // 上升时间(数字示波器)
  { text: '检定项目', value: 'params', align: 'center', required: true, width: 90 },
  { text: '阻抗', value: 'impedance', align: 'center', required: true, width: 180 },
  { text: '阻抗单位', value: 'impedanceUnit', align: 'center', required: true, width: 100 },
  { text: '通道', value: 'thoroughfare', align: 'center', required: true, width: 100 },
  { text: '垂直偏转系数(/div)', value: 'verticalDeflectCoefficient', align: 'center', required: true, width: 180 },
  { text: '垂直偏转系数(/div)单位', value: 'verticalDeflectCoefficientUnit', 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: 'horizontalDeflectCoefficient', align: 'center', required: true, width: 180 },
  { text: '水平偏转系数单位', value: 'horizontalDeflectCoefficientUnit', align: 'center', required: true, width: 100 },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: 340 },
])

const columns_input_resistance = ref<TableColumn[]>([ // 输入电阻(数字示波器)
  { text: '检定项目', value: 'params', align: 'center', required: true },
  { text: '通道', value: 'thoroughfare', align: 'center', required: true, width: 100 },
  { text: '标称值', value: 'nominalValue', align: 'center', required: true, width: 180 },
  { text: '标称值单位', value: 'nominalValueUnit', align: 'center', required: true, width: 100 },
  { text: '垂直偏转系数(/div)', value: 'verticalDeflectCoefficient', align: 'center', required: true, width: 180 },
  { text: '垂直偏转系数(/div)单位', value: 'verticalDeflectCoefficientUnit', align: 'center', required: true, width: 100 },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: 300 },
])

const columns_calibrating_signal = ref<TableColumn[]>([ // 校准信号(数字示波器)
  { text: '检定项目', value: 'params', align: 'center', required: true },
  { text: '项目', value: 'itemType', align: 'center', required: true, width: 100 },
  { text: '标称值', value: 'nominalValue', align: 'center', required: true, width: 180 },
  { text: '标称值单位', value: 'nominalValueUnit', align: 'center', required: true, width: 100 },
  { text: '低电平测量时垂直偏转档位', value: 'verticalDeflectionGear', align: 'center', required: true, width: 180 },
  { text: '低电平测量时垂直偏转档位单位', value: 'verticalDeflectionGearUnit', align: 'center', required: true, width: 100 },
])

const columns_scan_time = ref<TableColumn[]>([ // 扫描时间系数及扩展
  { text: '检定项目', value: 'params', align: 'center', required: true },
  { text: '扫描方式', value: 'scanType', align: 'center', required: true, width: '110' },
  { text: '阻抗', value: 'impedance', align: 'center', required: true, width: '180' },
  { text: '阻抗单位', value: 'impedanceUnit', align: 'center', required: true, width: '100' },
  { text: '垂直档位步进', value: 'verticalGearStep', align: 'center', required: true, width: '150' },
  { text: '水平刻度档位', value: 'horizontalScaleGear', align: 'center', required: true, width: '180' },
  { text: '水平刻度档位单位', value: 'horizontalScaleGearUnit', align: 'center', required: true, width: '100' },
  { text: '标称值', value: 'nominalValue', align: 'center', required: true, width: '180' },
  { text: '标称值单位', value: 'nominalValueUnit', align: 'center', required: true, width: '100' },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: '300' },
])

const columns_vertical_size = ref<TableColumn[]>([ // 垂直幅度
  { text: '检定项目', value: 'params', align: 'center', required: true },
  { text: '通道', value: 'thoroughfare', align: 'center', required: true, width: '100' },
  { text: '阻抗', value: 'impedance', align: 'center', required: true, width: '180' },
  { text: '阻抗单位', value: 'impedanceUnit', 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: 'verticalGearStep', align: 'center', required: true, width: '150' },
  { text: '垂直刻度档位', value: 'verticalScaleGear', align: 'center', required: true, width: '180' },
  { text: '垂直刻度档位单位', value: 'verticalScaleGearUnit', align: 'center', required: true, width: '100' },
  { text: '标称值', value: 'nominalValue', align: 'center', required: true, width: '180' },
  { text: '标称值单位', value: 'nominalValueUnit', align: 'center', required: true, width: '100' },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: '300' },
])

const columns_frequency_bandwidth_simulate = ref<TableColumn[]>([ // 频带宽度(模拟示波器)
  { text: '检定项目', value: 'params', align: 'center', required: true },
  { text: '通道', value: 'thoroughfare', align: 'center', required: true, width: 100 },
  { text: '阻抗', value: 'impedance', align: 'center', required: true, width: 180 },
  { text: '阻抗单位', value: 'impedanceUnit', align: 'center', required: true, width: 100 },
  { text: '基准频率', value: 'referenceFrequency', align: 'center', required: true, width: 180 },
  { text: '基准频率单位', value: 'referenceFrequencyUnit', align: 'center', required: true, width: 100 },
  { text: '步进频率', value: 'stepFrequency', align: 'center', required: true, width: 180 },
  { text: '步进频率单位', value: 'stepFrequencyUnit', align: 'center', required: true, width: 100 },
  { text: '垂直档位步进', value: 'verticalGearStep', align: 'center', required: true, width: 150 },
  { text: '垂直刻度档位', value: 'verticalScaleGear', align: 'center', required: true, width: 180 },
  { text: '垂直刻度档位单位', value: 'verticalScaleGearUnit', align: 'center', required: true, width: 100 },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: 340 },
])

const columns_trigger_characteristic = ref<TableColumn[]>([ // 触发特性
  { text: '检定项目', value: 'params', align: 'center', required: true },
  { text: '扫描方式', value: 'scanType', align: 'center', required: true, width: 120 },
  { text: '通道', value: 'thoroughfare', align: 'center', required: true, width: 100 },
  { text: '阻抗', value: 'impedance', align: 'center', required: true, width: 180 },
  { text: '阻抗单位', value: 'impedanceUnit', align: 'center', required: true, width: 100 },
  { text: '触发类型', value: 'triggerType', align: 'center', required: true, width: 120 },
  { text: '频率', value: 'frequency', align: 'center', required: true, width: 180 },
  { text: '频率单位', value: 'frequencyUnit', align: 'center', required: true, width: 100 },
  { text: '频率上限', value: 'frequencyUpper', align: 'center', required: true, width: 180 },
  { text: '频率上限单位', value: 'frequencyUpperUnit', 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: 'referenceAmplitude', align: 'center', required: true, width: 180 },
  { text: '基准幅度单位', value: 'referenceAmplitudeUnit', align: 'center', required: true, width: 100 },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: 340 },
])

const columns_input_resistance_simulate = ref<TableColumn[]>([ // 输入电阻(模拟示波器)
  { text: '检定项目', value: 'params', align: 'center', required: true },
  { text: '通道', value: 'thoroughfare', align: 'center', required: true },
  { text: '阻抗', value: 'impedance', align: 'center', required: true },
  { text: '阻抗单位', value: 'impedanceUnit', align: 'center', required: true },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: 300 },
])

const columns_risetime_simulate = ref<TableColumn[]>([ // 上升时间(模拟示波器)
  { text: '检定项目', value: 'params', align: 'center', required: true },
  { text: '通道', value: 'thoroughfare', align: 'center', required: true, width: '120' },
  { text: '阻抗', value: 'impedance', align: 'center', required: true, width: '180' },
  { text: '阻抗单位', value: 'impedanceUnit', align: 'center', required: true, width: '100' },
  { text: '垂直刻度档位', value: 'verticalScaleGear', align: 'center', required: true, width: '180' },
  { text: '垂直刻度档位单位', value: 'verticalScaleGearUnit', 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: 'horizontalScaleGear', align: 'center', required: true, width: '180' },
  { text: '水平刻度档位单位', value: 'horizontalScaleGearUnit', align: 'center', required: true, width: '100' },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: '340' },
])

const columns_calibrating_signal_simulate = ref<TableColumn[]>([ // 校准信号(模拟示波器)
  { text: '检定项目', value: 'params', align: 'center', required: true },
  { text: '信号类型', value: 'signalType', align: 'center', required: true, width: '140' },
  { text: '阻抗', value: 'impedance', align: 'center', required: true, width: '180' },
  { text: '阻抗单位', value: 'impedanceUnit', align: 'center', required: true, width: '100' },
  { text: '幅度标称值', value: 'nominalAmplitudeValue', align: 'center', required: true, width: '180' },
  { text: '幅度标称值单位', value: 'nominalAmplitudeValueUnit', align: 'center', required: true, width: '100' },
  { text: '频率标称值', value: 'nominalFrequencyValue', align: 'center', required: true, width: '180' },
  { text: '频率标称值单位', value: 'nominalFrequencyValueUnit', align: 'center', required: true, width: '100' },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: true, width: '340' },
])

// --------------------------------表格操作---------------------------------------------------
// 多选
const handleSelectionChange = (e: any, type: string) => {
  switch (type) {
    case '时基':
      timeBaseCheckoutList.value = e
      break
    case '直流增益':
      zeroFrequencyGainCheckoutList.value = e
      break
    case '直流偏置':
      DCBiasCheckoutList.value = e
      break
    case '频带宽度(数字示波器)':
      frequencyBandwidthCheckoutList.value = e
      break
    case '触发灵敏度':
      triggerSensitivityCheckoutList.value = e
      break
    case '上升时间(数字示波器)':
      risetimeCheckoutList.value = e
      break
    case '输入电阻(数字示波器)':
      inputResistanceCheckoutList.value = e
      break
    case '校准信号(数字示波器)':
      calibratingSignalCheckoutList.value = e
      break
    case '扫描时间系数及扩展':
      scanningTimeCheckoutList.value = e
      break
    case '垂直幅度':
      verticalSizeCheckoutList.value = e
      break
    case '频带宽度(模拟示波器)':
      frequencyBandwidthSimulateCheckoutList.value = e
      break
    case '触发特性':
      triggerCharacteristicCheckoutList.value = e
      break
    case '输入电阻(模拟示波器)':
      inputResistanceSimulateCheckoutList.value = e
      break
    case '上升时间(模拟示波器)':
      risetimeSimulateCheckoutList.value = e
      break
    case '校准信号(模拟示波器)':
      calibratingSignalSimulateCheckoutList.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] })
    }
    // 数字示波器
    else if (props.itemCategoryName === '数字示波器') {
      switch (title) {
        case '时基':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '1', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            cycleSignal: '', // 周期时标信号
            cycleSignalUnit: '', // 周期时标信号单位
            technicalIndex: '', // 技术指标
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: 'ppm', //	技术指标单位
          })
          break
        case '直流增益':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '2', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            impedance: '', //	阻抗
            impedanceUnit: 'Ω', //	阻抗单位
            thoroughfare: 'CH1', //	通道
            verticalDeflectCoefficient: '', //	垂直偏转系数
            verticalDeflectCoefficientUnit: 'V', //	垂直偏转系数单位
            standardValue: '', //	标准值
            standardValueUnit: 'V', //	标准值单位
            technicalIndex: '', // 技术指标
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: '%', //	技术指标单位
          })
          break
        case '直流偏置':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '3', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            impedance: '', //	阻抗
            impedanceUnit: 'Ω', //	阻抗单位
            thoroughfare: 'CH1', //	通道
            verticalDeflectCoefficient: '', //	垂直偏转系数
            verticalDeflectCoefficientUnit: 'V', //	垂直偏转系数单位
            standardValue: '', //	标准值
            standardValueUnit: 'V', //	标准值单位
            technicalIndex: '', // 技术指标
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: 'V', //	技术指标单位
          })
          break
        case '频带宽度':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '4', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            impedance: '', //	阻抗
            impedanceUnit: 'Ω', //	阻抗单位
            thoroughfare: 'CH1', //	通道
            verticalDeflectCoefficient: '', //	垂直偏转系数
            verticalDeflectCoefficientUnit: 'V', //	垂直偏转系数单位
            horizontalDeflectCoefficient: '', //	水平偏转系数
            horizontalDeflectCoefficientUnit: 'ns', //	水平偏转系数单位
            referencePointFrequency: '', //	参考点频率
            referencePointFrequencyUnit: 'Hz', //	参考点频率单位
            bandWidth: '', //	频带宽度
            bandWidthUnit: 'Hz', //	频带宽度单位
            technicalIndex: '', // 技术指标
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: 'dB', //	技术指标单位
          })
          break
        case '触发灵敏度':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '5', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            thoroughfare: 'CH1', //	通道
            triggerType: '内触发', // 触发类型
            signalFrequency: '', //	信号频率
            signalFrequencyUnit: 'MHz', //	信号频率单位
            verticalDeflectCoefficient: '', //	垂直偏转系数
            verticalDeflectCoefficientUnit: 'V', //	垂直偏转系数单位
            nominalValue: '', //	标称值
            nominalValueUnit: 'div', //	标称值单位
            technicalIndex: '', // 技术指标
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: 'dB', //	技术指标单位
          })
          break
        case '上升时间':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '6', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            impedance: '', // 阻抗,
            impedanceUnit: 'Ω', //	阻抗单位
            thoroughfare: 'CH1', //	通道
            verticalDeflectCoefficient: '', //	垂直偏转系数
            verticalDeflectCoefficientUnit: 'V', //	垂直偏转系数单位
            amplitude: '', //	幅度
            amplitudeUnit: 'V', //	幅度单位
            horizontalDeflectCoefficient: '', //	水平偏转系数单位
            horizontalDeflectCoefficientUnit: 'ns', //	水平偏转系数单位
            technicalIndex: '', // 技术指标
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: 'ns', //	技术指标单位
          })
          break
        case '输入电阻':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '7', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            thoroughfare: 'CH1', //	通道
            verticalDeflectCoefficient: '', //	垂直偏转系数
            verticalDeflectCoefficientUnit: 'V', //	垂直偏转系数单位
            standardValue: '', //	标准值
            technicalIndex: '', // 技术指标
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: '%', //	技术指标单位
          })
          break
        case '校准信号':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '8', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            itemType: '幅度', //	项目
            nominalValue: '', //	标称值
            nominalValueUnit: 'V', //	垂直标称值单位偏转系数单位
            verticalDeflectionGear: '', //	低电平测量时垂直偏转档位
            verticalDeflectionGearUnit: 'V', // 低电平测量时垂直偏转档位单位
          })
          break
      }
    }
    else if (props.itemCategoryName === '模拟示波器') {
      switch (title) {
        case '扫描时间系数及扩展':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '1', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            scanType: 'A扫描', // 扫描方式
            impedance: '50', // 阻抗
            impedanceUnit: 'Ω', // 阻抗单位
            verticalGearStep: '1-2-5', // 垂直档位步进
            horizontalScaleGear: '', // 水平刻度档位
            horizontalScaleGearUnit: 'ns', // 水平刻度档位单位
            nominalValue: '', // 标称值
            nominalValueUnit: 'ms', // 标称值单位
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: '%', //	技术指标单位
            technicalIndex: '', //	技术指标单位
          })
          break
        case '垂直幅度':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '2', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            thoroughfare: 'CH1', // 通道
            impedance: '75', // 阻抗
            impedanceUnit: 'Ω', // 阻抗单位
            frequency: '1', // 频率
            frequencyUnit: 'kHz', // 频率单位
            verticalGearStep: '1-2-5', // 垂直档位步进
            verticalScaleGear: '', // 垂直刻度档位
            verticalScaleGearUnit: 'mV', // 垂直刻度档位单位
            nominalValue: '', // 标称值
            nominalValueUnit: 'mV', // 标称值单位
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: '%', //	技术指标单位
            technicalIndex: '', //	技术指标
          })
          break
        case '频带宽度':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '3', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            thoroughfare: 'CH1', // 通道
            impedance: '50', // 阻抗
            impedanceUnit: 'Ω', // 阻抗单位
            referenceFrequency: '', // 基准频率
            referenceFrequencyUnit: 'Hz', // 基准频率单位
            stepFrequency: '', // 步进频率
            stepFrequencyUnit: 'kHz', // 步进频率单位
            verticalScaleGear: '', // 垂直刻度档位
            verticalScaleGearUnit: 'mV', // 垂直刻度档位单位
            verticalGearStep: '1-2-5', // 垂直档位步进
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: 'MHz', //	技术指标单位
            technicalIndex: '', //	技术指标
          })
          break
        case '触发特性':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '4', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            scanType: 'A扫描', // 扫描类型
            thoroughfare: 'CH1', // 通道
            impedance: '50', // 阻抗
            impedanceUnit: 'Ω', // 阻抗单位
            triggerType: '内触发', // 触发类型
            frequency: '', // 频率
            frequencyUnit: 'Hz', // 频率单位
            frequencyUpper: '', // 频率上限
            frequencyUpperUnit: 'Hz', // 频率上限单位
            amplitude: '', // 幅度
            amplitudeUnit: 'mV', // 幅度单位
            referenceAmplitude: '100', // 基准幅度
            referenceAmplitudeUnit: 'mV', // 基准幅度单位
            technicalIndexSymbol: '≤', //	技术指标前符号
            technicalIndexUnit: 'mV', //	技术指标单位
            technicalIndex: '', //	技术指标
          })
          break
        case '输入电阻':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '5', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            thoroughfare: 'CH1', // 通道
            impedance: '50', // 阻抗
            impedanceUnit: 'Ω', // 阻抗单位
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: '%', //	技术指标单位
            technicalIndex: '', //	技术指标
          })
          break
        case '上升时间':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '6', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            thoroughfare: 'CH1', // 通道
            impedance: '50', // 阻抗
            impedanceUnit: 'Ω', // 阻抗单位
            verticalScaleGear: '', // 垂直刻度档位
            verticalScaleGearUnit: 'mV', // 垂直刻度档位单位
            amplitude: '', // 幅度
            amplitudeUnit: 'mV', // 幅度单位
            horizontalScaleGear: '', // 水平刻度档位
            horizontalScaleGearUnit: 'ns', // 水平刻度档位单位
            technicalIndexSymbol: '<', //	技术指标前符号
            technicalIndexUnit: 'ns', //	技术指标单位
            technicalIndex: '', //	技术指标
          })
          break
        case '校准信号':
          list.push({
            id: '', //	id,更新/删除使用参数
            dataType: '7', //	检定项数据类型(一个检定项中区分两个表格)(字典code)
            itemId: props.itemId, //	检定项id
            params: title, // 检定项目
            signalType: '校准信号1', // 信号类型
            impedance: '50', // 阻抗
            impedanceUnit: 'Ω', // 阻抗单位
            nominalAmplitudeValue: '', // 幅度标称值
            nominalAmplitudeValueUnit: 'mV', // 幅度标称值单位
            nominalFrequencyValue: '', // 频率标称值
            nominalFrequencyValueUnit: 'kHz', // 频率标称值单位
            technicalIndexSymbol: '±', //	技术指标前符号
            technicalIndexUnit: '%', //	技术指标单位
            technicalIndex: '', //	技术指标
          })
          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)
    if (props.itemCategoryName === '数字示波器') {
      switch (title) {
        case '时基':
          timeBaseList.value = data
          break
        case '直流增益':
          zeroFrequencyGainList.value = data
          break
        case '直流偏置':
          DCBiasList.value = data
          break
        case '频带宽度':
          frequencyBandwidthList.value = data
          break
        case '触发灵敏度':
          triggerSensitivityList.value = data
          break
        case '上升时间':
          risetimeList.value = data
          break
        case '输入电阻':
          inputResistanceList.value = data
          break
        case '校准信号':
          calibratingSignalList.value = data
          break
      }
    }
    else if (props.itemCategoryName === '模拟示波器') {
      switch (title) {
        case '扫描时间系数及扩展':
          scanningTimeList.value = data
          break
        case '垂直幅度':
          verticalSizeList.value = data
          break
        case '频带宽度':
          frequencyBandwidthSimulateList.value = data
          break
        case '触发特性':
          triggerCharacteristicList.value = data
          break
        case '输入电阻':
          inputResistanceSimulateList.value = data
          break
        case '上升时间':
          risetimeSimulateList.value = data
          break
        case '校准信号':
          calibratingSignalSimulateList.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
  if (props.itemCategoryName === '数字示波器') {
    switch (title) {
      case '时基':
        columns = form.value.methodType === '方法一' ? columns_time_base_method1.value : columns_time_base_method2.value
        break
      case '直流增益':
        columns = columns_zero_frequency_gain.value
        break
      case '直流偏置':
        columns = columns_zero_frequency_gain.value
        break
      case '频带宽度':
        columns = columns_frequency_bandwidth.value
        break
      case '触发灵敏度':
        columns = columns_trigger_sensitivity.value
        break
      case '上升时间':
        columns = columns_risetime.value
        break
      case '输入电阻':
        columns = columns_input_resistance.value
        break
      case '校准信号':
        columns = columns_calibrating_signal.value
        break
    }
  }
  else if (props.itemCategoryName === '模拟示波器') {
    switch (title) {
      case '扫描时间系数及扩展':
        columns = columns_scan_time.value
        break
      case '垂直幅度':
        columns = columns_vertical_size.value
        break
      case '频带宽度':
        columns = columns_frequency_bandwidth_simulate.value
        break
      case '触发特性':
        columns = columns_trigger_characteristic.value
        break
      case '输入电阻':
        columns = columns_input_resistance_simulate.value
        break
      case '上升时间':
        columns = columns_risetime_simulate.value
        break
      case '校准信号':
        columns = columns_calibrating_signal_simulate.value
        break
    }
  }
  return useCheckList(list, columns, `${title}表格`)
}
// 保存之前校验
const checkListBeforeSave = () => {
  // 验空
  if (props.itemCategoryName === '数字示波器' && form.value.timeBase && !timeBaseList.value.length) { //	时基(示波器-数字)
    ElMessage.warning('时基 不能为空')
    return false
  }
  else if (props.itemCategoryName === '数字示波器' && form.value.currentGain && !zeroFrequencyGainList.value.length) { // 直流增益(示波器-数字)
    ElMessage.warning('直流增益 不能为空')
    return false
  }
  else if (props.itemCategoryName === '数字示波器' && form.value.currentBias && !DCBiasList.value.length) { // 直流偏置(示波器-数字)
    ElMessage.warning('直流偏置 不能为空')
    return false
  }
  else if (props.itemCategoryName === '模拟示波器' && form.value.scanTimeCoefficient && !scanningTimeList.value.length) { // 扫描时间系数及扩展(示波器-模拟)
    ElMessage.warning('扫描时间系数及扩展 不能为空')
    return false
  }
  else if (props.itemCategoryName === '模拟示波器' && form.value.verticalAmplitude && !verticalSizeList.value.length) { // 垂直幅度
    ElMessage.warning('垂直幅度 不能为空')
    return false
  }
  else if (form.value.bandWidth) { // 频带宽度(示波器-数字/模拟)
    if ((props.itemCategoryName === '数字示波器' && !frequencyBandwidthList.value.length) || (props.itemCategoryName === '模拟示波器' && !frequencyBandwidthSimulateList.value.length)) {
      ElMessage.warning('频带宽度 不能为空')
      return false
    }
  }
  else if (props.itemCategoryName === '模拟示波器' && form.value.triggerCharacter && !triggerCharacteristicList.value.length) { // 触发特性
    ElMessage.warning('触发特性 不能为空')
    return false
  }
  else if (props.itemCategoryName === '数字示波器' && form.value.triggerSensitivity && !triggerSensitivityList.value.length) { // 触发灵敏度
    ElMessage.warning('触发灵敏度 不能为空')
    return false
  }
  else if (form.value.riseTime) { // 上升时间(数字示波器)
    if ((props.itemCategoryName === '数字示波器' && !risetimeList.value.length) || (props.itemCategoryName === '模拟示波器' && !risetimeSimulateList.value.length)) {
      ElMessage.warning('上升时间 不能为空')
      return false
    }
  }
  else if (form.value.inputResistance) { // 输入电阻(数字示波器)
    if ((props.itemCategoryName === '数字示波器' && !inputResistanceList.value.length) && (props.itemCategoryName === '模拟示波器' && !inputResistanceSimulateList.value.length)) {
      ElMessage.warning('输入电阻 不能为空')
      return false
    }
  }
  else if (form.value.calibratingSignal) { // 校准信号(示波器-数字/模拟)
    if ((props.itemCategoryName === '数字示波器' && !calibratingSignalList.value.length) && (props.itemCategoryName === '模拟示波器' && !calibratingSignalSimulateList.value.length)) {
      ElMessage.warning('校准信号 不能为空')
      return false
    }
  }
  console.log('--------1111111')

  // 验数据
  let timeBaseResult = true // 时基
  let currentGainResult = true // 直流增益
  let currentBiasResult = true // 直流偏置
  let bandWidthResult = true // 频带宽度(示波器-数字/模拟)
  let triggerSensitivityResult = true //	触发灵敏度(示波器-数字)
  let riseTimeResult = true //	上升时间(示波器-数字/模拟)
  let inputResistanceResult = true //	输入电阻(示波器-数字/模拟)
  let calibratingSignalResult = true //	校准信号(示波器-数字/模拟)

  let scanTimeCoefficientResult = true // 扫描时间系数及扩展(示波器-模拟)
  let triggerCharacterResult = true //	触发特性(示波器-模拟)
  let verticalAmplitudeResult = true // 垂直幅度(示波器-模拟)
  if (props.itemCategoryName === '数字示波器') {
    if (form.value.timeBase) {
      timeBaseResult = checkList(timeBaseList.value, '时基')
    }
    else if (form.value.currentGain) {
      currentGainResult = checkList(zeroFrequencyGainList.value, '直流增益')
    }
    else if (form.value.currentBias) {
      currentBiasResult = checkList(DCBiasList.value, '直流偏置')
    }
    else if (form.value.bandWidth) {
      bandWidthResult = checkList(frequencyBandwidthList.value, '频带宽度')
    }
    else if (form.value.triggerSensitivity) {
      triggerSensitivityResult = checkList(triggerSensitivityList.value, '触发灵敏度')
    }
    else if (form.value.riseTime) {
      riseTimeResult = checkList(risetimeList.value, '上升时间')
    }
    else if (form.value.inputResistance) {
      inputResistanceResult = checkList(inputResistanceList.value, '输入电阻')
    }
    else if (form.value.calibratingSignal) {
      calibratingSignalResult = checkList(calibratingSignalList.value, '校准信号')
    }
    if (timeBaseResult && currentGainResult && currentBiasResult && bandWidthResult && triggerSensitivityResult && riseTimeResult && inputResistanceResult && calibratingSignalResult) {
      return true
    }
    else {
      return false
    }
  }

  if (props.itemCategoryName === '模拟示波器') {
    if (form.value.scanTimeCoefficient) {
      scanTimeCoefficientResult = checkList(scanningTimeList.value, '扫描时间系数及扩展')
    }
    else if (form.value.verticalAmplitude) {
      verticalAmplitudeResult = checkList(verticalSizeList.value, '垂直幅度')
    }
    else if (form.value.bandWidth) {
      bandWidthResult = checkList(frequencyBandwidthSimulateList.value, '频带宽度')
    }
    else if (form.value.triggerCharacter) {
      triggerCharacterResult = checkList(triggerCharacteristicList.value, '触发特性')
    }
    else if (form.value.inputResistance) {
      inputResistanceResult = checkList(inputResistanceSimulateList.value, '输入电阻')
    }
    else if (form.value.riseTime) {
      riseTimeResult = checkList(risetimeSimulateList.value, '上升时间')
    }
    else if (form.value.calibratingSignal) {
      calibratingSignalResult = checkList(calibratingSignalSimulateList.value, '校准信号')
    }
    if (scanTimeCoefficientResult && verticalAmplitudeResult && bandWidthResult && triggerCharacterResult && inputResistanceResult && riseTimeResult && calibratingSignalResult
    ) {
      return true
    }
    else {
      return false
    }
  }
}

// 保存之前处理数据
const solveDataBeforeSave = () => {
  // 数据处理
  let tempList = []
  timeBaseList.value = timeBaseList.value.map((item) => {
    return {
      ...item,
      methodType: form.value.methodType, // 方法
    }
  })
  if (form.value.timeBase) { //	时基(示波器-数字)
    tempList = tempList.concat(timeBaseList.value)
  }
  if (form.value.scanTimeCoefficient) { // 扫描时间系数及扩展(示波器-模拟)
    tempList = tempList.concat(scanningTimeList.value)
  }
  if (form.value.bandWidth) { // 频带宽度(示波器-数字/模拟)
    if (props.itemCategoryName === '数字示波器') {
      tempList = tempList.concat(frequencyBandwidthList.value)
    }
    if (props.itemCategoryName === '模拟示波器') {
      tempList = tempList.concat(frequencyBandwidthSimulateList.value)
    }
  }
  if (form.value.calibratingSignal) { // 校准信号(示波器-数字/模拟)
    if (props.itemCategoryName === '数字示波器') {
      tempList = tempList.concat(calibratingSignalList.value)
    }
    if (props.itemCategoryName === '模拟示波器') {
      tempList = tempList.concat(calibratingSignalSimulateList.value)
    }
  }
  if (form.value.currentBias) { // 直流偏置(示波器-数字)
    tempList = tempList.concat(DCBiasList.value)
  }
  if (form.value.currentGain) { // 直流增益(示波器-数字)
    tempList = tempList.concat(zeroFrequencyGainList.value)
  }
  if (form.value.triggerSensitivity) { // 触发灵敏度
    tempList = tempList.concat(triggerSensitivityList.value)
  }
  if (form.value.riseTime) { // 上升时间(数字示波器)
    if (props.itemCategoryName === '数字示波器') {
      tempList = tempList.concat(risetimeList.value)
    }
    if (props.itemCategoryName === '模拟示波器') {
      tempList = tempList.concat(risetimeSimulateList.value)
    }
  }
  if (form.value.inputResistance) { // 输入电阻(数字示波器)
    if (props.itemCategoryName === '数字示波器') {
      tempList = tempList.concat(inputResistanceList.value)
    }
    if (props.itemCategoryName === '模拟示波器') {
      tempList = tempList.concat(inputResistanceSimulateList.value)
    }
  }
  if (form.value.verticalAmplitude) { // 垂直幅度
    tempList = tempList.concat(verticalSizeList.value)
  }
  if (form.value.triggerCharacter) { // 触发特性
    tempList = tempList.concat(triggerCharacteristicList.value)
  }
  tempList = tempList.map((item) => {
    return {
      ...item,
      id: '',
    }
  })
  return tempList
}
// -----------------------------------------------------------------------------------------------------
// 校准信号项目变化
const changeItemType = (value: string, index: number) => {
  if (value === '频率') {
    calibratingSignalList.value[index].verticalDeflectionGear = '/'
    calibratingSignalList.value[index].verticalDeflectionGearUnit = '/'
  }
  else { // 幅度
    calibratingSignalList.value[index].verticalDeflectionGear = ''
    calibratingSignalList.value[index].verticalDeflectionGearUnit = 'V'
  }
}
// 垂直偏转系数变化
const changeVerticalDeflectCoefficient = (param: { value: string }, type: string) => {
  let num: any
  if (Object.prototype.toString.call(param) === '[object Object]') { // 对象
    num = param.value
  }
  else {
    num = param
  }
  console.log('垂直偏转系数变化值:', num, Number(calc(Number(num), 6, '*')))
  if (type === '直流增益(数字示波器)') {
    zeroFrequencyGainList.value = zeroFrequencyGainList.value.map((item) => {
      return {
        ...item,
        standardValue: Number(calc(Number(num), 6, '*')), // 标准值默认为垂直偏转系数*6
      }
    }) as any
  }
  else if (type === '上升时间(数字示波器)') {
    risetimeList.value = risetimeList.value.map((item) => {
      return {
        ...item,
        amplitude: Number(calc(Number(num), 5, '*')), // 幅度默认为垂直偏转系数*6
      }
    }) as any
  }
}
// el-input-number值变化
const changeInputNumber = (value: number, type: string) => {
  switch (type) {
    case '扫描时间系数及扩展':
      scanningTimeList.value = scanningTimeList.value.map((item) => {
        return {
          ...item,
          nominalValue: Number(item.horizontalScaleGear), // 标称值默认与水平刻度档位相同
        }
      }) as any
      break
    case '垂直幅度':
      verticalSizeList.value = verticalSizeList.value.map((item) => {
        return {
          ...item,
          nominalValue: calc(Number(item.verticalScaleGear), 6, '*'), // 标称值默认与水平刻度档位*6
        }
      }) as any
      break
    case '上升时间(模拟示波器)':
      risetimeSimulateList.value = risetimeSimulateList.value.map((item) => {
        return {
          ...item,
          amplitude: calc(Number(item.verticalScaleGear), 5, '*'), // 幅度默认与垂直刻度档位*5
        }
      }) as any
      break
  }
}
// -----------------------------------------------------------------------------------------------------
watch(() => props.list, (newVal) => { // 检定项表格
  if (newVal && newVal.length) {
    if (props.itemCategoryName === '数字示波器') {
      timeBaseList.value = newVal.filter(item => `${item.dataType}` === '1').map((item) => { item.params = '时基'; return item }) // 时基
      zeroFrequencyGainList.value = newVal.filter(item => `${item.dataType}` === '2').map((item) => { item.params = '直流增益'; return item }) // 直流增益
      DCBiasList.value = newVal.filter(item => `${item.dataType}` === '3').map((item) => { item.params = '直流偏置'; return item }) // 直流偏置
      frequencyBandwidthList.value = newVal.filter(item => `${item.dataType}` === '4').map((item) => { item.params = '频带宽度'; return item }) // 频带宽度(数字示波器)
      triggerSensitivityList.value = newVal.filter(item => `${item.dataType}` === '5').map((item) => { item.params = '触发灵敏度'; return item })// 触发灵敏度
      risetimeList.value = newVal.filter(item => `${item.dataType}` === '6').map((item) => { item.params = '上升时间'; return item })// 上升时间(数字示波器)
      inputResistanceList.value = newVal.filter(item => `${item.dataType}` === '7').map((item) => { item.params = '输入电阻'; return item })// 输入电阻(数字示波器)
      calibratingSignalList.value = newVal.filter(item => `${item.dataType}` === '8').map((item) => { item.params = '校准信号'; return item })// 校准信号(数字示波器)
      if (timeBaseList.value.length) {
        form.value.methodType = timeBaseList.value[0].methodType // 时基方法
      }
    }
    else if (props.itemCategoryName === '模拟示波器') {
      scanningTimeList.value = newVal.filter(item => `${item.dataType}` === '1').map((item) => { item.params = '扫描时间系数及扩展'; return item }) // 扫描时间系数及扩展
      verticalSizeList.value = newVal.filter(item => `${item.dataType}` === '2').map((item) => { item.params = '垂直幅度'; return item }) // 垂直幅度
      frequencyBandwidthSimulateList.value = newVal.filter(item => `${item.dataType}` === '3').map((item) => { item.params = '频带宽度'; return item }) // 频带宽度(模拟示波器
      triggerCharacteristicList.value = newVal.filter(item => `${item.dataType}` === '4').map((item) => { item.params = '触发特性'; return item }) // 触发特性
      inputResistanceSimulateList.value = newVal.filter(item => `${item.dataType}` === '5').map((item) => { item.params = '输入电阻'; return item })// 输入电阻
      risetimeSimulateList.value = newVal.filter(item => `${item.dataType}` === '6').map((item) => { item.params = '上升时间'; return item })// 上升时间(数字示波器)
      calibratingSignalSimulateList.value = newVal.filter(item => `${item.dataType}` === '7').map((item) => { item.params = '校准信号'; return item })// 校准信号(数字示波器)
    }
  }
})

watch(() => props.form, (newValue) => {
  form.value.appearanceFunctionCheck = newValue.appearanceFunctionCheck // 外观及功能性检查
  form.value.timeBase = newValue.timeBase //	时基(示波器-数字)
  form.value.scanTimeCoefficient = newValue.scanTimeCoefficient // 扫描时间系数及扩展(示波器-模拟)
  form.value.bandWidth = newValue.bandWidth // 频带宽度(示波器-数字/模拟)
  form.value.calibratingSignal = newValue.calibratingSignal //	校准信号(示波器-数字/模拟)
  form.value.currentBias = newValue.currentBias //	直流偏置(示波器-数字)
  form.value.currentGain = newValue.currentGain //	直流增益(示波器-数字)
  form.value.inputResistance = newValue.inputResistance //	输入电阻(示波器-数字/模拟)
  form.value.riseTime = newValue.riseTime //	上升时间(示波器-数字/模拟)
  form.value.triggerCharacter = newValue.triggerCharacter //	触发特性(示波器-模拟)
  form.value.triggerSensitivity = newValue.triggerSensitivity //	触发灵敏度(示波器-数字)
  form.value.verticalAmplitude = newValue.verticalAmplitude // 垂直幅度(示波器-模拟)
}, { 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.timeBase" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        时基
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.timeBase" style="display: flex; padding: 0 10px;padding-bottom: 10px;">
        <el-select
          v-model="form.methodType"
          placeholder="请选择方法"
          :disabled="pageType === 'detail'"
          class="short-input"
          style="margin-right: 10px;"
        >
          <el-option v-for="item of ['方法一', '方法二']" :key="item" :label="item" :value="item" />
        </el-select>
        <el-button type="primary" @click="addRow(timeBaseList, '时基')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(timeBaseCheckoutList, timeBaseList, '时基')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.timeBase" type="时基" :data="timeBaseList" :columns="form.methodType === '方法一' ? columns_time_base_method1 : columns_time_base_method2" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '时基')" />
  </detail-block>

  <!-- 直流增益 -->
  <detail-block v-if="props.itemCategoryName === '数字示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.currentGain" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        直流增益
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.currentGain" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(zeroFrequencyGainList, '直流增益')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(zeroFrequencyGainCheckoutList, zeroFrequencyGainList, '直流增益')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.currentGain" type="直流增益" :data="zeroFrequencyGainList" :columns="columns_zero_frequency_gain" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '直流增益')" @changeVerticalDeflectCoefficient="(value) => changeVerticalDeflectCoefficient(value, '直流增益(数字示波器)')" />
  </detail-block>

  <!-- 直流偏置 -->
  <detail-block v-if="props.itemCategoryName === '数字示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.currentBias" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        直流偏置
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.currentBias" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(DCBiasList, '直流偏置')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(DCBiasCheckoutList, DCBiasList, '直流偏置')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.currentBias" type="直流偏置" :data="DCBiasList" :columns="columns_zero_frequency_gain" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '直流偏置')" />
  </detail-block>

  <!-- 频带宽度(数字示波器) -->
  <detail-block v-if="props.itemCategoryName === '数字示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.bandWidth" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        频带宽度
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.bandWidth" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(frequencyBandwidthList, '频带宽度')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(frequencyBandwidthCheckoutList, frequencyBandwidthList, '频带宽度')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.bandWidth" type="频带宽度(数字示波器)" :data="frequencyBandwidthList" :columns="columns_frequency_bandwidth" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '频带宽度(数字示波器)')" />
  </detail-block>

  <!-- 触发灵敏度 -->
  <detail-block v-if="props.itemCategoryName === '数字示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.triggerSensitivity" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        触发灵敏度
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.triggerSensitivity" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(triggerSensitivityList, '触发灵敏度')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(triggerSensitivityCheckoutList, triggerSensitivityList, '触发灵敏度')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.triggerSensitivity" :data="triggerSensitivityList" :columns="columns_trigger_sensitivity" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '触发灵敏度')" />
  </detail-block>

  <!-- 上升时间(数字示波器) -->
  <detail-block v-if="props.itemCategoryName === '数字示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.riseTime" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        上升时间
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.riseTime" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(risetimeList, '上升时间')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(risetimeCheckoutList, risetimeList, '上升时间')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.riseTime" type="上升时间(数字示波器)" :data="risetimeList" :columns="columns_risetime" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '上升时间(数字示波器)')" @changeVerticalDeflectCoefficient="(value) => changeVerticalDeflectCoefficient(value, '上升时间(数字示波器)')" />
  </detail-block>

  <!-- 输入电阻(数字示波器) -->
  <detail-block v-if="props.itemCategoryName === '数字示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.inputResistance" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        输入电阻
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.inputResistance" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(inputResistanceList, '输入电阻')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(inputResistanceCheckoutList, inputResistanceList, '输入电阻')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.inputResistance" type="输入电阻(数字示波器)" :data="inputResistanceList" :columns="columns_input_resistance" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '输入电阻(数字示波器)')" />
  </detail-block>

  <!-- 校准信号(数字示波器) -->
  <detail-block v-if="props.itemCategoryName === '数字示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.calibratingSignal" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        校准信号
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.calibratingSignal" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(calibratingSignalList, '校准信号')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(calibratingSignalCheckoutList, calibratingSignalList, '校准信号')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table
      v-if="form.calibratingSignal"
      type="校准信号(数字示波器)"
      :data="calibratingSignalList"
      :columns="columns_calibrating_signal"
      :page-type="pageType"
      @selection-change="(e) => handleSelectionChange(e, '校准信号(数字示波器)')"
      @changeItemType="changeItemType"
    />
  </detail-block>

  <!-- 扫描时间系数及扩展 -->
  <detail-block v-if="props.itemCategoryName === '模拟示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.scanTimeCoefficient" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        扫描时间系数及扩展
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.scanTimeCoefficient" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(scanningTimeList, '扫描时间系数及扩展')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(scanningTimeCheckoutList, scanningTimeList, '扫描时间系数及扩展')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.scanTimeCoefficient" type="扫描时间系数及扩展" :data="scanningTimeList" :columns="columns_scan_time" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '扫描时间系数及扩展')" @changeInputNumber="(value) => changeInputNumber(value, '扫描时间系数及扩展')" />
  </detail-block>

  <!-- 垂直幅度 -->
  <detail-block v-if="props.itemCategoryName === '模拟示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.verticalAmplitude" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        垂直幅度
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.verticalAmplitude" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(verticalSizeList, '垂直幅度')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(verticalSizeCheckoutList, verticalSizeList, '垂直幅度')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.verticalAmplitude" type="垂直幅度" :data="verticalSizeList" :columns="columns_vertical_size" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '垂直幅度')" @changeInputNumber="(value) => changeInputNumber(value, '垂直幅度')" />
  </detail-block>

  <!-- 频带宽度(模拟示波器) -->
  <detail-block v-if="props.itemCategoryName === '模拟示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.bandWidth" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        频带宽度
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.bandWidth" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(frequencyBandwidthSimulateList, '频带宽度')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(frequencyBandwidthSimulateCheckoutList, frequencyBandwidthSimulateList, '频带宽度')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-of="form.bandWidth" type="频带宽度(模拟示波器)" :data="frequencyBandwidthSimulateList" :columns="columns_frequency_bandwidth_simulate" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '频带宽度(模拟示波器)')" />
  </detail-block>

  <!-- 触发特性 -->
  <detail-block v-if="props.itemCategoryName === '模拟示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.triggerCharacter" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        触发特性
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.triggerCharacter" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(triggerCharacteristicList, '触发特性')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(triggerCharacteristicCheckoutList, triggerCharacteristicList, '触发特性')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.triggerCharacter" type="触发特性" :data="triggerCharacteristicList" :columns="columns_trigger_characteristic" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '触发特性')" />
  </detail-block>

  <!-- 输入电阻(模拟示波器) -->
  <detail-block v-if="props.itemCategoryName === '模拟示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.inputResistance" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        输入电阻
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.inputResistance" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(inputResistanceSimulateList, '输入电阻')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(inputResistanceSimulateCheckoutList, inputResistanceSimulateList, '输入电阻')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.inputResistance" type="输入电阻(模拟示波器)" :data="inputResistanceSimulateList" :columns="columns_input_resistance_simulate" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '输入电阻(模拟示波器)')" />
  </detail-block>

  <!-- 上升时间(模拟示波器) -->
  <detail-block v-if="props.itemCategoryName === '模拟示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.riseTime" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        上升时间
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.riseTime" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(risetimeSimulateList, '上升时间')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(risetimeSimulateCheckoutList, risetimeSimulateList, '上升时间')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.riseTime" type="上升时间(模拟示波器)" :data="risetimeSimulateList" :columns="columns_risetime_simulate" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '上升时间(模拟示波器)')" @changeInputNumber="(value) => changeInputNumber(value, '上升时间(模拟示波器)')" />
  </detail-block>

  <!-- 校准信号(模拟示波器) -->
  <detail-block v-if="props.itemCategoryName === '模拟示波器'" title="">
    <div style="display: flex;justify-content: space-between;">
      <el-checkbox v-model="form.calibratingSignal" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        校准信号
      </el-checkbox>
      <div v-if="pageType !== 'detail' && form.calibratingSignal" style="padding: 0 10px;padding-bottom: 10px;">
        <el-button type="primary" @click="addRow(calibratingSignalSimulateList, '校准信号')">
          增加行
        </el-button>
        <el-button type="info" @click="delRow(calibratingSignalSimulateCheckoutList, calibratingSignalSimulateList, '校准信号')">
          删除行
        </el-button>
      </div>
    </div>
    <template-table v-if="form.calibratingSignal" type="校准信号(模拟示波器)" :data="calibratingSignalSimulateList" :columns="columns_calibrating_signal_simulate" :page-type="pageType" @selection-change="(e) => handleSelectionChange(e, '校准信号(模拟示波器)')" />
  </detail-block>
</template>