Newer
Older
xc-business-system / src / views / equipement / standard / book / components / dataAnalysis.vue
dutingting on 29 Nov 32 KB 解决冲突
<!-- 标准库台账信息详情 核查数据分析 -->
<script name="StandardBookCheckDataAnalysis" lang="ts" setup>
import dayjs from 'dayjs'
import { ElMessage } from 'element-plus'
import { getCheckItemDetail, getEquipmentList } from '@/api/equipment/standard/book'
import { getHistoryIndication, getInfo } from '@/api/equipment/standard/checkData'
import { getDictByCode } from '@/api/system/dict'
import { uniqueArray } from '@/utils/Array'
import { getRangeAllTime } from '@/utils/date'
const $route = useRoute()
const listQuery = ref({
  id: '',
  config: '',
  ponit: [] as any[],
  startTime: '',
  endTime: '',
  type: '',
  nominal: '',
})
const loading = ref(true)
const isFirst = ref(true)
const dateRange = ref<any[]>([])
watch(() => dateRange.value, (newVal) => {
  listQuery.value.startTime = ''
  listQuery.value.endTime = ''
  if (Array.isArray(newVal)) {
    if (newVal.length) {
      listQuery.value.startTime = `${newVal[0]} 00:00:00`
      listQuery.value.endTime = `${newVal[1]} 23:59:59`
    }
  }
})

// 获取查询条件数据
// 第一级下拉框使用的数据
const deviceList = ref<any[]>([])
// 第二级下拉框使用的数据
const configList = ref<any[]>([])
const allConfigData = ref<any[]>([])
const TypeList = ref<any[]>([])
const nominalList = ref<any[]>([])
// 第三级下拉框使用的数据
const ponitList = ref<any[]>([])
const standardList = ref<any[]>([])// 检校标准库
const standardMap = ref({}) as any// 检校标准库
const standardCode = ref('')
const standardMapConfigDict = ref<{ [key: string]: string }>({
  1: 'checkItemDataCalibratorList', // 多功能校准源
  2: 'checkItemDataDcPowerList', // 直流稳压电源
  3: 'checkItemDataElectricalSafetyList', // 多功能电气安全
  4: 'checkItemDataPistonGaugeList', // 0.02活塞
  5: 'checkItemDataResistanceThermometerList', // 二等铂
  8: 'checkItemDataETwoList', // E2等砝码
  9: 'checkItemDataSpectrumAnalyzerList', // 频谱分析仪
  10: 'checkItemDataSignalGeneratorList', // 信号发生器
  11: 'checkItemDataMicrowaveAttenuationList', // 微博衰减
  12: 'checkItemDataFrequencyStabilityList', // 短稳
  13: 'checkItemDataOscilloscopeList', // 示波器
  14: 'checkItemDataCesiumAtomList', // 铯原子
  15: 'checkItemDataLowerPowerList', // 小功率
  16: 'checkItemDataLowFrequencySignalList', // 低频信号源
  17: 'checkItemDataSParamList', // S参数
  18: 'checkItemDataDistortionFactorList', // 失真度
})
const fetchData = async () => {
  // 检校标准库
  const res = await getDictByCode('bizStandardEquipmentType')
  res.data.forEach((item: { value: string; name: string }) => {
    standardMap.value[`${item.name}`] = item.value
  })
  standardList.value = res.data
  standardCode.value = standardMap.value[$route.query.standardName as string] // 检校标准库code
  getEquipmentList({
    limit: 99999,
    offset: 1,
    standardId: $route.query.standardId! as string,
    standardName: $route.query.standardName! as string,
  }).then((res) => {
    deviceList.value = res.data.rows
    // 设置默认选中
    if (deviceList.value.length) {
      listQuery.value.id = deviceList.value[1].id
    }
    else {
      loading.value = false
    }
  })
}
fetchData()
// 图表数据

// 核查数据变化趋势
const xAxisData = ref<any[]>([])
const dataTrend = ref<any[]>([])
// 核查结果分析
const data = ref<any[]>([])

// 监听智能模型修改二三级下拉框
watch(() => listQuery.value.id, (newVal) => {
  listQuery.value.config = ''
  listQuery.value.type = ''
  listQuery.value.nominal = ''
  listQuery.value.ponit = []
  allConfigData.value = []
  TypeList.value = []
  configList.value = []
  ponitList.value = []
  nominalList.value = []
  if (newVal) {
    const data = deviceList.value.filter((item: any) => item.id === newVal)[0] || {}
    console.log(data, '选中的智能模型')
    console.log(standardCode.value, 'standardCode.value')
    if (standardCode.value === '4') {
      TypeList.value = uniqueArray(deviceList.value.filter((item: any) => item.id === newVal).map((item: any) => item.itemCategoryName))
      if (isFirst.value) {
        listQuery.value.type = TypeList.value[0]
      }
      return
    }
    // 获取配置项
    getCheckItemDetail({
      equipmentId: data.id, // 智能模型id
      belongStandardEquipment: standardMap.value[$route.query.standardName as string], // 检校标准装置code
      itemCategoryId: data.itemCategoryId, // 核查项分类id
      itemCategoryName: data.itemCategoryName, // 核查项分类名称
    }).then((res) => {
      console.log(res.data, '123')
      // 配置项
      let data = res.data[standardMapConfigDict.value[standardMap.value[$route.query.standardName as string]]]
      console.log(data, '检定项数据')
      if (!data) {
        // 未配置
        allConfigData.value = []
        configList.value = []
        loading.value = false
        isFirst.value = false
        return
      }
      if (standardCode.value === '11') {
        data = data.map((item: any) => ({ ...item, params: item.gearType }))
      }
      if (standardCode.value === '12') {
        data = data.map((item: any) => ({ ...item, params: item.checkSystem }))
      }
      allConfigData.value = JSON.parse(JSON.stringify(data))
      configList.value = uniqueArray(data.map((item: any) => item.params))

      if (standardCode.value === '8') {
        allConfigData.value = allConfigData.value.map((item: any) => ({ ...item, params: 'E2核查' }))
        listQuery.value.config = 'E2核查'
        configList.value[0] = 'E2核查'
      }
      // if (standardCode.value === '15' || standardCode.value === '18' || standardCode.value === '14') {
      //   listQuery.value.config = configList.value[0]
      // }
      if (standardCode.value === '1') {
        TypeList.value = uniqueArray(allConfigData.value.map((item: any) => item.testType))
        if (isFirst.value) {
          listQuery.value.type = TypeList.value[0]
          loading.value = !!TypeList.value.length
        }
        return
      }
      // 设置默认选中
      if (isFirst.value) {
        listQuery.value.config = configList.value[0]
        loading.value = !!configList.value.length
      }
    })
  }
})
watch(() => listQuery.value.type, (newVal) => {
  listQuery.value.config = ''
  listQuery.value.ponit = []
  configList.value = []
  ponitList.value = []
  if (newVal) {
    if (standardCode.value === '4') {
      const data = deviceList.value.filter((item: any) => item.id === listQuery.value.id && item.itemCategoryName === newVal)[0]
      getCheckItemDetail({
        equipmentId: listQuery.value.id, // 智能模型id
        belongStandardEquipment: standardMap.value[$route.query.standardName as string], // 检校标准装置code
        itemCategoryId: data.itemCategoryId, // 核查项分类id
        itemCategoryName: data.itemCategoryName, // 核查项分类名称
      }).then((res) => {
        if (newVal === '压力值') {
          ponitList.value = uniqueArray(res.data.checkItemDataPistonGaugeList.map((item: any) => `${item.checkPoint}${item.unit}`))
          if (isFirst.value) {
            listQuery.value.ponit = ponitList.value
            loading.value = !!ponitList.value.length
            dateRange.value = [dayjs().subtract(7, 'day').format('YYYY-MM-DD'), dayjs().format('YYYY-MM-DD')]
            listQuery.value.startTime = dayjs().subtract(7, 'day').format('YYYY-MM-DD')
            listQuery.value.endTime = dayjs().format('YYYY-MM-DD')
            searchList()
            setTimeout(() => {
              isFirst.value = false
            }, 2000)
          }
        }
        else {
          allConfigData.value = res.data.checkItemDataPistonGaugeList
          configList.value = uniqueArray(res.data.checkItemDataPistonGaugeList.map((item: any) => item.checkItem === '1' ? '直流电压测量误差' : '直流电流测量误差'))
          if (isFirst.value) {
            listQuery.value.config = configList.value[0]
            loading.value = !!configList.value.length
          }
        }
      })

      return
    }
    const data = allConfigData.value.filter((item: any) => item.testType === newVal)
    configList.value = uniqueArray(data.map((item: any) => item.params))
    // 设置默认选中
    if (isFirst.value) {
      listQuery.value.config = configList.value[0]
      loading.value = !!configList.value.length
    }
  }
})
// 监听配置项
watch(() => listQuery.value.config, (newVal) => {
  listQuery.value.ponit = []
  listQuery.value.nominal = ''
  nominalList.value = []
  if (newVal) {
    let data = allConfigData.value.filter((item: any) => item.params === newVal)
    if (standardCode.value === '1') {
      data = allConfigData.value.filter((item: any) => item.params === newVal && item.testType === listQuery.value.type)
    }
    console.log(data, '第三下拉框')
    if (standardCode.value === '16' || standardCode.value === '2' || standardCode.value === '5' || standardCode.value === '3' || standardCode.value === '8' || standardCode.value === '15' || standardCode.value === '1' || standardCode.value === '18' || standardCode.value === '11' || standardCode.value === '10' || standardCode.value === '9' || standardCode.value === '14' || standardCode.value === '13' || standardCode.value === '12' || standardCode.value === '17') {
      let attribute = {} as { [key: string]: any }
      let unit = {} as { [key: string]: any }
      attribute = {
        // 多功能校准源
        1: {
          DCV: 'checkPoint',
          ACV: 'checkPoint',
          DCI: 'checkPoint',
          ACI: 'checkPoint',
          R: 'checkPoint',
        },
        // 直流稳压
        2: {
          '直流电压': 'checkPoint',
          '电源效应和负载效应': 'checkPoint',
          '直接电流(直接测量)': 'checkPoint',
          '直接电流(间接测量)': 'checkPoint',
          '纹波电压': 'checkPoint',
        },
        // 多动能电气安全
        3: {
          直流电压: 'checkPoint',
          电阻测量: 'checkPoint',
        },
        // 二等铂
        5: {
          温度值: 'checkPoint',
          RTP值: 'checkPoint',
          绝缘电阻表校准: 'checkPoint',
          测温仪电阻核查: 'checkPoint',
        },
        // E2等砝码
        8: {
          E2核查: 'checkPoint',
        },
        // 频谱分析仪
        9: {
          频率: 'checkPoint',
          功率: 'checkPoint',
          相对电平: 'checkPoint',
        },
        // 信号发生器
        10: {
          频率: 'checkPoint',
          功率: 'checkPoint',
          相对电平: 'checkPoint',
          调幅度: 'checkPoint',
          调频频偏: 'checkPoint',
          调相相偏: 'checkPoint',
          谐波: 'checkPoint',
        },
        // 微博衰减
        11: {
          '1dB档位': 'frequency',
          '10dB档位': 'frequency',
        },
        // 短稳
        12: {
          '双混频时差法-5110/5120': 'outputFrequency',
          '差拍法-10830': 'outputFrequency',
          '双混频时差法-BM1308-15': 'outputFrequency',
        },
        // 示波器
        13: {
          '时标': 'checkPoint',
          '方波电压(50Ω)': 'checkPoint',
          '方波电压(1MΩ)': 'checkPoint',
          '直流电压(50Ω)': 'checkPoint',
          '直流电压(1MΩ)': 'checkPoint',
          '输入阻抗': 'checkPoint',
          '稳幅正弦信号电压平坦度': 'checkPoint',
          '上升时间': 'checkPoint',
        },
        // 铯原子
        14: {
          铯原子频标核查: 'checkMethod',
          函数信号发生器核查: 'checkPoint',
          信号源核查: 'checkMethod',
        },
        // 小功率
        15: {
          校准因子: 'frequency',
        },
        // 低频信号源
        16: {
          频率: 'nominalValue',
          交流电压: 'nominalValue',
          直流电压: 'nominalValue',
          上升下降时间: 'frequency',
          平坦度: 'frequency',
          失真: 'frequency',
        },
        // S参数
        17: {
          失配测量: 'typeValue',
          衰减测量: 'typeValue',
          相移测量: 'typeValue',
        },
        // 失真度
        18: {
          失真度: 'frequency',
        },
      }
      unit = {
        // 多功能校准源
        1: {
          DCV: 'unit',
          ACV: 'unit',
          DCI: 'unit',
          ACI: 'unit',
          R: 'unit',
        },
        // 直流稳压
        2: {
          '直流电压': 'unit',
          '电源效应和负载效应': 'unit',
          '直接电流(直接测量)': 'unit',
          '直接电流(间接测量)': 'unit',
          '纹波电压': 'unit',
        },
        // 多动能电气安全
        3: {
          直流电压: 'unit',
          电阻测量: 'unit',
        },
        // 二等铂
        5: {
          温度值: 'unit',
          RTP值: 'unit',
          绝缘电阻表校准: 'unit',
          测温仪电阻核查: 'unit',
        },
        // E2等砝码
        8: {
          E2核查: '',
        },
        // 频谱分析仪
        9: {
          频率: 'unit',
          功率: 'unit',
          相对电平: 'unit',
        },
        // 信号发生器
        10: {
          频率: 'unit',
          功率: 'unit',
          相对电平: 'unit',
          调幅度: 'unit',
          调频频偏: 'unit',
          调相相偏: 'unit',
          谐波: 'unit',
        },
        // 微博衰减
        11: {
          '1dB档位': 'frequencyUnit',
          '10dB档位': 'frequencyUnit',
        },
        // 短稳
        12: {
          '双混频时差法-5110/5120': 'outputFrequencyUnit',
          '差拍法-10830': 'outputFrequencyUnit',
          '双混频时差法-BM1308-15': 'outputFrequencyUnit',
        },
        // 示波器
        13: {
          '时标': 'unit',
          '方波电压(50Ω)': 'unit',
          '方波电压(1MΩ)': 'unit',
          '直流电压(50Ω)': 'unit',
          '直流电压(1MΩ)': 'unit',
          '输入阻抗': 'unit',
          '稳幅正弦信号电压平坦度': 'unit',
          '上升时间': 'unit',
        },
        // 铯原子
        14: {
          铯原子频标核查: '',
          函数信号发生器核查: 'unit',
          信号源核查: 'unit',
        },
        // 小功率
        15: {
          校准因子: 'frequencyUnit',
        },
        // 低频信号源
        16: {
          频率: 'unit',
          交流电压: 'unit',
          直流电压: 'unit',
          上升下降时间: 'frequencyUnit',
          平坦度: 'frequencyUnit',
          失真: 'frequencyUnit',
        },
        // S参数
        17: {
          失配测量: '',
          衰减测量: '',
          相移测量: '',
        },
        // 失真度
        18: {
          失真度: 'frequencyUnit',
        },
      }
      ponitList.value = uniqueArray(data.filter(item => item[attribute[standardMap.value[$route.query.standardName as string]][newVal]]).map((item: any) => (item[attribute[standardMap.value[$route.query.standardName as string]][newVal]] + (item[unit[standardMap.value[$route.query.standardName as string]][newVal]] || ' '))))
    }
    else if (standardCode.value === '4') {
      const data = allConfigData.value.filter((item: any) => item.checkItem === (newVal === '直流电压测量误差' ? '1' : '2'))
      console.log(allConfigData.value, 'allConfigData.value')
      ponitList.value = uniqueArray(data.map((item: any) => `${item.checkPoint}${item.unit}`))
    }

    // 设置默认选中
    if (isFirst.value) {
      if (standardCode.value === '18' || standardCode.value === '11' || standardCode.value === '10' || standardCode.value === '9' || standardCode.value === '14' || standardCode.value === '12' || standardCode.value === '17') {
        listQuery.value.ponit = ponitList.value[0]
      }
      else {
        listQuery.value.ponit = ponitList.value
      }
      // 设置默认一周时间
      dateRange.value = [dayjs().subtract(7, 'day').format('YYYY-MM-DD'), dayjs().format('YYYY-MM-DD')]
      listQuery.value.startTime = dayjs().subtract(7, 'day').format('YYYY-MM-DD')
      listQuery.value.endTime = dayjs().format('YYYY-MM-DD')
      if (standardCode.value === '18' || standardCode.value === '11' || standardCode.value === '10' || standardCode.value === '9' || standardCode.value === '14' || standardCode.value === '12' || standardCode.value === '17') {
        return
      }
      searchList()
      isFirst.value = false
    }
  }
})
watch(() => listQuery.value.ponit, (newVal) => {
  listQuery.value.nominal = ''
  nominalList.value = []
  if ((typeof newVal === 'object' && newVal.length) || (typeof newVal === 'string' && newVal.length)) {
    if (standardCode.value === '18') {
      const data = allConfigData.value.filter((item: any) => item.frequency + item.frequencyUnit === newVal)
      nominalList.value = uniqueArray(data.map(item => `${item.nominalValue}%`))
    }
    else if (standardCode.value === '11') {
      const data = allConfigData.value.filter((item: any) => `${item.frequency}${item.frequencyUnit}` === newVal)
      nominalList.value = uniqueArray(data.map(item => `${item.attenuationAmount}${item.attenuationAmountUnit}`))
    }
    else if (standardCode.value === '10') {
      const data = allConfigData.value.filter((item: any) => `${item.checkPoint}${item.unit}` === newVal && item.params === listQuery.value.config)
      if (listQuery.value.config === '频率' || listQuery.value.config === '谐波') {
        nominalList.value = ['/']
      }
      else if (listQuery.value.config === '功率') {
        nominalList.value = uniqueArray(data.map(item => `${item.power}${item.powerUnit}`))
      }
      else if (listQuery.value.config === '相对电平') {
        nominalList.value = uniqueArray(data.map(item => `${item.relativeLevel}${item.relativeLevelUnit}`))
      }
      else if (listQuery.value.config === '调幅度') {
        nominalList.value = uniqueArray(data.map(item => `${item.modulation}${item.relativeLevelUnit}`))
      }
      else if (listQuery.value.config === '调频频偏') {
        nominalList.value = uniqueArray(data.map(item => `${item.frequencyDeviation}${item.frequencyDeviationUnit}`))
      }
      else if (listQuery.value.config === '调相相偏') {
        nominalList.value = uniqueArray(data.map(item => `${item.phaseDeviation}${item.phaseDeviationUnit}`))
      }
    }
    else if (standardCode.value === '9') {
      const data = allConfigData.value.filter((item: any) => `${item.checkPoint}${item.unit}` === newVal && item.params === listQuery.value.config)
      if (listQuery.value.config === '频率') {
        nominalList.value = ['/']
      }
      else if (listQuery.value.config === '功率') {
        nominalList.value = uniqueArray(data.map(item => `${item.power}${item.powerUnit}`))
      }
      else if (listQuery.value.config === '相对电平') {
        nominalList.value = uniqueArray(data.map(item => `${item.relativeLevel}${item.relativeLevelUnit}`))
      }
    }
    else if (standardCode.value === '14') {
      const data = allConfigData.value.filter((item: any) => item.params === listQuery.value.config)
      if (listQuery.value.config === '铯原子频标核查') {
        nominalList.value = uniqueArray(data.filter((item: any) => `${item.checkMethod}` === newVal.trim()).map((item: any) => `${item.checkPoint}${item.unit}`))
      }
      else if (listQuery.value.config === '函数信号发生器核查') {
        nominalList.value = uniqueArray(data.filter((item: any) => `${item.checkPoint}${item.unit}` === newVal).map((item: any) => `${item.electricalLevel}${item.electricalLevelUnit}`))
      }
      else if (listQuery.value.config === '信号源核查') {
        nominalList.value = uniqueArray(data.filter((item: any) => `${item.checkPoint}${item.unit}` === newVal).map((item: any) => `${item.electricalLevel}${item.electricalLevelUnit}`))
      }
    }

    else if (standardCode.value === '12') {
      const data = allConfigData.value.filter((item: any) => item.params === listQuery.value.config)
      nominalList.value = uniqueArray(data.filter((item: any) => `${item.outputFrequency}${item.outputFrequencyUnit}` === newVal).map((item: any) => `${item.testedFrequency}${item.testedFrequencyUnit}`))
      if (isFirst.value) {
        listQuery.value.nominal = nominalList.value[0]
      }
      return
    }
    else if (standardCode.value === '17') {
      const data = allConfigData.value.filter((item: any) => item.params === listQuery.value.config)
      if (listQuery.value.config === '失配测量') {
        nominalList.value = uniqueArray(data.filter((item: any) => `${item.typeValue}` === newVal.trim()).map((item: any) => item.vswr))
      }
      else {
        nominalList.value = uniqueArray(data.filter((item: any) => `${item.typeValue}` === newVal.trim()).map((item: any) => `${item.frequency}${item.frequencyUnit}`))
      }
      if (isFirst.value) {
        listQuery.value.nominal = nominalList.value[0]
      }
      return
    }
    // 设置默认选中
    if (isFirst.value) {
      listQuery.value.nominal = nominalList.value
      loading.value = !!nominalList.value.length
      searchList()
      setTimeout(() => {
        isFirst.value = false
      }, 2000)
    }
  }
})

const type = ref()
const type13List = ref<any[]>([])
watch(() => listQuery.value.config, (newVal) => {
  if (newVal === '稳幅正弦信号电压平坦度') {
    const data = uniqueArray(allConfigData.value.filter((item: any) => item.params === '稳幅正弦信号电压平坦度').map(item => item.typeValue))
    type13List.value = data
  }
})
watch(() => type.value, (newVal) => {
  listQuery.value.ponit = []
  nominalList.ponitList = []
  if (newVal) {
    ponitList.value = uniqueArray(allConfigData.value.filter((item: any) => item.params === '稳幅正弦信号电压平坦度' && item.typeValue === newVal).map(item => `${item.checkPoint}${item.unit}`))
  }
})
const nominal = ref()
const nominal12List = ref<any[]>([])
watch(() => listQuery.value.nominal, (newVal) => {
  nominal.value = ''
  nominal12List.value = []
  if (newVal) {
    if (standardCode.value === '12') {
      const data = allConfigData.value.filter((item: any) => item.params === listQuery.value.config && `${item.outputFrequency}${item.outputFrequencyUnit}` === listQuery.value.ponit && `${item.testedFrequency}${item.testedFrequencyUnit}` === newVal)
      nominal12List.value = uniqueArray(data.map((item: any) => `${item.sampleTime}${item.sampleTimeUnit}`))
    }
    else if (standardCode.value === '17') {
      if (listQuery.value.config === '失配测量') {
        const data = allConfigData.value.filter((item: any) => item.params === listQuery.value.config && item.typeValue.trim() === listQuery.value.ponit.trim() && item.vswr === newVal)
        nominal12List.value = uniqueArray(data.map((item: any) => `${item.frequency}${item.frequencyUnit}`))
      }
      else if (listQuery.value.config === '衰减测量') {
        const data = allConfigData.value.filter((item: any) => item.params === listQuery.value.config && item.typeValue.trim() === listQuery.value.ponit.trim() && `${item.frequency}${item.frequencyUnit}` === newVal)
        nominal12List.value = uniqueArray(data.map((item: any) => `${item.amplitude}${item.amplitudeUnit}`))
      }
      else if (listQuery.value.config === '相移测量') {
        const data = allConfigData.value.filter((item: any) => item.params === listQuery.value.config && item.typeValue.trim() === listQuery.value.ponit.trim() && `${item.frequency}${item.frequencyUnit}` === newVal)
        nominal12List.value = uniqueArray(data.map((item: any) => `${item.phase}${item.phaseUnit}`))
      }
    }
    // 设置默认选中
    if (isFirst.value) {
      nominal.value = nominal12List.value
      loading.value = !!nominal12List.value.length
      searchList()
      setTimeout(() => {
        isFirst.value = false
      }, 2000)
    }
  }
})

// 查询
function searchList() {
  xAxisData.value = []
  dataTrend.value = []
  data.value = []
  loading.value = true
  let flag = true
  for (const i in listQuery.value) {
    if (i === 'ponit') {
      flag = !!listQuery.value[i].length
    }
    else if (i === 'type') {
      flag = standardCode.value === '1' || standardCode.value === '4' ? !!listQuery.value[i] : true
    }
    else if (i === 'nominal') {
      flag = standardCode.value === '18' || standardCode.value === '11' || standardCode.value === '10' || standardCode.value === '9' || standardCode.value === '14' ? !!listQuery.value[i].length : true
    }
    else {
      flag = !!listQuery.value[i]
    }
    if (standardCode.value === '12' || standardCode.value === '17') {
      flag = !!nominal.value.length
    }
    if (listQuery.value.type === '压力值') {
      flag = true
    }
    if (!flag) {
      break
    }
  }
  if (flag) {
    console.log(listQuery.value, 'listQuery.value')
    setTimeout(() => {
      //  模拟数据
      xAxisData.value = getRangeAllTime(listQuery.value.startTime, listQuery.value.endTime).map(item => item)
      if (standardCode.value === '18' || standardCode.value === '11' || standardCode.value === '10' || standardCode.value === '9' || standardCode.value === '14') {
        dataTrend.value = listQuery.value.nominal.map((item: any) => ({
          name: item,
          data: xAxisData.value.map(item => Math.floor(Math.random() * 100) + 1),
        }))
        if (listQuery.value.nominal[0] === '/') {
          dataTrend.value = []
        }
      }
      else if (standardCode.value === '12' || standardCode.value === '17') {
        dataTrend.value = nominal12List.value.map((item: any) => ({
          name: item,
          data: xAxisData.value.map(item => Math.floor(Math.random() * 100) + 1),
        }))
      }
      else {
        dataTrend.value = listQuery.value.ponit.map((item: any) => ({
          name: item,
          data: xAxisData.value.map(item => Math.floor(Math.random() * 100) + 1),
        }))
      }
      data.value = [{
        name: '稳定性合格',
        value: Math.floor(Math.random() * 10) + 1,
      },
      {
        name: '稳定不性合格',
        value: Math.floor(Math.random() * 10) + 1,
      }]
      setTimeout(() => {
        const resize = new Event('resize')
        window.dispatchEvent(resize)
      })
      loading.value = false
    }, 2000)
  }
  else {
    if (isFirst.value) {
      loading.value = false
      return
    }
    ElMessage.warning('查询条件不能为空')
    setTimeout(() => {
      loading.value = false
    }, 1000)
  }
}
// 清空查询
const clearList = () => {
  dateRange.value = []
  listQuery.value = {
    id: '',
    config: '',
    ponit: [],
    startTime: '',
    endTime: '',
    type: '',
    nominal: '',
  }
  listQuery.value.id = ''
  listQuery.value.config = ''
  listQuery.value.ponit = []
  allConfigData.value = []
  configList.value = []
  ponitList.value = []
  xAxisData.value = []
  dataTrend.value = []
  data.value = []
}
</script>

<template>
  <div>
    <!-- 查询条件 -->
    <search-area :need-clear="true" @search="searchList" @clear="clearList">
      <search-item>
        <el-select
          v-model="listQuery.id"
          placeholder="智能模型"
          class="short-input"
          filterable
          clearable
          style="width: 170px;"
        >
          <el-option v-for="item in deviceList" :key="item.id" :label="`${item.equipmentName}-${item.model}-${item.manufactureNo}`" :value="item.id" />
        </el-select>
      </search-item>
      <search-item v-if="standardCode === '1' || (standardCode === '4')">
        <el-select
          v-model="listQuery.type"
          placeholder="分类"
          class="short-input"
          filterable
          clearable
          style="width: 170px;"
        >
          <el-option v-for="item in TypeList" :key="item" :label="item" :value="item" />
        </el-select>
      </search-item>
      <search-item v-if="(standardCode !== '8' && standardCode !== '15' && standardCode !== '18') || (standardCode === '4' && listQuery.type !== '压力值')">
        <el-select
          v-model="listQuery.config"
          placeholder="核查项"
          class="short-input"
          filterable
          clearable
          style="width: 170px;"
        >
          <el-option v-for="item in configList" :key="item" :label="item" :value="item" />
        </el-select>
      </search-item>
      <search-item v-if="standardCode === '13' && listQuery.config === '稳幅正弦信号电压平坦度'">
        <el-select
          v-model="type"
          placeholder="类型"
          class="short-input"
          filterable
          clearable
          style="width: 170px;"
        >
          <el-option v-for="item in type13List" :key="item" :label="item" :value="item" />
        </el-select>
      </search-item>
      <search-item>
        <el-select
          v-model="listQuery.ponit"
          placeholder="核查点"
          class="short-input"
          filterable
          clearable
          :multiple="standardCode !== '18' && standardCode !== '11' && standardCode !== '10' && standardCode !== '9' && standardCode !== '14' && standardCode !== '12' && standardCode !== '17'"
          collapse-tags
          style="width: 200px;"
        >
          <el-option v-for="item in ponitList" :key="item" :label="item" :value="item" />
        </el-select>
      </search-item>
      <search-item v-if="standardCode === '18' || standardCode === '11' || standardCode === '10' || standardCode === '9' || standardCode === '14' || standardCode === '12' || standardCode === '17'">
        <el-select
          v-model="listQuery.nominal"
          placeholder=""
          class="short-input"
          filterable
          clearable
          :multiple="standardCode === '18' || standardCode === '11' || standardCode === '10' || standardCode === '9' || standardCode === '14'"
          collapse-tags
          style="width: 200px;"
        >
          <el-option v-for="item in nominalList" :key="item" :label="item" :value="item" />
        </el-select>
      </search-item>
      <search-item v-if="standardCode === '12' || standardCode === '17'">
        <el-select
          v-model="nominal"
          placeholder=""
          class="short-input"
          filterable
          clearable
          :multiple="standardCode === '12' || standardCode === '17'"
          collapse-tags
          style="width: 200px;"
        >
          <el-option v-for="item in nominal12List" :key="item" :label="item" :value="item" />
        </el-select>
      </search-item>
      <search-item>
        <el-date-picker
          v-model="dateRange"
          class="short-input"
          type="daterange"
          range-separator="至"
          format="YYYY-MM-DD"
          value-format="YYYY-MM-DD"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
        />
      </search-item>
    </search-area>
    <!-- 图表-展示 -->
    <div v-loading="loading" class="show-content">
      <div class="board-item">
        <div class="board-header">
          <div class="board-title">
            核查数据变化趋势
          </div>
          <div class="board-select" />
        </div>
        <!-- v-loading="loading" -->
        <div class="board-chart">
          <line-chart v-if="xAxisData.length" :x-axis-data="xAxisData" :data="dataTrend" :smooth="false" :grid="{ top: 47, left: 5, right: 5, bottom: 10, containLabel: true }" :gradient="false" :legend="{ itemWidth: 8, itemHeight: 2, type: 'scroll', orient: 'horizontal', icon: 'roundRect', left: '0', top: '5' }" />
          <el-empty v-else :image-size="100" description="暂无数据" />
        </div>
      </div>
      <div class="board-item-device">
        <div class="board-header">
          <div class="board-title">
            核查结果分析
          </div>
          <div class="board-select" />
        </div>
        <!-- v-loading="loading" -->
        <div class="board-chart">
          <pie-chart v-show="data.length" :data="data" :center="['50%', '60%']" label-formatter="{style1|{c}}" label-position="outside" radius="70%" :grid="{ top: 50, left: 15, right: 15, bottom: 10, containLabel: true }" :legend="{ itemWidth: 8, itemHeight: 8, type: 'scroll', orient: 'horizontal', icon: 'roundRect', left: '0', top: '10' }" />
          <el-empty v-show="!data.length" :image-size="100" description="暂无数据" />
        </div>
      </div>
    </div>
  </div>
</template>

<style lang="scss" scoped>
.board-item {
  margin: 5px 0;
  padding: 2px 10px;
  // border: 2px solid #cedaf6;
  box-sizing: content-box;
  border-radius: 6px;
  width: 65%;

  .board-header {
    display: flex;
    justify-content: space-between;

    .board-title {
      color: #0dabf1;
      font-weight: 700;
    }
  }

  .board-chart {
    height: 300px;
  }
}

.board-item-device {
  margin: 5px 0;
  padding: 2px 10px;
  // border: 2px solid #cedaf6;
  box-sizing: content-box;
  width: 35%;

  .board-header {
    display: flex;
    justify-content: space-between;

    .board-title {
      color: #0dabf1;
      font-weight: 700;
    }
  }

  .board-chart {
    height: 300px;
  }
}

.show-content {
  display: flex;
}
</style>