alarmRanking.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <template>
  2. <div class="column-row-title alarm-ranking">
  3. <span class="title-text"><img src="@/assets/images/title-icon.png" alt=""/>组件告警数排名
  4. <span class="s-span">(周)</span>
  5. </span>
  6. <!-- <div><el-checkbox v-model="alarm" label="当前告警数" size="large" @change="getAlarm"/><span class="yellow-txt">8</span></div>-->
  7. </div>
  8. <div class="column-content column-content-half" @click="target">
  9. <div v-for="(item,index) in alarmData" class="alarm-row">
  10. <div class="ranking-title">
  11. <div>
  12. <span :class="index===0 ? 'no1' : index ===1 ? 'no2':index ===2 ? 'no3':'no-other'">
  13. NO.{{index+1}}
  14. </span>
  15. {{item.name}}
  16. </div>
  17. <span class="alarm-num">{{item.alarm}}</span>
  18. </div>
  19. <div class="alarm-progress">
  20. <div class="progress" :style="`width:${(item.alarm/maxValue)*100}%`" />
  21. </div>
  22. </div>
  23. </div>
  24. </template>
  25. <script setup lang="ts">
  26. import {objAlarm} from "@/api/index/hl"
  27. import {onMounted} from "vue";
  28. import {useRouter} from "vue-router";
  29. const alarm = ref(false)
  30. const alarmData = ref([])
  31. const maxValue = ref(0)
  32. const router = useRouter()
  33. onMounted(()=>{
  34. getAlarm()
  35. })
  36. async function getAlarm(){
  37. const res = await objAlarm()
  38. alarmData.value = res.data.data.sort((a,b)=>b.alarm - a.alarm)
  39. maxValue.value = Math.max(...alarmData.value.map(item=>item.alarm))+20
  40. }
  41. function target(){
  42. router.push({path:"/alarm/bizSort",query:{today:"true"}})
  43. }
  44. </script>