Newer
Older
xc-business-system / src / views / business / measure / item / detail.vue
dutingting on 12 Mar 2024 39 KB 解决冲突
<!-- 检定项管理详情 -->
<script lang="ts" setup name="BusinessMeasureItemDetail">
import { ref } from 'vue'
import { ElLoading, ElMessage } from 'element-plus'
// import type { IForm } from './item-interface'
import templateDetailAddRowPattern from './components/first/templateDetailAddRowPattern.vue'
import templateDetailCreatePattern from './components/first/templateDetailCreatePattern.vue'
import templateDetailSecond from './components/second/templateDetail.vue'
import templateDetailThird from './components/third/templateDetail.vue'
import templateDetailFourth from './components/fourth/templateDetail.vue'
import templateDetailFifth from './components/fifth/templateDetail.vue'
import templateDetailSixth from './components/sixth/templateDetail.vue'
import templateDetailSeventh from './components/seventh/templateDetail.vue'
import templateDetailEighth from './components/eighth/templateDetail.vue'
import templateDetailNinth from './components/ninth/templateDetail.vue'
import templateDetailTenth from './components/tenth/templateDetail.vue'
import templateDetailEleventh from './components/eleventh/templateDetail.vue'
import templateDetailThirteenth from './components/thirteenth/templateDetail.vue'
import templateDetailFourteen from './components/fourteen/templateDetail.vue'
import templateDetailFifteenth from './components/fifteenth/templateDetail.vue'
import quoteTemplateListDialog from './dialog/quoteTemplateListDialog.vue'
import useUserStore from '@/store/modules/user'
import type { Itech } from '@/views/equipement/info/book/book-interface'
import { getDictByCode } from '@/api/system/dict'
import type { dictType } from '@/global'
import { UploadFile } from '@/api/file'
import showPhoto from '@/components/showPhoto/index.vue'
import { asTemplate, configItem, getInfo } from '@/api/business/measure/item'
import { getClassificationList } from '@/api/business/measure/classification'
const user = useUserStore() // 用户信息
const textMap: { [key: string]: string } = {
  edit: '编辑',
  add: '新建',
  detail: '详情',
}// 字典
const $router = useRouter() // 关闭页面使用
const $route = useRoute() // 路由参数
const pageType = ref('add') // 页面类型: add, edit, detail
const infoId = ref('') // 列表id
const ruleFormRef = ref() // 表单ref
const showItemTableType = ref('') // 显示检定项表格两种页面(addRowPattern: 增加行模式,createPattern: 生成检定项模式)
const form = ref({
  model: '', // 型号规格
  deviceName: '', // 设备名称
  helpInstruction: '', // 辅助字段
  helpFieldInstruction: '', // 辅助字段说明
  deviceType: '', // 设备分类(检校分类)
  deviceTypeName: '', // 设备分类(检校分类)名称
  itemCategoryId: '', // 设备检定项分类id
  itemCategoryName: '', // 设备检定项分类
  belongStandardEquipment: '', // 检校标准装置(字典code)
  belongStandardEquipmentName: '',	// 检校标准装置(字典value)
  checkCycle: 0, // 检定周期
  itemRemark: '', // 检定项备注
  itemId: '', // 检定项id
})
// 校验规则
const rules = ref({
  measureCategory: [{ required: true, message: '检校类别不能为空', trigger: ['blur', 'change'] }],
  technologyFile: [{ required: true, message: '依据技术文件不能为空', trigger: ['blur', 'change'] }],
  labLocation: [{ required: true, message: '地点不能为空', trigger: ['blur', 'change'] }],
  labX: [{ required: true, message: '西昌实验室名字不能为空', trigger: ['blur', 'change'] }],
  labH: [{ required: true, message: '海口实验室名字不能为空', trigger: ['blur', 'change'] }],
})
const getList = ref([]) // 检定项列表
const getObject = ref<any>({}) // 检定项表单
// ==========================第一套:多功能校准源标准装置数据==================================
const appearanceFunctionCheck = ref(true) // 第一套:多功能校准源--外观及功能检查
const indicationError = ref(true) // 第一套:多功能校准源--示值误差
const addRowPatternRef = ref() // 第一种模式组件ref(增加行模式)
const createPatternRef = ref() // 第二种模式组件ref(生成检定点)
// ==========================第4套:0.02级活塞式压力计标准装置数据==================================
const standardRef = ref() // 除第一套之外的剩余几套组件ref
// -------------------------------------------字典------------------------------------------
const deviceTypeList = ref<dictType[]>([])// 设备分类

function getDict() {
  // 设备分类
  getDictByCode('eqptDeviceType').then((response) => {
    deviceTypeList.value = response.data
  })
}
// ----------------------------------路由参数------------------------------------------------
if ($route.params && $route.params.type) {
  pageType.value = $route.params.type as string
  if ($route.params.id) {
    infoId.value = $route.params.id as string
  }
}

// -------------------------------------------获取检定项分类------------------------------------------------
const itemList = ref<{ id: string; name: string }[]>([]) // 检定项分类列表
// 获取检校标准装置
const fetchItemList = async (deviceType = '', belongStandardEquipment = '') => {
  const requestParams = {
    belongStandardEquipment, // 检校标准装置
    categoryName: '', // 检定项分类名称
    categoryNo: '', // 检定项分类编号
    deviceType, // 设备分类
    measureCategory: '', // 检校类别
    limit: 999999,
    offset: 1,
  }
  const response = await getClassificationList(requestParams)
  itemList.value = response.data.rows.map((item: { categoryName: string; id: string }) => {
    return {
      name: item.categoryName, // 检定项分类名称
      id: item.id,
    }
  })
}

// ------------------------------------------------------------------------------------------
// 关闭新增页面的回调
const close = () => {
  $router.back()
}

// 校验
const check = () => {
  if (form.value.belongStandardEquipment === '1') { // 第一套:多功能校准源
    if (showItemTableType.value === 'addRowPattern') { // 增加行模式校验
      if (!addRowPatternRef.value.list.length) {
        ElMessage.warning('检定项不能为空')
        return false
      }
      if (!addRowPatternRef.value.checkFrequencyUnit()) { return false } // 校验频率单位
      if (!addRowPatternRef.value.checkList()) { return false } // 校验其他必填项
    }
    else {
      if (!createPatternRef.value.list.length) {
        ElMessage.warning('检定项不能为空')
        return false
      }
    }
  }
  else if (form.value.belongStandardEquipment === '2') { // 第2套:直流稳压电源
    if (!standardRef.value.list.length) {
      ElMessage.warning('检定项不能为空')
      return false
    }
    if (!standardRef.value.checkAllList()) { return false }
  }
  else if (form.value.belongStandardEquipment === '3') { // 第3套:多功能电器安全校准器
    let titleTop = '开路电压'
    let titleBottom = '示值误差'
    if (form.value.itemCategoryName === '数字式接地电阻表' || form.value.itemCategoryName === '模拟式接地电阻表') {
      titleTop = '示值误差'
      titleBottom = '辅助接地电阻试验'
    }
    if (standardRef.value.showListTop && !standardRef.value.listTop.length) {
      ElMessage.warning(`${titleTop}不能为空`)
      return false
    }
    if (!standardRef.value.showListBottom && !standardRef.value.listBottom.length) {
      ElMessage.warning(`${titleBottom}不能为空`)
      return false
    }
  }
  else if (form.value.belongStandardEquipment === '4') { // 第四套:0.02级活塞式压力计
    if (!standardRef.value.list.length) {
      ElMessage.warning('检定项不能为空')
      return false
    }
  }

  else if (form.value.belongStandardEquipment === '5') { // 第5套:二等铂
    if (!standardRef.value.checkList()) {
      return false
    }
  }
  else if (form.value.belongStandardEquipment === '6') { // 第六套:安全阀
    if (!standardRef.value.list.length) {
      ElMessage.warning('检定项不能为空')
      return false
    }
    if (!standardRef.value.checkList()) { return false }
  }
  else if (form.value.belongStandardEquipment === '9') { // 频谱分析仪
    if (!standardRef.value.list.length) {
      ElMessage.warning('检定项不能为空')
      return false
    }
    if (!standardRef.value.checkAllList()) { return false }
  }
  else if (form.value.belongStandardEquipment === '14') { // 铯原子
    standardRef.value.getInfo()
    if (!standardRef.value.getInfo().list.length) {
      ElMessage.warning('检定项不能为空')
      return false
    }
    if (!standardRef.value.getInfo().checkAllList()) { return false }
    // return false
  }
  return true
}
// 处理请求数据
const solveData = () => {
  let params
  if (form.value.belongStandardEquipment === '1') { // 第一套:多功能校准源
    let measureItemConfigCalibrator
    if (showItemTableType.value === 'createPattern') {
      measureItemConfigCalibrator = createPatternRef.value.form
      measureItemConfigCalibrator.itemId = infoId.value
    }
    params = {
      appearanceFunctionCheck: appearanceFunctionCheck.value ? '1' : '0', // 外观及功能检查
      helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明
      itemId: infoId.value, // 检定项id
      itemRemark: form.value.itemRemark, // 检定项备注
      measureItemDataCalibratorList: showItemTableType.value === 'addRowPattern' ? addRowPatternRef.value.list.map((item: { updateTime: string }) => { item.updateTime = ''; return item }) : createPatternRef.value.list.map((item: { updateTime: string }) => { item.updateTime = ''; return item }), // 检定项
      measureItemConfigCalibrator, // 检定项配置
    }
  }
  else if (form.value.belongStandardEquipment === '2') { // 第二套:直流稳压电源
    params = {
      helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明
      itemRemark: form.value.itemRemark, // 检定项备注
      itemId: infoId.value, // 检定项id
      appearanceFunctionCheck: standardRef.value.form.appearanceFunctionCheck, // 外观及功能检查
      voltageRegulation: standardRef.value.form.voltageRegulation, // 电源电压调整率
      loadRegulation: standardRef.value.form.loadRegulation, // 负载调整率
      voltageRepresentError: standardRef.value.form.voltageRepresentError, // 电压表示值误差
      currentRepresentErrorDirect: standardRef.value.form.currentRepresentErrorDirect, // 电流表示值误差(直接测量)
      currentRepresentErrorIndirect: standardRef.value.form.currentRepresentErrorIndirect, // 电流表示值误差(间接测量)
      rippleVoltage: standardRef.value.form.rippleVoltage, // 纹波电压
      voltageOutputStability: standardRef.value.form.voltageOutputStability, // 输出电压短期稳定性
      measureItemDataDcPowerList: standardRef.value.getList().map((item: any) => ({
        ...item,
        itemId: infoId.value,
        updateTime: '',
      })), // 鉴定项列表
    }
  }
  else if (form.value.belongStandardEquipment === '3') { // 第3套:多功能电气安全校准器
    let list = []
    if (standardRef.value.showListTop && standardRef.value.showListBottom) {
      list = standardRef.value.listBottom.concat(standardRef.value.listTop)
    }
    else {
      if (standardRef.value.showListTop && !standardRef.value.showListBottom) {
        list = standardRef.value.showListTop
      }
      else if (!standardRef.value.showListTop && standardRef.value.showListBottom) {
        list = standardRef.value.listBottom
      }
    }
    params = {
      helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明
      itemId: infoId.value, // 检定项id
      itemRemark: form.value.itemRemark, // 检定项备注
      measureItemDataElectricalSafetyList: list.map((item: { updateTime: string }) => { item.updateTime = ''; return item }), // 检定项
      appearanceFunctionCheck: getObject.value.appearanceFunctionCheck, // 外观及功能检查
    }
  }
  else if (form.value.belongStandardEquipment === '4') { // 第四套:0.02级活塞式压力计
    if (!standardRef.value.checkList()) { params = '未通过校验'; return params }
    params = {
      helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明
      itemId: infoId.value, // 检定项id
      itemRemark: form.value.itemRemark, // 检定项备注
      measureItemDataPistonGaugeList: standardRef.value.list.map((item: { zeroPosition: string }) => {
        return {
          ...item,
          zeroPosition: item.zeroPosition !== '否',
          theoreticalOutputValueUnit: standardRef.value.form.theoreticalOutputValueUnit, // 理论输出值单位
          updateTime: '',
        }
      }), // 检定项
      measureItemConfigPistonGauge: { ...standardRef.value.form, itemId: infoId.value, supplyVoltage: standardRef.value.form.supplyVoltage + standardRef.value.form.supplyVoltageUnit },
    }
  }
  else if (form.value.belongStandardEquipment === '5') { // 第5套:二等铂
    params = {
      helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明
      itemRemark: form.value.itemRemark, // 检定项备注
      itemId: infoId.value, // 检定项id
      ...standardRef.value.form,
      measureItemDataResistanceThermometerList: standardRef.value.list.map((item: any) => ({
        ...item,
        accuracyLevel: standardRef.value.form.accuracyLevel, // 准确度等级
        measureRangeLower: standardRef.value.form.measureRangeLower, // 测量范围下限
        measureRangeUnit: standardRef.value.form.measureRangeUnit, // 测量范围单位
        measureRangeUpper: standardRef.value.form.measureRangeUpper, // 测量范围上限
        level: standardRef.value.form.level, // 级别
        itemId: infoId.value,
        updateTime: '',
      })),
    }
  }
  else if (form.value.belongStandardEquipment === '6') { // 第六套:安全阀
    params = {
      helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明
      itemRemark: form.value.itemRemark, // 检定项备注
      itemId: infoId.value, // 检定项id
      measureItemDataSafetyValveList: standardRef.value.list.map((item: any) => ({
        upperAllowValue: item.upperAllowValue, // 允许值上限
        lowerAllowValue: item.lowerAllowValue, // 允许值下限
        nominalValue: item.nominalValue, // 标称值
        unit: item.unit, // 单位
        itemId: infoId.value,
        updateTime: '',
      })), // 整定压力
      appearanceFunctionCheck: getObject.value.appearanceFunctionCheck, // 外观及功能检查
      sealingTest: getObject.value.sealingTest, // 密封试验
    }
  }
  else if (form.value.belongStandardEquipment === '8') { // 第8套:E2等砝码
    if (!standardRef.value.checkList()) { params = '未通过校验'; return params }
    params = {
      helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明
      itemRemark: form.value.itemRemark, // 检定项备注
      itemId: infoId.value, // 检定项id
      measureItemDataETwoList: [
        {
          actualDivisionValue: standardRef.value.form.actualDivisionValue, //	实际分度值d
          actualDivisionValueUnit: standardRef.value.form.actualDivisionValueUnit, //	实际分度值d单位
          itemId: infoId.value, //	检定项id
          ptOne: standardRef.value.form.ptOne, //	实验载荷Pt1
          ptOneUnit: standardRef.value.form.ptOneUnit, //	实验载荷Pt1单位
          ptTwo: standardRef.value.form.ptTwo, //	实验载荷Pt2
          ptTwoUnit: standardRef.value.form.ptTwoUnit, //	实验载荷Pt2单位
          updateTime: '',
        },
      ],
      repeatability: standardRef.value.form.repeatability, // 重复性
      localIndicationError: standardRef.value.form.localIndicationError, // 局部示值误差
      partialLoadError: standardRef.value.form.partialLoadError, // 偏载误差
      appearanceFunctionCheck: standardRef.value.form.appearanceFunctionCheck, // 外观及功能检查
    }
  }
  else if (form.value.belongStandardEquipment === '9') { // 第九套:频谱分析仪
    params = {
      helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明
      itemRemark: form.value.itemRemark, // 检定项备注
      itemId: infoId.value, // 检定项id

      appearanceFunctionCheck: standardRef.value.form.appearanceFunctionCheck, // 外观及功能性检查
      frequencyDisplay: standardRef.value.form.frequencyDisplay, // 频率显示
      sweepWidth: standardRef.value.form.sweepWidth, // 扫频宽度
      middleFrequencyWidth: standardRef.value.form.middleFrequencyWidth, // 中频带宽
      middleConversionDeviation: standardRef.value.form.middleConversionDeviation, // 中频带宽转换偏差
      referenceLevel: standardRef.value.form.referenceLevel, // 参考电平
      verticalScale: standardRef.value.form.verticalScale, // 垂直刻度(显示位置从上到下)
      inputFrequency: standardRef.value.form.inputFrequency, // 输入频响
      averageNoiseLevel: standardRef.value.form.averageNoiseLevel, // 平均噪声电平
      harmonicDistortion: standardRef.value.form.harmonicDistortion, // 谐波失真
      inputAttenuation: standardRef.value.form.inputAttenuation, // 输入衰减
      gainCompression: standardRef.value.form.gainCompression, // 1dB增益压缩点
      calibratingSignal: standardRef.value.form.calibratingSignal, // 校准信号

      measureItemDataSpectrumAnalyzerList: standardRef.value.getList().map((item: any) => ({
        ...item,
        itemId: infoId.value,
        technicalIndexSymbol: undefined,
        // referencePoint: item.referencePoint === '是' ? '1' : item.referencePoint === '否' ? '0' : undefined,
        id: undefined,
        updateTime: '',
      })), // 鉴定项列表
    }
  }
  else if (form.value.belongStandardEquipment === '13') { // 第13套:示波器
    if (!standardRef.value.checkListBeforeSave()) { params = '未通过校验'; return params }
    const list = standardRef.value.solveDataBeforeSave() // 处理数据
    params = {
      helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明
      itemRemark: form.value.itemRemark, // 检定项备注
      itemId: infoId.value, // 检定项id
      measureItemDataOscilloscopeList: list,
      ...standardRef.value.form,
    }
  }
  else if (form.value.belongStandardEquipment === '14') { // 第十四套:铯原子
    params = {
      helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明
      itemRemark: form.value.itemRemark, // 检定项备注
      itemId: infoId.value, // 检定项id
      appearanceFunctionCheck: standardRef.value.getInfo().form.appearanceFunctionCheck, // 外观及功能性检查
      frequencySignalOutputAmplitude: standardRef.value.getInfo().form.frequencySignalOutputAmplitude, // 频率信号输出幅度
      secondPulseOutput: standardRef.value.getInfo().form.secondPulseOutput, // 秒脉冲输出
      frequencyStability: standardRef.value.getInfo().form.frequencyStability, // 频率稳定度
      relativeFrequencyDeviation: standardRef.value.getInfo().form.relativeFrequencyDeviation, // 相对频率偏差
      frequencyReproducibility: standardRef.value.getInfo().form.frequencyReproducibility, // 频率复现性
      dailyAgingRate: standardRef.value.getInfo().form.dailyAgingRate, // 日老化率

      outputSignal: standardRef.value.getInfo().form.outputSignal, // 输出信号
      warmUp: standardRef.value.getInfo().form.warmUp, // 开机特性
      dailyFrequencyDriftRate: standardRef.value.getInfo().form.dailyFrequencyDriftRate, // 日频率漂移率

      frequencyMeasureError: standardRef.value.getInfo().form.frequencyMeasureError, // 频率测量误差
      frequencyMeasureRange: standardRef.value.getInfo().form.frequencyMeasureRange, // 频率测量范围、输入灵敏度
      crystalOscillatorDailyAgingRate: standardRef.value.getInfo().form.crystalOscillatorDailyAgingRate, // 晶振日老化率
      crystalOscillatorReproducibility: standardRef.value.getInfo().form.crystalOscillatorReproducibility, // 晶振频率复现性
      crystalOscillatorDeviation: standardRef.value.getInfo().form.crystalOscillatorDeviation, // 晶振相对频率偏差
      crystalOscillatorStability: standardRef.value.getInfo().form.crystalOscillatorStability, //  晶振1s频率稳定度
      crystalOscillatorStartupCharacter: standardRef.value.getInfo().form.crystalOscillatorStartupCharacter, //  晶振开机特性
      timeIntervalMeasureRange: standardRef.value.getInfo().form.timeIntervalMeasureRange, //  时间间隔测量范围及测量误差
      periodicMeasureError: standardRef.value.getInfo().form.periodicMeasureError, //  周期测量误差
      periodicMeasureRange: standardRef.value.getInfo().form.periodicMeasureRange, //  周期测量范围、输入灵敏度

      measureItemDataCesiumAtomList: standardRef.value.getInfo().getList().map((item: any) => ({
        ...item,
        itemId: infoId.value,
        id: undefined,
        updateTime: '',
      })), // 鉴定项列表
    }
  }
  return params
}

// 保存
const save = () => {
  if (!check()) { return false }
  console.log('点击保存校验通过')
  ruleFormRef.value!.validate((valid: boolean) => {
    if (valid) {
      const params = solveData()
      if (params === '未通过校验') { return false }
      const loading = ElLoading.service({
        lock: true,
        background: 'rgba(255, 255, 255, 0.8)',
      })
      // 保存
      configItem(params).then((res) => {
        fetchInfo()
        ElMessage.success('保存成功')
        pageType.value = 'detail'
        loading.close()
      }).catch(() => {
        loading.close()
      })
    }
    else {
      console.log('表单校验不通过')
    }
  })
}

// 点击编辑
const edit = () => {
  pageType.value = 'edit'
  fetchInfo() // 获取详情
}

// 点击存为模板
const saveTemplate = () => {
  const loading = ElLoading.service({
    lock: true,
    background: 'rgba(255, 255, 255, 0.8)',
  })
  asTemplate({ id: infoId.value }).then((res) => {
    ElMessage.success('存为模板成功')
    loading.close()
  }).catch(() => {
    loading.close()
  })
}

const quoteTemplate = ref() // 选择引用模板组件ref

// 点击引用模板
const quote = () => {
  quoteTemplate.value.initDialog(form.value.itemCategoryId)
}

// 确定选择模板
const confirmSelectedTemplate = (val: any) => {
  if (val && val.length) {
    const loading = ElLoading.service({
      lock: true,
      background: 'rgba(255, 255, 255, 0.8)',
    })
    const params = {
      id: val[0].id,
      itemCategoryName: form.value.itemCategoryName, // 检定项分类名字
      belongStandardEquipment: form.value.belongStandardEquipment, // 检校标准装置字典code
    }
    getInfo(params).then((res) => {
      solveResponseData(res.data, true)
      loading.close()
    })
  }
}

// ------------------------------------技术指标-------------------------------------------
const technicalTargetList = ref<Itech[]>([]) // 技术指标列表
const technicalIndexColumns = [ // 技术指标表头
  { text: '测量范围', value: 'measureRange', required: true },
  { text: '不确定度或允许误差极限或准确度等级', value: 'uncertainty', required: true },
  { text: '依据的技术文件', value: 'basedDocuments', required: true },
]

// ---------------------------------------获取详情------------------------------------------------

/**
 * 处理返回数据、处理引用模板数据
 * @param response
 * @param template 是够处理模板数据
 */
function solveResponseData(response: any, template = false) {
  if (form.value.belongStandardEquipment === '1') { // 第一套:多功能校准源
    if (template) { // 模板
      getList.value = response.measureItemDataCalibratorList.map((item: { id: string }) => {
        return {
          ...item,
          id: '',
          itemId: infoId.value,
        }
      }) // 检定项表格
    }
    else {
      getList.value = response.measureItemDataCalibratorList // 检定项表格
      getObject.value = response.measureItemConfigCalibrator // 检定项表单
    }
  }
  else if (form.value.belongStandardEquipment === '2') { // 第二套:直流稳压电源
    getList.value = response.measureItemDataDcPowerList // 检定项表格
    getObject.value = response // 检定项表单
  }
  else if (form.value.belongStandardEquipment === '3') { // 第3套:多功能电气安全校准器
    if (template) { // 模板
      getList.value = response.measureItemDataElectricalSafetyList.map((item: { id: string }) => {
        return {
          ...item,
          id: '',
          itemId: infoId.value,
        }
      }) // 检定项表格
    }
    else {
      getList.value = response.measureItemDataElectricalSafetyList // 检定项表格
    }
    getObject.value = response // 检定项表单
  }
  else if (form.value.belongStandardEquipment === '4') { // 第四套:0.02级活塞式压力计
    getList.value = response.measureItemDataPistonGaugeList // 检定项表格
    getObject.value = response.measureItemConfigPistonGauge // 检定项表单
  }
  else if (form.value.belongStandardEquipment === '5') { // 第5套:二等铂
    getList.value = response.measureItemDataResistanceThermometerList // 检定项表格
    getObject.value = response // 检定项表单
  }
  else if (form.value.belongStandardEquipment === '6') { // 第六套:安全阀
    getList.value = response.measureItemDataSafetyValveList // 检定项表格
    getObject.value = response // 检定项表单
  }
  else if (form.value.belongStandardEquipment === '8') { // 第8套:E2等砝码
    getList.value = response.measureItemDataETwoList // 检定项表格
    getObject.value = response // 检定项表单
  }
  else if (form.value.belongStandardEquipment === '9') { // 第9套:频谱分析仪
    getList.value = response.measureItemDataSpectrumAnalyzerList // 检定项表格
    getObject.value = response // 检定项表单
  }
  else if (form.value.belongStandardEquipment === '13') { // 第13套:示波器
    getList.value = response.measureItemDataOscilloscopeList // 检定项表格
    getObject.value = response // 检定项表单
  }
  else if (form.value.belongStandardEquipment === '14') { // 第14套:铯原子
    getList.value = response.measureItemDataCesiumAtomList // 检定项表格
    getObject.value = response // 检定项表单
  }
}

function fetchInfo() {
  const loading = ElLoading.service({
    lock: true,
    background: 'rgba(255, 255, 255, 0.8)',
  })
  const params = {
    id: infoId.value,
    itemCategoryName: form.value.itemCategoryName, // 检定项分类名字
    belongStandardEquipment: form.value.belongStandardEquipment, // 检校标准装置字典code
  }
  getInfo(params).then((res) => {
    form.value = res.data
    technicalTargetList.value = res.data.technicalTargetList // 技术指标
    solveResponseData(res.data)
    loading.close()
  }).catch(() => {
    loading.close()
  })
}

// -------------------------------------钩子-----------------------------------------------------

onMounted(async () => {
  form.value = { ...$route.query as any }
  fetchItemList() // 获取设备检定项分类
  getDict()
  if (form.value.itemCategoryName === '数字多用表(手持)' || form.value.itemCategoryName === '数字多用表(台式)' || form.value.itemCategoryName === '多功能电力参数测量仪' || form.value.itemCategoryName === '钳形电流表' || form.value.itemCategoryName === '指针式万用表') {
    showItemTableType.value = 'addRowPattern' // 增加行模式
  }
  else {
    showItemTableType.value = 'createPattern' // 生成检定项模式
  }
  fetchInfo() // 获取详情
})
</script>

<template>
  <app-container>
    <detail-page :title="`配置检定项-${textMap[pageType]}`">
      <template #btns>
        <el-button v-if="pageType === 'detail'" type="primary" @click="saveTemplate">
          存为模板
        </el-button>
        <el-button v-if="pageType !== 'detail'" type="primary" @click="quote">
          引用模板
        </el-button>
        <el-button v-if="pageType === 'detail'" type="primary" @click="edit">
          编辑
        </el-button>
        <el-button v-if="pageType !== 'detail'" type="primary" @click="save">
          保存
        </el-button>
        <el-button type="info" @click="close">
          关闭
        </el-button>
      </template>
      <el-form
        ref="ruleFormRef"
        :model="form"
        label-width="120"
        label-position="right"
        :rules="rules"
      >
        <el-row :gutter="24">
          <el-col :span="6">
            <el-form-item label="设备名称:" prop="deviceName">
              <el-input v-model="form.deviceName" class="full-width-input" :disabled="pageType !== 'add'" placeholder="设备名称" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="型号规格:" prop="model">
              <el-input v-model="form.model" class="full-width-input" :disabled="pageType !== 'add'" placeholder="型号规格" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="辅助字段:" prop="helpInstruction">
              <el-input v-model="form.helpInstruction" class="full-width-input" :disabled="pageType !== 'add'" placeholder="辅助字段" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="辅助字段说明:" prop="helpFieldInstruction">
              <el-input v-model="form.helpFieldInstruction" type="textarea" autosize class="full-width-input" :disabled="pageType === 'detail'" :placeholder="pageType === 'detail' ? ' ' : '辅助字段说明'" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="设备分类:" prop="deviceType">
              <el-select
                v-model="form.deviceType"
                placeholder="设备分类"
                class="short-input"
                filterable
                disabled
              >
                <el-option v-for="item in deviceTypeList" :key="item.id" :label="item.name" :value="item.value" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="设备检定项分类:" prop="categoryName">
              <!-- <el-input v-model="form.categoryName" class="full-width-input" disabled placeholder="设备检定项分类" /> -->
              <el-select
                v-model="form.itemCategoryId"
                placeholder="设备检定项分类"
                filterable
                style="width: 400px;"
                disabled
              >
                <el-option v-for="item in itemList" :key="item.id" :label="item.name" :value="item.id" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="检定周期(月):" prop="checkCycle">
              <el-input-number
                v-model="form.checkCycle"
                :placeholder="pageType === 'detail' ? '' : '请输入检定周期'"
                disabled
                class="full-width-input"
                :min="0"
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </detail-page>
    <!-- 技术指标 -->
    <detail-block v-if="pageType === 'detail'" title="技术指标">
      <el-table
        ref="techRef"
        :data="technicalTargetList"
        border
        style="width: 100%;"
      >
        <el-table-column align="center" label="序号" width="80" type="index" />
        <el-table-column
          v-for="item in technicalIndexColumns"
          :key="item.value"
          :prop="item.value"
          :label="item.text"
          align="center"
        />
      </el-table>
    </detail-block>
    <!-- 第一套:多功能校准源标准装置--字典:1 -->
    <detail-block v-if="form.belongStandardEquipment === '1'" title="检定项">
      <el-checkbox v-model="appearanceFunctionCheck" :disabled="pageType === 'detail'">
        外观及功能检查
      </el-checkbox>
      <el-checkbox v-model="indicationError" disabled>
        示值误差
      </el-checkbox>
      <!-- 检定项表格(增加行模式) -->
      <template-detail-add-row-pattern v-if="showItemTableType === 'addRowPattern'" ref="addRowPatternRef" :list="getList" :page-type="pageType" :item-category-name="form.itemCategoryName" />
      <!-- 检定项表格(生成检定点模式) -->
      <template-detail-create-pattern v-if="showItemTableType === 'createPattern'" ref="createPatternRef" :form="getObject" :list="getList" :page-type="pageType" :item-category-name="form.itemCategoryName" />
    </detail-block>

    <!-- 第2套: 直流稳压电源标准装置--字典:2 -->
    <detail-block v-if="form.belongStandardEquipment === '2'" title="检定项">
      <template-detail-second
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>

    <!-- 第三套: 多功能电气安全校准器标准装置--字典:3 -->
    <detail-block v-if="form.belongStandardEquipment === '3'" title="检定项">
      <template-detail-third
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>

    <!-- 第四套: 0.02级活塞式压力计标准装置--字典:4 -->
    <detail-block v-if="form.belongStandardEquipment === '4'" title="检定项">
      <template-detail-fourth
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>

    <!-- 第五套:二等铂电阻温度计标准装置 -->
    <detail-block v-if="form.belongStandardEquipment === '5'" title="检定项">
      <template-detail-fifth
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>

    <!-- 第6套:安全阀标准装置--字典:6 -->
    <detail-block v-if="form.belongStandardEquipment === '6'" title="检定项">
      <template-detail-sixth
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>
    <!-- 第7套: 精密露点仪--字典:7 -->
    <detail-block v-if="form.belongStandardEquipment === '7'" title="检定项">
      <template-detail-seventh
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>

    <!-- 第8套: E2砝码--字典:8 -->
    <detail-block v-if="form.belongStandardEquipment === '8'" title="检定项">
      <template-detail-eighth
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>

    <!-- 第9套: 频谱分析仪--字典:9 -->
    <detail-block v-if="form.belongStandardEquipment === '9'" title="检定项">
      <template-detail-ninth
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>
    <!-- 第10套: 频谱分析仪--字典:10 -->
    <detail-block v-if="form.belongStandardEquipment === '10'" title="检定项">
      <template-detail-tenth
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>

    <!-- 第11套: 微波衰减标准装置--字典:11 -->
    <detail-block v-if="form.belongStandardEquipment === '11'" title="检定项">
      <template-detail-eleventh
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>

    <!-- 第13套: 示波器检定装置--字典:13 -->
    <detail-block v-if="form.belongStandardEquipment === '13'" title="检定项">
      <template-detail-thirteenth
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>

    <!-- 第14套: 铯原子频率装置--字典:14 -->
    <detail-block v-if="form.belongStandardEquipment === '14'" title="检定项">
      <template-detail-fourteen
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>

    <!-- 第15套: 小功率检定装置--字典:15 -->
    <detail-block v-if="form.belongStandardEquipment === '15'" title="检定项">
      <template-detail-fifteenth
        ref="standardRef"
        :page-type="pageType"
        :item-category-name="form.itemCategoryName"
        :belong-standard-equipment="form.belongStandardEquipment"
        :item-id="infoId"
        :list="getList"
        :form="getObject"
      />
    </detail-block>

    <!-- 检定项备注 -->
    <el-form
      :model="form"
      label-width="120"
      label-position="right"
      :rules="rules"
      style="margin-top: 20px;"
    >
      <el-row>
        <el-col :span="12">
          <el-form-item label="检定项备注:" prop="itemRemark">
            <el-input
              v-model="form.itemRemark"
              class="full-width-input"
              autosize
              type="textarea"
              :placeholder="pageType === 'detail' ? ' ' : '请输入检定项备注'"
              :disabled="pageType === 'detail'"
            />
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
  </app-container>
  <quote-template-list-dialog ref="quoteTemplate" @confirm="confirmSelectedTemplate" />
</template>

<style lang="scss" scoped>
.link {
  text-decoration: underline;
  color: #3d7eff;
  cursor: pointer;
}

.file-area {
  display: flex;
  align-items: center;
  font-size: 14px;
  color: #60627f;
  margin-bottom: 10px;
  margin-left: 40px;
  white-space: nowrap;

  .tech-file {
    display: flex;
    align-items: center;
    margin-left: 20px;

    .file-text {
      margin-right: 10px;
    }
  }
}
</style>