Newer
Older
xc-business-system / src / views / equipement / standard / checkData / components / third / checkDataCom.vue
dutingting on 29 Nov 43 KB 解决冲突
<!-- 核查数据管理详情--核查项---第3套:多功能电器安全校准器 -->
<script lang="ts" setup name="checkDataDetail">
import { ref } from 'vue'
import { ElLoading, ElMessage } from 'element-plus'
import saveCheckRecord from '../../dialog/saveCheckRecord.vue'
import { clearDateValue, handleDetailTableTableHead, handleSaveDateParams, solveHistoryIndicationTableData } from '../useStabilityCaculate'
import type { IList } from './third-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import useUserStore from '@/store/modules/user'
import type { dictType } from '@/global'
import { getDictByCode } from '@/api/system/dict'
import multiTable from '@/components/MultiHeaderTable/index.vue'
import { addCheckData, calculateHandle, getHistoryIndication, getInfo, updateCheckData } from '@/api/equipment/standard/checkData'
import { getCheckItemDetail, getJobInstructionList } from '@/api/equipment/standard/book'
import { useCheckList } from '@/commonMethods/useCheckList'
import { caculateDecimalDigits } from '@/views/business/measure/item/useCalculateResolution'
const props = defineProps({
  selectStandardId: {
    type: String,
  },
  pageType: { // 页面类型
    type: String,
  },
  checkDate: { // 核查日期
    type: String,
  },
})
const emits = defineEmits(['isConfigCheck'])
const $route = useRoute() // 路由参数
const infoId = ref('')
const form = ref({
  voltageQualified: '合格', // 稳定性考核是否合格_直流电压
  resistanceQualified: '合格', // 稳定性考核是否合格_电阻测量
})
const belongStandardEquipment = ref('3')
const itemCategoryId = ref('')
const itemCategoryName = ref('')

const equipmentId = ref('') // 智能模型id
const dateArrStability = ref<string[]>([]) // 稳定性日期数组
const currentDate = ref('') // 要查询历史稳定性的日期
// ----------------------------------路由参数------------------------------------------------
if ($route.params && $route.params.type) {
  if ($route.params.id) {
    infoId.value = $route.params.id as string
  }
}

// ----------------------------------------核查数据----------------------------------------------
const radioMenus = ref([ // 标签内容
  { name: '直流电压', value: 'voltage' },
  { name: '电阻测量', value: 'resistance' },
])
const current = ref('') // 选择的tab 默认基本信息

const repeatabilityColumns = ref<TableColumn[]>([ // 重复性表头
  { text: '核查项目', value: 'params', align: 'center', required: true, type: 'text', width: '90' },
  { text: '核查点', value: 'checkPoint', align: 'center', required: true, type: 'text' },
  { text: '单位', value: 'unit', align: 'center', required: true, type: 'text' },
  {
    text: '示值',
    value: 'indicatingValue',
    align: 'center',
    required: false,
    width: '180',
    children: [
      { text: '1', width: '180', value: 'testValueOne', align: 'center', required: true, type: 'inputNumber' },
      { text: '2', width: '180', value: 'testValueTwo', align: 'center', required: true, type: 'inputNumber' },
      { text: '3', width: '180', value: 'testValueThree', align: 'center', required: true, type: 'inputNumber' },
      { text: '4', width: '180', value: 'testValueFour', align: 'center', required: true, type: 'inputNumber' },
      { text: '5', width: '180', value: 'testValueFive', align: 'center', required: true, type: 'inputNumber' },
      { text: '6', width: '180', value: 'testValueSix', align: 'center', required: true, type: 'inputNumber' },
    ],
  },
  { text: '算数平均值', value: 'averageValue', align: 'center', required: false, type: 'text' },
  { text: '标准偏差S(X)', value: 'standardDeviation', align: 'center', required: false, type: 'text' },
  { text: '相对重复性', value: 'relativeRepeatability', align: 'center', type: 'text', required: false },
])
const stabilityColumnsVoltage = ref<TableColumn[]>([ // 稳定性表头直流电压
  { text: '核查项目', value: 'params', align: 'center', required: true, type: 'text', width: '90' },
  { text: '核查点', value: 'checkPoint', align: 'center', required: true, type: 'text' },
  { text: '单位', value: 'unit', align: 'center', required: true, type: 'text' },
  {
    text: '示值',
    value: 'indicatingValue',
    align: 'center',
    required: false,
    width: '180',
    children: [
      { width: '180', text: '-', value: 'testValueOne', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueTwo', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueThree', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFour', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFive', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueSix', align: 'center', required: false, type: 'text', customHeader: true },
    ],
  },
  { text: '算数平均值', value: 'averageValue', align: 'center', required: false, type: 'text' },
  { text: '标准偏差S(X)', value: 'standardDeviation', align: 'center', required: false, type: 'text' },
  { text: '相对重复性', value: 'relativeRepeatability', align: 'center', type: 'text', required: false },
  { text: 'Urel', value: 'urel', align: 'center', type: 'text' },
  { text: '相对重复性是否小于相对扩展不确定度Urel', value: 'lessThan', align: 'center', type: 'text', required: false },
])
const stabilityColumnsResistance = ref<TableColumn[]>([ // 稳定性表头电阻测量
  { text: '核查项目', value: 'params', align: 'center', required: true, type: 'text', width: '90' },
  { text: '核查点', value: 'checkPoint', align: 'center', required: true, type: 'text' },
  { text: '单位', value: 'unit', align: 'center', required: true, type: 'text' },
  {
    text: '示值',
    value: 'indicatingValue',
    align: 'center',
    required: false,
    width: '180',
    children: [
      { width: '180', text: '-', value: 'testValueOne', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueTwo', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueThree', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFour', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFive', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueSix', align: 'center', required: false, type: 'text', customHeader: true },
    ],
  },
  { text: '算数平均值', value: 'averageValue', align: 'center', required: false, type: 'text' },
  { text: '标准偏差S(X)', value: 'standardDeviation', align: 'center', required: false, type: 'text' },
  { text: '相对重复性', value: 'relativeRepeatability', align: 'center', type: 'text', required: false },
  { text: 'Urel', value: 'urel', align: 'center', type: 'text' },
  { text: '相对重复性是否小于相对扩展不确定度Urel', value: 'lessThan', align: 'center', type: 'text', required: false },
])
const stabilityColumnsVoltageCheckDate = ref<TableColumn[]>([ // 查询历史日期--稳定性表头直流电压
  { text: '核查项目', value: 'params', align: 'center', required: true, type: 'text', width: '90' },
  { text: '核查点', value: 'checkPoint', align: 'center', required: true, type: 'text' },
  { text: '单位', value: 'unit', align: 'center', required: true, type: 'text' },
  {
    text: '示值',
    value: 'indicatingValue',
    align: 'center',
    required: false,
    width: '180',
    children: [
      { width: '180', text: '-', value: 'testValueOne', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueTwo', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueThree', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFour', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFive', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueSix', align: 'center', required: false, type: 'text', customHeader: true },
    ],
  },
  { text: '算数平均值', value: 'averageValue', align: 'center', required: false, type: 'text' },
  { text: '标准偏差S(X)', value: 'standardDeviation', align: 'center', required: false, type: 'text' },
  { text: '相对重复性', value: 'relativeRepeatability', align: 'center', type: 'text', required: false },
  { text: 'Urel', value: 'urel', align: 'center', type: 'text' },
  { text: '相对重复性是否小于相对扩展不确定度Urel', value: 'lessThan', align: 'center', type: 'text', required: false },
])
const stabilityColumnsResistanceCheckDate = ref<TableColumn[]>([ // 查询历史日期--稳定性表头电阻测量
  { text: '核查项目', value: 'params', align: 'center', required: true, type: 'text', width: '90' },
  { text: '核查点', value: 'checkPoint', align: 'center', required: true, type: 'text' },
  { text: '单位', value: 'unit', align: 'center', required: true, type: 'text' },
  {
    text: '示值',
    value: 'indicatingValue',
    align: 'center',
    required: false,
    width: '180',
    children: [
      { width: '180', text: '-', value: 'testValueOne', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueTwo', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueThree', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFour', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFive', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueSix', align: 'center', required: false, type: 'text', customHeader: true },
    ],
  },
  { text: '算数平均值', value: 'averageValue', align: 'center', required: false, type: 'text' },
  { text: '标准偏差S(X)', value: 'standardDeviation', align: 'center', required: false, type: 'text' },
  { text: '相对重复性', value: 'relativeRepeatability', align: 'center', type: 'text', required: false },
  { text: 'Urel', value: 'urel', align: 'center', type: 'text' },
  { text: '相对重复性是否小于相对扩展不确定度Urel', value: 'lessThan', align: 'center', type: 'text', required: false },
])
const repeatabilityTableLoading = ref(false) // 重复性表格loading
const stabilityTableLoading = ref(false) // 稳定性表格loading
const voltageList = ref<IList[]>([]) // 直流电压重复性
const voltageListStability = ref<IList[]>([]) // 直流电压稳定性
const resistanceList = ref<IList[]>([]) // 电阻测量重复性
const resistanceListStability = ref<IList[]>([]) // 电阻测量稳定性
const voltageListCheckDate = ref<IList[]>([]) // 直流电压重复性--查询历史日期
const voltageListStabilityCheckDate = ref<IList[]>([]) // 直流电压稳定性--查询历史日期
const resistanceListCheckDate = ref<IList[]>([]) // 电阻测量重复性--查询历史日期
const resistanceListStabilityCheckDate = ref<IList[]>([]) // 电阻测量稳定性--查询历史日期

// 获取配置详情
function fetchCheckItemDetail(equipmentIdParam: string, belongStandardEquipmentParam: string, itemCategoryIdParam: string, itemCategoryNameParam: string) {
  belongStandardEquipment.value = belongStandardEquipmentParam // 检校标准库
  itemCategoryId.value = itemCategoryIdParam // 核查分类id
  itemCategoryName.value = itemCategoryNameParam // 核查分类名称
  equipmentId.value = equipmentIdParam // 智能模型id
  const loading = ElLoading.service({
    lock: true,
    background: 'rgba(255, 255, 255, 0.8)',
  })
  const params = {
    equipmentId: equipmentIdParam, // 智能模型id
    belongStandardEquipment: belongStandardEquipment.value, // 检校标准装置code
    itemCategoryId: itemCategoryId.value, // 核查项分类id
    itemCategoryName: itemCategoryName.value, // 核查项分类名称
  }
  getCheckItemDetail(params).then((res) => {
    loading.close()
    if (!res.data) {
      emits('isConfigCheck', false)
    }
    else {
      handleData(res.data.checkItemDataElectricalSafetyList)
      fetchHistoryIndication() // 获取稳定性
    }
  })
}

// 处理重复性数据
function handleData(list: any, type = 'edit') {
  // 直流电压
  voltageList.value = list.filter((item: { params: string }) => item.params === '直流电压')
  // 直流电压
  voltageList.value = voltageList.value.map((e: any) => {
    return {
      ...e,
      editable: type === 'edit',
      averageValue: '', //	核查读数平均值(算数平均值)
      checkPoint: e.checkPoint, // 核查点
      dataId: e.id, //	核查数据管理基础信息表id
      checkType: '重复性',
      id: '', //	id,更新/删除使用参数
      lessThan: '', //	是否小于相对扩展不确定度Urel(0/1)
      params: e.params, // 核查项目(直接存字典value)
      previousCheck: '', //	历次核查Sn(x)(历次核查的标准偏差)(只稳定性有该值)
      qualified: '', //	稳定性考核是否合格
      relativeRepeatability: '', //	Sn(x)/核查读数平均值(相对重复性)
      standardDeviation: '', //	Sn(x)(标准偏差)
      testValueFive: undefined, //	核查读数5(示值)
      testValueFiveDate: '', //	核查读数5日期(稳定性)
      testValueFour: undefined, //	核查读数4(示值)
      testValueFourDate: '', //	核查读数4日期(稳定性)
      testValueOne: undefined, //	核查读数1(示值)
      testValueOneDate: '', //	核查读数1日期(稳定性)
      testValueSix: undefined, //	核查读数6(本次示值)
      testValueSixDate: '', //	核查读数6日期(稳定性)
      testValueThree: undefined, //	核查读数3(示值)
      testValueThreeDate: '', //	核查读数3日期(稳定性)
      testValueTwo: undefined, //	核查读数2(示值)
      testValueTwoDate: '', //	核查读数2日期(稳定性)
      unit: e.unit, //	单位(直接存字典value)
      urel: e.urel, //	UREL
      resolution: e.resolution, // 分辨力
      useRowPrecisionData: caculateDecimalDigits(e.resolution),
    }
  })
  // 直流电压稳定性
  voltageListStability.value = voltageList.value.map((e) => {
    return {
      editable: props.pageType !== 'detail',
      dataId: e.id, //	核查数据管理基础信息表id
      id: '', //	id,更新/删除使用参数
      params: e.params, // 核查项目
      checkPoint: e.checkPoint, // 核查点
      unit: e.unit, // 单位
      checkType: '稳定性',
      urel: e.urel,
      // averageValue: '', //	核查读数平均值(算数平均值)
      // relativeRepeatability: '', //	相对重复性
      // standardDeviation: '', //	Sn(x)(标准偏差)
      // lessThan: '', //	是否小于相对扩展不确定度Urel(0/1)
    }
  })

  // 电阻测量
  resistanceList.value = list.filter((item: { params: string }) => item.params === '电阻测量')
  // 电阻测量
  resistanceList.value = resistanceList.value.map((e: any) => {
    return {
      ...e,
      editable: type === 'edit',
      averageValue: '', //	核查读数平均值(算数平均值)
      checkPoint: e.checkPoint, // 核查点
      dataId: e.id, //	核查数据管理基础信息表id
      checkType: '重复性',
      id: '', //	id,更新/删除使用参数
      lessThan: '', //	是否小于相对扩展不确定度Urel(0/1)
      params: e.params, // 核查项目(直接存字典value)
      previousCheck: '', //	历次核查Sn(x)(历次核查的标准偏差)(只稳定性有该值)
      qualified: '', //	稳定性考核是否合格
      relativeRepeatability: '', //	Sn(x)/核查读数平均值(相对重复性)
      standardDeviation: '', //	Sn(x)(标准偏差)
      testValueFive: undefined, //	核查读数5(示值)
      testValueFiveDate: '', //	核查读数5日期(稳定性)
      testValueFour: undefined, //	核查读数4(示值)
      testValueFourDate: '', //	核查读数4日期(稳定性)
      testValueOne: undefined, //	核查读数1(示值)
      testValueOneDate: '', //	核查读数1日期(稳定性)
      testValueSix: undefined, //	核查读数6(本次示值)
      testValueSixDate: '', //	核查读数6日期(稳定性)
      testValueThree: undefined, //	核查读数3(示值)
      testValueThreeDate: '', //	核查读数3日期(稳定性)
      testValueTwo: undefined, //	核查读数2(示值)
      testValueTwoDate: '', //	核查读数2日期(稳定性)
      unit: e.unit, //	单位(直接存字典value)
      urel: e.urel, //	UREL
      resolution: e.resolution, // 分辨力
      useRowPrecisionData: caculateDecimalDigits(e.resolution),
    }
  })

  // 电阻测量稳定性
  resistanceListStability.value = resistanceList.value.map((e) => {
    return {
      editable: props.pageType !== 'detail',
      dataId: e.id, //	核查数据管理基础信息表id
      id: '', //	id,更新/删除使用参数
      params: e.params, // 核查项目
      checkPoint: e.checkPoint, // 核查点
      unit: e.unit, // 单位
      checkType: '稳定性',
      urel: e.urel,
      // averageValue: '', //	核查读数平均值(算数平均值)
      // relativeRepeatability: '', //	相对重复性
      // standardDeviation: '', //	Sn(x)(标准偏差)
      // lessThan: '', //	是否小于相对扩展不确定度Urel(0/1)
    }
  })

  solveRadioMenus(voltageList.value, resistanceList.value) // 控制tab
}

// 处理tab
function solveRadioMenus(voltageList: Array<any>, resistanceList: Array<any>) {
  if (voltageList && !voltageList.length) {
    const index = radioMenus.value.findIndex(item => item.value === 'voltage')
    if (index !== -1) {
      radioMenus.value.splice(index, 1)
    }
  }
  if (resistanceList && !resistanceList.length) {
    const index = radioMenus.value.findIndex(item => item.value === 'resistance')
    if (index !== -1) {
      radioMenus.value.splice(index, 1)
    }
  }
  current.value = radioMenus.value.length > 0 ? radioMenus.value[0].value : ''
}

// 点击生成结果处理
const createResult = (type: 'repeatability' | 'stability') => {
  if (current.value === 'voltage' && !voltageList.value.length) { // 直流电压
    ElMessage.warning('直流电压未配置重复性,请检查')
    return false
  }
  if (current.value === 'resistance' && !resistanceList.value.length) { // 电阻测量
    ElMessage.warning('电阻测量未配置重复性,请检查')
    return false
  }
  // 校验重复性计算表格数值
  if (type === 'repeatability') {
    if (current.value === 'voltage' && !useCheckList(voltageList.value, repeatabilityColumns.value, '直流电压重复性')) {
      return false
    }
    if (current.value === 'resistance' && !useCheckList(resistanceList.value, repeatabilityColumns.value, '电阻测量重复性')) {
      return false
    }
  }

  if (type === 'stability') {
    if (current.value === 'voltage' && `${voltageList.value[0].averageValue}` === '') { // 直流电压
      ElMessage.warning('请先计算直流电压重复性')
      return false
    }
    if (current.value === 'resistance' && `${resistanceList.value[0].averageValue}` === '') { // 电阻测量
      ElMessage.warning('请先计算电阻测量重复性')
      return false
    }
  }
  let checkDataElectricalSafetyListParams: any // 要传的重复或者稳定性参数
  if (current.value === 'voltage') { // 直流电压
    checkDataElectricalSafetyListParams = type === 'repeatability' ? voltageList.value : voltageListStability.value
  }
  else if (current.value === 'resistance') { // 电阻测量
    checkDataElectricalSafetyListParams = type === 'repeatability' ? resistanceList.value : resistanceListStability.value
  }

  const params = {
    belongStandardEquipment: belongStandardEquipment.value, // 检校标准库
    checkDataElectricalSafetyList: checkDataElectricalSafetyListParams.map((item: { lessThan: string }) => {
      return {
        ...item,
        lessThan: item.lessThan === '是' ? '1' : item.lessThan === '否' ? '0' : '', // 是否小于相对扩展不确定度Urel(0/1)
      }
    }),
    itemCategoryId: itemCategoryId.value, // 核查项分类id
    itemCategoryName: itemCategoryName.value, // 核查项分类id
  }
  repeatabilityTableLoading.value = type === 'repeatability' // 重复性表loading
  stabilityTableLoading.value = type === 'stability' // 稳定性表loading
  calculateHandle(params).then((res) => {
    if (current.value === 'voltage') { // 直流电压
      const result = res.data.map((item: any) => {
        return {
          ...item,
          editable: props.pageType !== 'detail',
        }
      })
      if (type === 'repeatability') { // 重复性
        voltageList.value = result
        voltageListStability.value = voltageListStability.value.map((item, index: number) => {
          return {
            ...item,
            testValueSix: voltageList.value[index].averageValue, //	核查读数6(本次重复性示值算术平均值)
            testValueSixDate: props.checkDate, //	核查读数6日期(本次核查日期)
          }
        })
      }
      else { // 稳定性
        voltageListStability.value = result.map((item: { lessThan: string | number }) => {
          return {
            ...item,
            lessThan: `${item.lessThan}` === '1' ? '是' : '否',
          }
        })
      }
    }
    else if (current.value === 'resistance') { // 电阻测量
      const result = res.data.map((item: any) => {
        return {
          ...item,
          editable: props.pageType !== 'detail',
        }
      })
      if (type === 'repeatability') { // 重复性
        resistanceList.value = result
        resistanceListStability.value = resistanceListStability.value.map((item, index: number) => {
          return {
            ...item,
            testValueSix: resistanceList.value[index].averageValue, //	核查读数6(本次重复性示值算术平均值)
            testValueSixDate: props.checkDate, //	核查读数6日期(本次核查日期)
          }
        })
      }
      else { // 稳定性
        resistanceListStability.value = result.map((item: { lessThan: string | number }) => {
          return {
            ...item,
            lessThan: `${item.lessThan}` === '1' ? '是' : '否',
          }
        })
      }
    }
    repeatabilityTableLoading.value = false
    stabilityTableLoading.value = false
  }).catch(() => {
    repeatabilityTableLoading.value = false
    stabilityTableLoading.value = false
  })
}
// ------------------------------------------------------------------------------------------
// 处理详情数据
const solveGetDetailData = (responseListParams: any) => {
  const responseList = responseListParams.map((item: any) => {
    return {
      ...item,
      testValueOne: `${item.testValueOne}` === '' ? undefined : item.testValueOne, //	核查标准示值1
      testValueTwo: `${item.testValueTwo}` === '' ? undefined : item.testValueTwo, //	核查标准示值2
      testValueThree: `${item.testValueThree}` === '' ? undefined : item.testValueThree, //	核查标准示值3
      testValueFour: `${item.testValueFour}` === '' ? undefined : item.testValueFour, //	核查标准示值4
      testValueFive: `${item.testValueFive}` === '' ? undefined : item.testValueFive, //	核查标准示值5
      testValueSix: `${item.testValueSix}` === '' ? undefined : item.testValueSix, //	核查标准示值6
    }
  })
  const voltageList = responseList.filter((item: { params: string; checkType: string }) => item.params === '直流电压' && item.checkType === '重复性').map((item: any) => {
    return {
      ...item,
      editable: props.pageType !== 'detail',
      resolution: item.resolution, // 分辨力
      useRowPrecisionData: caculateDecimalDigits(item.resolution),
    }
  })
  const resistanceList = responseList.filter((item: { params: string ; checkType: string }) => item.params === '电阻测量' && item.checkType === '重复性').map((item: any) => {
    return {
      ...item,
      editable: props.pageType !== 'detail',
      resolution: item.resolution, // 分辨力
      useRowPrecisionData: caculateDecimalDigits(item.resolution),
    }
  })

  const voltageListStability = responseList.filter((item: { params: string ; checkType: string }) => item.params === '直流电压' && item.checkType === '稳定性').map((item: any) => {
    return {
      ...item,
      lessThan: `${item.lessThan}` === '1' ? '是' : `${item.lessThan}` === '0' ? '否' : item.lessThan,
    }
  })
  const resistanceListStability = responseList.filter((item: { params: string; checkType: string }) => item.params === '电阻测量' && item.checkType === '稳定性').map((item: any) => {
    return {
      ...item,
      lessThan: `${item.lessThan}` === '1' ? '是' : `${item.lessThan}` === '0' ? '否' : item.lessThan,
    }
  })

  solveRadioMenus(voltageList, resistanceList) // 控制tab

  return {
    tempVoltageList: voltageList,
    tempResistanceList: resistanceList,
    tempVoltageListStability: voltageListStability,
    tempResistanceListStability: resistanceListStability,
  }
}
// 获取详情
function fetchInfo(id = '') {
  const loading = ElLoading.service({
    lock: true,
    background: 'rgba(255, 255, 255, 0.8)',
  })
  getInfo({ id: id || infoId.value }).then((res) => {
    form.value = { ...res.data }
    equipmentId.value = res.data.equipmentId
    const { tempVoltageList, tempResistanceList, tempVoltageListStability, tempResistanceListStability } = solveGetDetailData(res.data.checkDataElectricalSafetyList)
    if (id !== '') { // 查询的日期获得的数据
      voltageListCheckDate.value = tempVoltageList// 直流电压重复性查询数据
      voltageListStabilityCheckDate.value = tempVoltageListStability// 直流电压稳定性查询数据
      resistanceListCheckDate.value = tempResistanceList// 电阻测量重复性查询数据
      resistanceListStabilityCheckDate.value = tempResistanceListStability // 电阻测量稳定性查询数据
    }
    else {
      voltageList.value = tempVoltageList
      resistanceList.value = tempResistanceList
      voltageListStability.value = tempVoltageListStability
      resistanceListStability.value = tempResistanceListStability
    }

    nextTick(() => {
      if (id !== '') { // 稳定性表头---查询历史的稳定性日期数据
        stabilityColumnsVoltageCheckDate.value[3].children = [
          { width: '180', text: '-', value: 'testValueOne', align: 'center', required: false, type: 'text', customHeader: true },
          { width: '180', text: '-', value: 'testValueTwo', align: 'center', required: false, type: 'text', customHeader: true },
          { width: '180', text: '-', value: 'testValueThree', align: 'center', required: false, type: 'text', customHeader: true },
          { width: '180', text: '-', value: 'testValueFour', align: 'center', required: false, type: 'text', customHeader: true },
          { width: '180', text: '-', value: 'testValueFive', align: 'center', required: false, type: 'text', customHeader: true },
          { width: '180', text: '-', value: 'testValueSix', align: 'center', required: false, type: 'text', customHeader: true },
        ]
        stabilityColumnsResistanceCheckDate.value[3].children = [
          { width: '180', text: '-', value: 'testValueOne', align: 'center', required: false, type: 'text', customHeader: true },
          { width: '180', text: '-', value: 'testValueTwo', align: 'center', required: false, type: 'text', customHeader: true },
          { width: '180', text: '-', value: 'testValueThree', align: 'center', required: false, type: 'text', customHeader: true },
          { width: '180', text: '-', value: 'testValueFour', align: 'center', required: false, type: 'text', customHeader: true },
          { width: '180', text: '-', value: 'testValueFive', align: 'center', required: false, type: 'text', customHeader: true },
          { width: '180', text: '-', value: 'testValueSix', align: 'center', required: false, type: 'text', customHeader: true },
        ]
        fetchHistoryIndication(currentDate.value) // 获取稳定性
      }
      else { // 正常核查数据
        stabilityColumnsVoltage.value = handleDetailTableTableHead(stabilityColumnsVoltage.value, voltageListStability.value, 3)
        stabilityColumnsResistance.value = handleDetailTableTableHead(stabilityColumnsResistance.value, resistanceListStability.value, 3)
      }
    })
    form.value.voltageQualified = `${res.data.checkDataElectricalSafetyList[0].qualified}` === '1' ? '合格' : '不合格'
    form.value.resistanceQualified = `${res.data.checkDataElectricalSafetyList[0].qualified}` === '1' ? '合格' : '不合格'
    if (props.pageType === 'edit' || props.pageType === 'detail') {
      fetchHistoryIndication() // 重新拉取稳定性日期
    }
    loading.close()
  })
}

/**
 * 获取稳定性示值
 * @param date 查询日期
 */
function fetchHistoryIndication(date = '') {
  const params = {
    belongStandardEquipment: belongStandardEquipment.value,	// 检校标准库(字典code)
    checkDate: date || props.checkDate!,	// 核查日期
    checkParam: '',	// 核查参数((直流稳压电源-直接电流(间接测量))
    conclusion: '合格',	// 结论
    equipmentId: equipmentId.value,	// 被核查智能模型id
    params: current.value === 'voltage' ? '直流电压' : '电阻测量',	// 核查项目
    stabilityExamine: '1',	// 是否用于稳定性考核(1/0)
    standardEquipmentId: props.selectStandardId!,	// 被核查标准库id
  }
  if (props.selectStandardId && equipmentId.value) {
    stabilityTableLoading.value = true
    getHistoryIndication(params).then((res) => {
      if (date === '') { // 正常核查数据
        const num = (props.pageType === 'edit' || props.pageType === 'detail') ? 5 : 4
        // 直流电压
        voltageListStability.value = voltageListStability.value.map((item) => {
          clearDateValue(item)
          const { itemData, columnsData } = solveHistoryIndicationTableData(res.data.data, item, stabilityColumnsVoltage.value, num, 3, '3')
          stabilityColumnsVoltage.value = columnsData
          return item = itemData
        })
        voltageListStability.value = handleSaveDateParams(stabilityColumnsVoltage.value, voltageListStability.value, 3)
        // 电阻测量
        resistanceListStability.value = resistanceListStability.value.map((item) => {
          clearDateValue(item)
          const { itemData, columnsData } = solveHistoryIndicationTableData(res.data.data, item, stabilityColumnsResistance.value, num, 3, '3')
          stabilityColumnsResistance.value = columnsData
          return item = itemData
        })
        resistanceListStability.value = handleSaveDateParams(stabilityColumnsResistance.value, resistanceListStability.value, 3)
      }
      else {
        initColumnsCheckDate()
        if (voltageList.value && voltageList.value.length) {
          // 直流电压
          voltageListStabilityCheckDate.value = voltageListStabilityCheckDate.value.map((item) => {
            clearDateValue(item)
            const { itemData, columnsData } = solveHistoryIndicationTableData(res.data.data, item, stabilityColumnsVoltageCheckDate.value, 5, 3, '3')
            stabilityColumnsVoltageCheckDate.value = columnsData
            return item = itemData
          })
          voltageListStabilityCheckDate.value = handleSaveDateParams(stabilityColumnsVoltageCheckDate.value, voltageListStabilityCheckDate.value, 3)
        }
        if (resistanceList.value && resistanceList.value.length) {
          // 电阻测量
          resistanceListStabilityCheckDate.value = resistanceListStabilityCheckDate.value.map((item) => {
            clearDateValue(item)
            const { itemData, columnsData } = solveHistoryIndicationTableData(res.data.data, item, stabilityColumnsResistanceCheckDate.value, 5, 3, '3')
            stabilityColumnsResistanceCheckDate.value = columnsData
            return item = itemData
          })
          resistanceListStabilityCheckDate.value = handleSaveDateParams(stabilityColumnsResistanceCheckDate.value, resistanceListStabilityCheckDate.value, 3)
        }
      }
      stabilityTableLoading.value = false
    }).catch(() => { stabilityTableLoading.value = false })
  }
}

// 保存之前的校验
function checkList() {
  // 新建核查数据的时候,在保存之前要先校验一下本次核查日期有没有数据,没有不允许保存
  if (voltageList.value.length && `${voltageList.value[0].averageValue}` === '') { // 直流电压
    ElMessage.warning('请计算直流电压重复性')
    return false
  }
  if (resistanceList.value.length && `${resistanceList.value[0].averageValue}` === '') { // 电阻测量
    ElMessage.warning('请计算电阻测量重复性')
    return false
  }
  // if (current.value === 'voltage' && `${voltageListStability.value[0].lessThan}` === '') { // 直流电压
  //   ElMessage.warning('请计算直流电压稳定性')
  //   return false
  // }
  // if (current.value === 'resistance' && `${resistanceListStability.value[0].lessThan}` === '') { // 电阻测量
  //   ElMessage.warning('请计算电阻测量稳定性')
  //   return false
  // }
  return true
}

// =======================点击表头日期查询历史稳定性数据===================
// 点击表头
const handleClickHeader = (val: any, checkDateDetailId: string) => {
  dateArrStability.value = ['核查数据', val.label]
  fetchInfo(checkDateDetailId) // 获取此次历史日期的详情
}

// 日期变化
const handleChangeRadio = (date: string) => {
  currentDate.value = date
}

// -------------------------------------钩子-----------------------------------------------------
// 统计日期
const dateCount = (columns: TableColumn[]) => {
  let dateNum = 0 // 稳定性表格有几个日期

  // 统计有几个日期
  columns[3].children?.forEach((item) => {
    if (item.text !== '-' && item.text !== '') {
      dateNum += 1
    }
  })
  return dateNum
}

// 监听稳定性表格--判断稳定性考核是否合格
watch([() => voltageListStability.value, () => resistanceListStability.value], (newValue: any) => {
  console.log('监听稳定性表格')

  if (newValue[0] && newValue[0].length) { // 直流电压
    const result = newValue[0].every((item: { lessThan: string }) => {
      return item.lessThan === '是'
    })
    const dateNum = dateCount(stabilityColumnsVoltage.value)
    form.value.voltageQualified = dateNum < 4 ? '合格' : result ? '合格' : '不合格'
  }

  if (newValue[1] && newValue[1].length) { // 电阻测量
    const result = newValue[1].every((item: { lessThan: string }) => {
      return item.lessThan === '是'
    })
    const dateNum = dateCount(stabilityColumnsResistance.value)
    form.value.resistanceQualified = dateNum < 4 ? '合格' : result ? '合格' : '不合格'
  }
}, { deep: true, immediate: true })

/**
 * 初始化表头
 * @param soveLastColumnDate 是否处理最后一列
 */
function initColumns() {
  if (voltageList.value && voltageList.value.length) {
    stabilityColumnsVoltage.value[3].children = [
      { width: '180', text: '-', value: 'testValueOne', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueTwo', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueThree', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFour', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFive', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueSix', align: 'center', required: false, type: 'text', customHeader: true },
    ]
  }

  if (resistanceList.value && resistanceList.value.length) {
    stabilityColumnsResistance.value[3].children = [
      { width: '180', text: '-', value: 'testValueOne', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueTwo', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueThree', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFour', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueFive', align: 'center', required: false, type: 'text', customHeader: true },
      { width: '180', text: '-', value: 'testValueSix', align: 'center', required: false, type: 'text', customHeader: true },
    ]
  }
  if (props.pageType === 'add') {
    const index = stabilityColumnsVoltage.value.findIndex(item => item.text === '示值')
    if (index !== -1) {
      stabilityColumnsVoltage.value[index].children![5].text = props.checkDate! // 最后一列的表头日期
    }
    const indexWorst = stabilityColumnsResistance.value.findIndex(item => item.text === '示值')
    if (index !== -1) {
      stabilityColumnsResistance.value[indexWorst].children![5].text = props.checkDate! // 最后一列的表头日期
    }
  }
}

/**
 * 初始化CheckDate表头
 * @param soveLastColumnDate 是否处理最后一列
 */
function initColumnsCheckDate() {
  const tempColumn = [
    { width: '180', text: '-', value: 'testValueOne', align: 'center', required: false, type: 'text', customHeader: true },
    { width: '180', text: '-', value: 'testValueTwo', align: 'center', required: false, type: 'text', customHeader: true },
    { width: '180', text: '-', value: 'testValueThree', align: 'center', required: false, type: 'text', customHeader: true },
    { width: '180', text: '-', value: 'testValueFour', align: 'center', required: false, type: 'text', customHeader: true },
    { width: '180', text: '-', value: 'testValueFive', align: 'center', required: false, type: 'text', customHeader: true },
    { width: '180', text: '-', value: 'testValueSix', align: 'center', required: false, type: 'text', customHeader: true },
  ] as any
  if (voltageList.value && voltageList.value.length) {
    stabilityColumnsVoltageCheckDate.value[3].children = [...tempColumn]
  }
  if (resistanceList.value && resistanceList.value.length) {
    stabilityColumnsResistanceCheckDate.value[3].children = [...tempColumn]
  }
}

// 监听核查日期变化
watch(() => props.checkDate, (newValue) => {
  initColumns()
  nextTick(() => {
    fetchHistoryIndication() // 重新拉取稳定性日期
  })
}, { immediate: true })

watch(() => props.pageType, (newValue) => {
  if (newValue === 'detail') {
    voltageList.value = voltageList.value.map((item: any) => {
      return {
        ...item,
        editable: props.pageType !== 'detail',
      }
    })
    resistanceList.value = resistanceList.value.map((item: any) => {
      return {
        ...item,
        editable: props.pageType !== 'detail',
      }
    })
  }
}, { immediate: true })

onMounted(async () => {
  belongStandardEquipment.value = $route.query.belongStandardEquipment as string // 检校标准库
  itemCategoryId.value = $route.query.itemCategoryId as string // 核查项分类id
  itemCategoryName.value = $route.query.itemCategoryName as string // 核查项分类名称
  if (props.pageType !== 'add') {
    fetchInfo()
  }
})
defineExpose({ checkList, fetchCheckItemDetail, form, voltageList, resistanceList, voltageListStability, resistanceListStability })
</script>

<template>
  <!-- 核查数据 -->
  <detail-block :title="dateArrStability.length > 1 ? ' ' : '核查数据'" :title-menus="dateArrStability" @handle-change-radio="handleChangeRadio">
    <div style="display: flex;justify-content: space-between;">
      <el-radio-group v-model="current" style="margin-bottom: 20px;">
        <el-radio-button v-for="item in radioMenus" :key="item.value" :label="item.value">
          {{ item.name }}
        </el-radio-button>
      </el-radio-group>
    </div>
    <div style="display: flex;justify-content: space-between;align-items: center;">
      <h5>核查类型--重复性</h5>
      <el-button v-if="pageType !== 'detail'" type="primary" @click="createResult('repeatability')">
        生成结果处理
      </el-button>
    </div>
    <multi-table
      v-show="currentDate === '核查数据' || currentDate === ''"
      v-loading="repeatabilityTableLoading"
      :table-data="current === 'voltage' ? voltageList : resistanceList"
      :table-header="repeatabilityColumns"
      :merge-rows="[]"
      :need-index="true"
      max-height="300"
    />
    <!-- 历史日期重复性数据 -->
    <multi-table
      v-show="currentDate !== '核查数据' && currentDate !== ''"
      v-loading="repeatabilityTableLoading"
      :table-data="current === 'voltage' ? voltageListCheckDate : resistanceListCheckDate"
      :table-header="repeatabilityColumns"
      :merge-rows="[]"
      :need-index="true"
      max-height="300"
    />

    <div style="display: flex;justify-content: space-between;align-items: center;">
      <h5>核查类型--稳定性</h5>
      <el-button v-if="pageType !== 'detail'" type="primary" @click="createResult('stability')">
        生成结果处理
      </el-button>
    </div>
    <multi-table
      v-show="currentDate === '核查数据' || currentDate === ''"
      v-loading="stabilityTableLoading"
      :table-data="current === 'voltage' ? voltageListStability : resistanceListStability"
      :table-header="current === 'voltage' ? stabilityColumnsVoltage : stabilityColumnsResistance"
      :merge-rows="[]"
      :need-index="true"
      max-height="500"
      @handle-click-header="handleClickHeader"
    />

    <multi-table
      v-show="currentDate !== '核查数据' && currentDate !== ''"
      v-loading="stabilityTableLoading"
      :table-data="current === 'voltage' ? voltageListStabilityCheckDate : resistanceListStabilityCheckDate"
      :table-header="current === 'voltage' ? stabilityColumnsVoltageCheckDate : stabilityColumnsResistanceCheckDate"
      :merge-rows="[]"
      :need-index="true"
      max-height="500"
      @handle-click-header="handleClickHeader"
    />
    <!-- 稳定性考核是否合格 -->
    <el-form
      style="margin-top: 20px;"
      :model="form"
      label-width="160"
      label-position="right"
    >
      <el-row :gutter="24">
        <el-col :span="12">
          <el-form-item v-if="current === 'voltage'" label="稳定性考核是否合格(直流电压):">
            <el-input v-model="form.voltageQualified" class="full-width-input" disabled placeholder="稳定性考核是否合格" />
          </el-form-item>
          <el-form-item v-if="current === 'resistance'" label="稳定性考核是否合格(电阻测量):">
            <el-input v-model="form.resistanceQualified" class="full-width-input" disabled placeholder="稳定性考核是否合格" />
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
  </detail-block>

  <!-- 保存核查记录  -->
  <save-check-record ref="saveCheckRecordRef" />
</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>