Newer
Older
xc-business-system / src / views / business / measure / item / components / fourteen / components / clock.vue
<!-- 第14套:铯原子频率标准装置标准装置 -- 铷钟 -->
<script lang="ts" setup name="TemplateDetailFourteenUniversalCount">
import { ElMessage } from 'element-plus'
import type { IList } from '../templateDetail-interface'
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 templateTable from '@/views/business/measure/item/components/second/templateTable.vue'
import { differenceArray, setSelectList } from '@/utils/Array'
import { clearSymbol, clearSymbolStart } from '@/utils/String'
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, // 外观及功能性检查
  outputSignal: 1, // 输出信号
  warmUp: 1, // 开机特性
  frequencyReproducibility: 1, // 频率复现性
  relativeFrequencyDeviation: 1, // 相对频率偏差
  frequencyStability: 1, // 频率稳定度
  dailyFrequencyDriftRate: 1, // 日频率漂移率
})
watch(() => props.form, (newVal) => {
  console.log(newVal, 'newVal')
  form.value = JSON.parse(JSON.stringify(newVal))
})
const list = ref<IList[]>([]) // 全部数据
const outputSignalList = ref<IList[]>([]) // 输出信号
const warmUpList = ref<IList[]>([]) // 开机特性
const frequencyReproducibilityList = ref<IList[]>([]) // 频率复现性
const relativeFrequencyDeviationList = ref<IList[]>([]) // 相对频率偏差
const frequencyStabilityList = ref<IList[]>([]) // 频率稳定度
const dailyFrequencyDriftRateList = ref<IList[]>([]) // 日频率漂移率

// 表格数据对应 list 字典
const listDict = ref<{ [key: string]: any }>()
watch(() => [outputSignalList.value, warmUpList.value, frequencyReproducibilityList.value, relativeFrequencyDeviationList.value, frequencyStabilityList.value, dailyFrequencyDriftRateList.value], () => {
  listDict.value = {
    '1-输出信号': outputSignalList.value,
    '2-开机特性': warmUpList.value,
    '3-频率复现性': frequencyReproducibilityList.value,
    '4-相对频率偏差': relativeFrequencyDeviationList.value,
    '5-频率稳定度': frequencyStabilityList.value,
    '6-日频率漂移率': dailyFrequencyDriftRateList.value,
  }
  list.value = []
  for (const i in listDict.value) {
    list.value = [...list.value, ...listDict.value[i]]
  }
}, {
  deep: true,
})
// 表格对应的 选择状态
let chekedDict = {} as { [key: string]: any }
watch(() => [props.form, form.value], () => {
  console.log(form.value, 'form.value')
  chekedDict = {
    '1-输出信号': form.value.outputSignal,
    '2-开机特性': form.value.warmUp,
    '3-频率复现性': form.value.frequencyReproducibility,
    '4-相对频率偏差': form.value.relativeFrequencyDeviation,
    '5-频率稳定度': form.value.frequencyStability,
    '6-日频率漂移率': form.value.dailyFrequencyDriftRate,
  }
}, {
  deep: true,
})
// ----------------------------------------表头------------------------------------------------
const columns_output_signal = ref<TableColumn[]>([ // 输出信号
  { text: '检定项目', value: 'params', align: 'center', required: false, type: 'text' },
  { text: '信号类型', value: 'signalType', align: 'center', required: true, type: 'select' },
  { text: '被测信号频率', value: '', align: 'center', required: false, type: '' },
  { text: '幅度技术指标', value: '', align: 'center', required: false, type: '', width: '300' },
  { text: '脉冲宽度技术指标', value: '', align: 'center', required: false, type: '', width: '300' },
  { text: '上升时间技术指标', value: '', align: 'center', required: false, type: '', width: '300' },
  { text: '不确定度U(k=2)', value: 'urel', align: 'center', required: false, type: 'notation' },
])
const columns_warm_up = ref<TableColumn[]>([ // 开机特性
  { text: '检定项目', value: 'params', align: 'center', required: false, type: 'text' },
  { text: '被测信号频率', value: 'testedSignalFrequency', align: 'center', required: true, type: 'select' },
  { text: '闸门时间', value: 'gateTime', align: 'center', required: true, type: 'number' },
  { text: '闸门时间单位', value: 'gateTimeUnit', align: 'center', required: true, type: 'select' },
  { text: '倍增次数', value: 'multiplyFrequency', align: 'center', required: false, type: 'number' },
  { text: '开机时间', value: 'onTime', align: 'center', required: true, type: 'number' },
  { text: '开机时间单位', value: 'onTimeUnit', align: 'center', required: true, type: 'select' },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: false, type: 'number' },
  { text: '不确定度U(k=2)', value: 'urel', align: 'center', required: false, type: 'notation' },
])
const columns_frequency_reproducibility = ref<TableColumn[]>([ // 频率复现性
  { text: '检定项目', value: 'params', align: 'center', required: false, type: 'text' },
  { text: '被测信号频率', value: 'testedSignalFrequency', align: 'center', required: true, type: 'select' },
  { text: '闸门时间', value: 'gateTime', align: 'center', required: true, type: 'number' },
  { text: '闸门时间单位', value: 'gateTimeUnit', align: 'center', required: true, type: 'select' },
  { text: '倍增次数', value: 'multiplyFrequency', align: 'center', required: false, type: 'number' },
  { text: 'T1', value: 'tOne', align: 'center', required: true, type: 'number' },
  { text: 'T1单位', value: 'tOneUnit', align: 'center', required: true, type: 'select' },
  { text: 'T2', value: 'tTwo', align: 'center', required: true, type: 'number' },
  { text: 'T2单位', value: 'tTwoUnit', align: 'center', required: true, type: 'select' },
  { text: 'T3', value: 'tThree', align: 'center', required: true, type: 'number' },
  { text: 'T3单位', value: 'tThreeUnit', align: 'center', required: true, type: 'select' },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: false, width: '150', type: 'number' },
  { text: '不确定度U(k=2)', value: 'urel', align: 'center', required: false, type: 'notation' },
])
const columns_frequency_stability = ref<TableColumn[]>([ // 频率稳定度
  { text: '检定项目', value: 'params', align: 'center', required: false, type: 'text' },
  { text: '被测信号频率', value: 'testedSignalFrequency', align: 'center', required: true, type: 'select' },
  { text: '取样时间', value: 'sampleTime', align: 'center', required: true, type: 'number' },
  { text: '取样时间单位', value: 'sampleTimeUnit', align: 'center', required: true, type: 'select' },
  { text: '采样组数', value: 'sampleGroupNumber', align: 'center', required: true, type: 'number' },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: false, type: 'number' },
  { text: '不确定度uc', value: 'urel', align: 'center', required: false, type: 'notation' },
])
const columns_daily_frequency_drift_rate = ref<TableColumn[]>([ // 日频率漂移率
  { text: '检定项目', value: 'params', align: 'center', required: false, type: 'text' },
  { text: '被测信号频率', value: 'testedSignalFrequency', align: 'center', required: true, type: 'select' },
  { text: '闸门时间', value: 'gateTime', align: 'center', required: true, type: 'number' },
  { text: '闸门时间单位', value: 'gateTimeUnit', align: 'center', required: true, type: 'select' },
  { text: '取样时间', value: 'sampleTime', align: 'center', required: true, type: 'number' },
  { text: '取样时间单位', value: 'sampleTimeUnit', align: 'center', required: true, type: 'select' },
  { text: '采样组数', value: 'sampleGroupNumber', align: 'center', required: true, type: 'number' },
  { text: '技术指标', value: 'technicalIndex', align: 'center', required: false, type: 'number' },
  { text: '不确定度U(k=2)', value: 'urel', align: 'center', required: false, type: 'notation' },
])
// --------------------------------表格操作---------------------------------------------------
// 表格对应 columns字典
const columnsDict = ref<{ [key: string]: any }>(
  {
    '1-输出信号': columns_output_signal.value,
    '2-开机特性': columns_warm_up.value,
    '3-频率复现性': columns_frequency_reproducibility.value,
    '4-相对频率偏差': columns_warm_up.value,
    '5-频率稳定度': columns_frequency_stability.value,
    '6-日频率漂移率': columns_daily_frequency_drift_rate.value,
  },
)
/**
 * 增加行公共方法
 * @param list 要操作的数组
 * @param title 操作的表格
 */
const addRow = (list: IList[], title: string, index: string) => {
  if (checkList(list, columnsDict.value[`${index}-${title}`], `${title}表格`)) {
    const params = {
      signalType: '', // 信号类型
      testedSignalFrequency: '', // 被测信号频率
      testedSignalFrequencyUnit: 'MHz', // 被测信号频率单位
      amplitudeTechnicalIndexLower: '', // 	幅度技术指标下限
      amplitudeTechnicalIndexUpper: '', // 	幅度技术指标上限
      amplitudeTechnicalIndexUnit: '', // 	幅度技术指标单位
      pulseWidthTechnicalIndexLower: '', // 脉冲宽度技术指标下限
      pulseWidthTechnicalIndexUnit: '', // 脉冲宽度技术指标单位
      pulseWidthTechnicalIndexUpper: '', // 脉冲宽度技术指标上限
      technicalIndex: '', // 上升时间技术指标
      technicalIndexSymbol: '±', // 上升时间技术指标符号
      technicalIndexUnit: '', // 上升时间技术指标单位
      gateTime: '', // 闸门时间
      gateTimeUnit: '', // 闸门时间单位
      multiplyFrequency: '', // 倍增次数
      onTime: '', // 开机时间
      onTimeUnit: '', // 开机时间单位
      sampleTime: '', // 取样时间
      sampleTimeUnit: '', // 取样时间单位
      urel: '',
      tOne: '',
      tTwo: '',
      tThree: '',
      tOneUnit: '',
      tTwoUnit: '',
      tThreeUnit: '',
      sampleGroupNumber: '', // 采样组数
    }
    switch (title) {
      case '输出信号': // 输出信号
        outputSignalList.value.length
          ? outputSignalList.value.push(JSON.parse(JSON.stringify(outputSignalList.value[outputSignalList.value.length - 1])))
          : outputSignalList.value.push({
            dataType: '1',
            params: '输出信号',
            ...params,
            editable: true,
          } as any)
        break
      case '开机特性': // 开机特性
        warmUpList.value.length
          ? warmUpList.value.push(JSON.parse(JSON.stringify(warmUpList.value[warmUpList.value.length - 1])))
          : warmUpList.value.push({
            dataType: '2',
            params: '开机特性',
            ...params,
            gateTime: '100',
            editable: true,
          } as any)
        break
      case '频率复现性': // 频率复现性
        frequencyReproducibilityList.value.length
          ? frequencyReproducibilityList.value.push(JSON.parse(JSON.stringify(frequencyReproducibilityList.value[frequencyReproducibilityList.value.length - 1])))
          : frequencyReproducibilityList.value.push({
            dataType: '3',
            params: '频率复现性',
            ...params,
            gateTime: '100',
            tOne: '24',
            tTwo: '24',
            tThree: '12',
            editable: true,
          } as any)
        break
      case '相对频率偏差': // 相对频率偏差
        relativeFrequencyDeviationList.value.length
          ? relativeFrequencyDeviationList.value.push(JSON.parse(JSON.stringify(relativeFrequencyDeviationList.value[relativeFrequencyDeviationList.value.length - 1])))
          : relativeFrequencyDeviationList.value.push({
            dataType: '4',
            params: '相对频率偏差',
            ...params,
            gateTime: '100',
            editable: true,
          } as any)
        break
      case '频率稳定度': // 频率稳定度
        frequencyStabilityList.value.length
          ? frequencyStabilityList.value.push(JSON.parse(JSON.stringify(frequencyStabilityList.value[frequencyStabilityList.value.length - 1])))
          : frequencyStabilityList.value.push({
            dataType: '5',
            params: '频率稳定度',
            ...params,
            editable: true,
          } as any)
        break
      case '日频率漂移率': // 日频率漂移率
        dailyFrequencyDriftRateList.value.length
          ? dailyFrequencyDriftRateList.value.push(JSON.parse(JSON.stringify(dailyFrequencyDriftRateList.value[dailyFrequencyDriftRateList.value.length - 1])))
          : dailyFrequencyDriftRateList.value.push({
            dataType: '6',
            params: '日频率漂移率',
            ...params,
            gateTime: '100',
            editable: true,
          } as any)
        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 '输出信号': // 输出信号
        outputSignalList.value = data
        break
      case '开机特性': // 开机特性
        warmUpList.value = data
        break
      case '频率复现性': // 频率复现性
        frequencyReproducibilityList.value = data
        break
      case '相对频率偏差': // 相对频率偏差
        relativeFrequencyDeviationList.value = data
        break
      case '频率稳定度': // 频率稳定度
        frequencyStabilityList.value = data
        break
      case '日频率漂移率': // 日频率漂移率
        dailyFrequencyDriftRateList.value = data
        break
    }
  }
}
// ---------------------------------------------校验---------------------------------------------------
// 校验表格(点击保存的时候用、生成标准器示值)
function checkList(list: any[], columns: any[], title: string) {
  return useCheckList(list, columns, title)
}
// 校验所有表格

function checkAllList() {
  let result = true
  for (const i in columnsDict.value) {
    if (!Number(chekedDict[i])) {
      result = true
    }
    else {
      const requireLength = !!((chekedDict[i] === '1' || chekedDict[i] === 1) && chekedDict[i])
      if (!useCheckList(listDict.value[i], columnsDict.value[i], i.substring(2), '', '', '', requireLength)) {
        result = false
        break
      }
    }
  }
  return result
}
// -----------------------------------------------------------------------------------------------------
const clearAllList = () => {
  list.value = []
  dailyFrequencyDriftRateList.value = []
  frequencyStabilityList.value = []
  relativeFrequencyDeviationList.value = []
  frequencyReproducibilityList.value = []
  warmUpList.value = []
  outputSignalList.value = []
  for (const i in listDict.value) {
    listDict.value[i] = []
  }
}
watch(() => props.list, (newVal) => { // 检定项表格
  if (newVal) {
    clearAllList()
    newVal.forEach((item: any) => {
      switch (item.dataType) {
        case '1':
          // 输出信号
          outputSignalList.value.push({ ...item, params: '输出信号', technicalIndex: clearSymbol(item.technicalIndex) || '/' })
          break
        case '2':
          // 开机特性
          warmUpList.value.push({ ...item, params: '开机特性', technicalIndex: clearSymbol(item.technicalIndex) || '/' })
          break
        case '3':
          // 频率复现性
          frequencyReproducibilityList.value.push({ ...item, params: '频率复现性', technicalIndex: clearSymbol(item.technicalIndex) || '/' })
          break
        case '4':
          // 相对频率偏差
          relativeFrequencyDeviationList.value.push({ ...item, params: '相对频率偏差', technicalIndex: clearSymbol(item.technicalIndex) || '/' })
          break
        case '5':
          // 频率稳定度
          frequencyStabilityList.value.push({ ...item, params: '频率稳定度', technicalIndex: clearSymbol(item.technicalIndex) || '/' })
          break
        case '6':
          // 日频率漂移率
          dailyFrequencyDriftRateList.value.push({ ...item, params: '日频率漂移率', technicalIndex: clearSymbol(item.technicalIndex) || '/' })
          break
      }
    })

    if (props.pageType !== 'detail') {
      if (!newVal.filter((item: { dataType: string }) => item.dataType === '3').length) {
        addRow([], '频率复现性', '3')
      }
      if (!newVal.filter((item: { dataType: string }) => item.dataType === '4').length) {
        addRow([], '相对频率偏差', '4')
      }
      if (!newVal.filter((item: { dataType: string }) => item.dataType === '6').length) {
        addRow([], '日频率漂移率', '6')
      }
    }
  }
  else {
    if (props.pageType !== 'detail') {
      setTimeout(() => {
        addRow([], '频率复现性', '3')
        addRow([], '相对频率偏差', '4')
        addRow([], '日频率漂移率', '6')
      })
    }
  }
})
const getList = () => {
  let result = [] as any[]
  for (const i in chekedDict) {
    if ((chekedDict[i] === '1' || chekedDict[i] === 1) && chekedDict[i]) {
      const data = listDict.value[i].map((item: any) => ({
        ...item,
        // technicalIndex: item.technicalIndex ? `${item.technicalIndexSymbol || ''}${item.technicalIndex}` : '/',
        technicalIndex: item.technicalIndex === 0 ? '0' : clearSymbol(item.technicalIndex || '/') ? clearSymbol(item.technicalIndex || '/') : '/',
        urel: item.urel ? item.urel : '/',
        testedSignalFrequency: item.testedSignalFrequency ? item.testedSignalFrequency : '/',
        multiplyFrequency: item.multiplyFrequency ? item.multiplyFrequency : '/',
      }))
      result = [...result, ...data]
    }
  }
  return result
}
defineExpose({ list, checkAllList, form, getList })
// 表格下拉框等内容是否禁用
const disabled = ({ scope, column }, fun) => {
  fun(props.pageType === 'detail')
}

// 每个table对应的下拉框内容 字典
const tableDict = ref<{ [key: string]: { value: string;name: string;id: string }[] }>({})
const changeLoadSituationa = (value: any, index: number, text: string, type: string, list: any[], item: string) => {
  // if (item === '频率显示') {
  //   if (text === '标称值') {
  //     list[index].frequency = value
  //   }
  //   if (text === '标称值单位') {
  //     list[index].frequencyUnit = typeof value === 'string' ? value : ''
  //   }
  // }
}

// 获取字典
const nominalValueUnit = ref<{ value: string;name: string;id: string }[]>([]) // 标称值单位
const thoroughfare = ref<{ value: string;name: string;id: string }[]>([]) // 通道
const testedSignalFrequency = ref<{ value: string;name: string;id: string }[]>([]) // 被测信号频率
const standardVoltage = ref<{ value: string;name: string;id: string }[]>([]) // 电压单位
const timeList = ref<{ value: string;name: string;id: string }[]>([]) // 时间
const standardTechnicalIndexSymbol = ref<{ value: string;name: string;id: string }[]>([]) // 技术指标符号
const signalType = ref<{ value: string;name: string;id: string }[]>([]) // 信号类型
const fetchDict = async () => {
  // 标称值单位
  const res1 = await getDictByCode('standardFrequencyUnit')
  nominalValueUnit.value = res1.data
  // 通道
  const res2 = await getDictByCode('cesiumAtomThoroughfare')
  thoroughfare.value = res2.data
  // 被测信号频率
  const res3 = await getDictByCode('cesiumAtomTestedSignalFrequency')
  testedSignalFrequency.value = res3.data
  // 电压单位
  const res4 = await getDictByCode('standardVoltage')
  standardVoltage.value = res4.data
  // 时间
  const res5 = await getDictByCode('standardTimeUnit')
  timeList.value = res5.data
  // 技术指标符号
  const res6 = await getDictByCode('standardTechnicalIndexSymbol')
  standardTechnicalIndexSymbol.value = res6.data
  // 信号类型
  const res7 = await getDictByCode('cesiumAtomSignalType')
  signalType.value = res7.data
  tableDict.value = {
    标称值单位: nominalValueUnit.value,
    通道: thoroughfare.value,
    被测信号频率: testedSignalFrequency.value,
    取样时间单位: timeList.value,
    闸门时间单位: timeList.value,
    开机时间单位: timeList.value,
    T1单位: timeList.value,
    T3单位: timeList.value,
    T2单位: timeList.value,
    信号类型: signalType.value,
  }
}
fetchDict()

// 自定义下拉框内容
// const customSelect = (data: any, fun: any) => {
//   if (data.title === '参考电平' && data.text === '标称值单位') {
//     fun(amplitudeUnit.value)
//   }
//   else {
//     fun(tableDict.value[data.text])
//   }
// }
</script>

<template>
  <div style="padding: 0 10px;">
    <el-checkbox v-model="form.appearanceFunctionCheck" :checked="true" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
      外观及功能性检查
    </el-checkbox>
  </div>

  <!-- 输出信号 -->
  <template-table
    :show="Boolean(form.outputSignal)"
    :data="outputSignalList" :columns="columns_output_signal" :page-type="pageType" title="输出信号" index="1" :show-btn="pageType !== 'detail'"
    :select-all-list="tableDict"
    @disabled="disabled"
    @add-row="addRow"
    @del-row="delRow"
    @change-load-situationa="changeLoadSituationa"
  >
    <template #custom-check>
      <el-checkbox v-model="form.outputSignal" :checked="true" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        输出信号
      </el-checkbox>
    </template>
    <template #pre-content="{ column, scope }">
      <template v-if="column.text === '幅度技术指标'">
        <precision-input-number v-model="scope.amplitudeTechnicalIndexLower" controls-position="right" :disabled="pageType === 'detail'" style="width: 150px;" />
        ~
        <precision-input-number v-model="scope.amplitudeTechnicalIndexUpper" controls-position="right" :disabled="pageType === 'detail'" style="width: 150px;" />
        <!--  -->
        <el-select
          v-model="scope.amplitudeTechnicalIndexUnit"
          :disabled="pageType === 'detail'"
          placeholder="单位"
          style="width: 150px;"
        >
          <el-option
            v-for="citem in standardVoltage"
            :key="citem.id"
            :label="citem.name"
            :value="citem.name"
          />
        </el-select>
      </template>
    </template>
    <template #next-content="{ column, scope }">
      <!-- 频率信号 -->
      <template v-if="scope.signalType === '频率信号'">
        <template v-if="column.text === '被测信号频率'">
          <el-select
            v-model="scope.testedSignalFrequency"
            :disabled="pageType === 'detail'"
          >
            <el-option
              v-for="citem in testedSignalFrequency"
              :key="citem.id"
              :label="citem.name"
              :value="citem.name"
            />
          </el-select>
          <span v-for="item in scope?.testedSignalFrequencyUnit" :key="item" style="display: inline-block;">{{ item }}</span>
        </template>
        <template v-if="column.text === '脉冲宽度技术指标'">
          /
        </template>
        <template v-if="column.text === '上升时间技术指标'">
          /
        </template>
      </template>
      <!-- 秒脉冲信号 -->
      <template v-if="scope.signalType === '秒脉冲信号'">
        <template v-if="column.text === '被测信号频率'">
          /
        </template>
        <template v-if="column.text === '脉冲宽度技术指标'">
          <precision-input-number v-model="scope.pulseWidthTechnicalIndexLower" controls-position="right" :disabled="pageType === 'detail'" />
          ~
          <precision-input-number v-model="scope.pulseWidthTechnicalIndexUpper" controls-position="right" :disabled="pageType === 'detail'" />
          <!--  -->
          <el-select
            v-model="scope.pulseWidthTechnicalIndexUnit"
            :disabled="pageType === 'detail'"
            placeholder="单位"
            style="width: 120px;"
          >
            <el-option
              v-for="citem in timeList"
              :key="citem.id"
              :label="citem.name"
              :value="citem.name"
            />
          </el-select>
        </template>
        <template v-if="column.text === '上升时间技术指标'">
          <el-select
            v-model="scope.technicalIndexSymbol"
            :disabled="pageType === 'detail'"
            placeholder=" "
            style="width: 100px;"
          >
            <el-option
              v-for="citem in standardTechnicalIndexSymbol"
              :key="citem.id"
              :label="citem.name"
              :value="citem.name"
            />
          </el-select>
          <precision-input-number v-model="scope.technicalIndex" controls-position="right" :disabled="pageType === 'detail'" />
          <el-select
            v-model="scope.technicalIndexUnit"
            :disabled="pageType === 'detail'"
            placeholder="单位"
            style="width: 120px;"
          >
            <el-option
              v-for="citem in timeList"
              :key="citem.id"
              :label="citem.name"
              :value="citem.name"
            />
          </el-select>
        </template>
      </template>
    </template>
  </template-table>

  <!-- 开机特性 -->
  <template-table
    :show="Boolean(form.warmUp)"
    :data="warmUpList" :columns="columns_warm_up" :page-type="pageType" title="开机特性" index="2" :show-btn="pageType !== 'detail'"
    :select-all-list="tableDict"
    @disabled="disabled"
    @add-row="addRow"
    @del-row="delRow"
    @change-load-situationa="changeLoadSituationa"
  >
    <template #custom-check>
      <el-checkbox v-model="form.warmUp" :checked="true" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        开机特性
      </el-checkbox>
    </template>
    <template #next-content="{ column, scope }">
      <template v-if="column.text === '被测信号频率'">
        <span v-for="item in scope?.testedSignalFrequencyUnit" :key="item" style="display: inline-block;">{{ item }}</span>
      </template>
    </template>
    <template #pre-content="{ column, scope }">
      <template v-if="column.text === '技术指标'">
        <el-select
          v-model="scope.technicalIndexSymbol"
          :disabled="pageType === 'detail'"
          placeholder=" "
          style="width: 100px;"
        >
          <el-option
            v-for="citem in standardTechnicalIndexSymbol"
            :key="citem.id"
            :label="citem.name"
            :value="citem.name"
          />
        </el-select>
      </template>
    </template>
  </template-table>

  <!-- 频率复现性 -->
  <template-table
    :show="Boolean(form.frequencyReproducibility)"
    :data="frequencyReproducibilityList" :columns="columns_frequency_reproducibility" :page-type="pageType" title="频率复现性" index="3" :show-btn="false"
    :select-all-list="tableDict"
    @disabled="disabled"
    @add-row="addRow"
    @del-row="delRow"
    @change-load-situationa="changeLoadSituationa"
  >
    <template #custom-check>
      <el-checkbox v-model="form.frequencyReproducibility" :checked="true" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        频率复现性
      </el-checkbox>
    </template>
    <template #next-content="{ column, scope }">
      <template v-if="column.text === '被测信号频率'">
        <span v-for="item in scope?.testedSignalFrequencyUnit" :key="item" style="display: inline-block;">{{ item }}</span>
      </template>
    </template>
    <template #pre-content="{ column, scope }">
      <template v-if="column.text === '技术指标'">
        <el-select
          v-model="scope.technicalIndexSymbol"
          :disabled="pageType === 'detail'"
          placeholder=" "
          style="width: 100px;"
        >
          <el-option
            v-for="citem in standardTechnicalIndexSymbol"
            :key="citem.id"
            :label="citem.name"
            :value="citem.name"
          />
        </el-select>
      </template>
    </template>
  </template-table>

  <!-- 相对频率偏差 -->
  <template-table
    :show="Boolean(form.relativeFrequencyDeviation)"
    :data="relativeFrequencyDeviationList" :columns="columns_warm_up" :page-type="pageType" title="相对频率偏差" index="4" :show-btn="false"
    :select-all-list="tableDict"
    @disabled="disabled"
    @add-row="addRow"
    @del-row="delRow"
    @change-load-situationa="changeLoadSituationa"
  >
    <template #custom-check>
      <el-checkbox v-model="form.relativeFrequencyDeviation" :checked="true" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        相对频率偏差
      </el-checkbox>
    </template>
    <template #next-content="{ column, scope }">
      <template v-if="column.text === '被测信号频率'">
        <span v-for="item in scope?.testedSignalFrequencyUnit" :key="item" style="display: inline-block;">{{ item }}</span>
      </template>
    </template>
    <template #pre-content="{ column, scope }">
      <template v-if="column.text === '技术指标'">
        <el-select
          v-model="scope.technicalIndexSymbol"
          :disabled="pageType === 'detail'"
          placeholder=" "
          style="width: 100px;"
        >
          <el-option
            v-for="citem in standardTechnicalIndexSymbol"
            :key="citem.id"
            :label="citem.name"
            :value="citem.name"
          />
        </el-select>
      </template>
    </template>
  </template-table>

  <!-- 频率稳定度 -->
  <template-table
    :show="Boolean(form.frequencyStability)"
    :data="frequencyStabilityList" :columns="columns_frequency_stability" :page-type="pageType" title="频率稳定度" index="5" :show-btn="pageType !== 'detail'"
    :select-all-list="tableDict"
    @disabled="disabled"
    @add-row="addRow"
    @del-row="delRow"
    @change-load-situationa="changeLoadSituationa"
  >
    <template #custom-check>
      <el-checkbox v-model="form.frequencyStability" :checked="true" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        频率稳定度
      </el-checkbox>
    </template>
    <template #next-content="{ column, scope }">
      <template v-if="column.text === '被测信号频率'">
        <span v-for="item in scope?.testedSignalFrequencyUnit" :key="item" style="display: inline-block;">{{ item }}</span>
      </template>
    </template>
    <template #pre-content="{ column, scope }">
      <template v-if="column.text === '技术指标'">
        <el-select
          v-model="scope.technicalIndexSymbol"
          :disabled="pageType === 'detail'"
          placeholder=" "
          style="width: 100px;"
        >
          <el-option
            v-for="citem in standardTechnicalIndexSymbol"
            :key="citem.id"
            :label="citem.name"
            :value="citem.name"
          />
        </el-select>
      </template>
    </template>
  </template-table>

  <!-- 日频率漂移率 -->
  <template-table
    :show="Boolean(form.dailyFrequencyDriftRate)"
    :data="dailyFrequencyDriftRateList" :columns="columns_daily_frequency_drift_rate" :page-type="pageType" title="日频率漂移率" index="6" :show-btn="false"
    :select-all-list="tableDict"
    @disabled="disabled"
    @add-row="addRow"
    @del-row="delRow"
    @change-load-situationa="changeLoadSituationa"
  >
    <template #custom-check>
      <el-checkbox v-model="form.dailyFrequencyDriftRate" :checked="true" :true-label="1" :false-label="0" :disabled="pageType === 'detail'">
        日频率漂移率
      </el-checkbox>
    </template>
    <template #next-content="{ column, scope }">
      <template v-if="column.text === '被测信号频率'">
        <span v-for="item in scope?.testedSignalFrequencyUnit" :key="item" style="display: inline-block;">{{ item }}</span>
      </template>
    </template>
    <template #pre-content="{ column, scope }">
      <template v-if="column.text === '技术指标'">
        <el-select
          v-model="scope.technicalIndexSymbol"
          :disabled="pageType === 'detail'"
          placeholder=" "
          style="width: 100px;"
        >
          <el-option
            v-for="citem in standardTechnicalIndexSymbol"
            :key="citem.id"
            :label="citem.name"
            :value="citem.name"
          />
        </el-select>
      </template>
    </template>
  </template-table>
</template>