|
|
|
<template>
|
|
|
|
<div class="infoPanel">
|
|
|
|
<swiper
|
|
|
|
class="swiper"
|
|
|
|
:loop="false"
|
|
|
|
:autoplay="{ delay: 500000, pauseOnMouseEnter: true, disableOnInteraction: false }"
|
|
|
|
:modules="modules"
|
|
|
|
:slides-per-view="4"
|
|
|
|
:space-between="15"
|
|
|
|
navigation
|
|
|
|
:pagination="{ clickable: true }"
|
|
|
|
>
|
|
|
|
<swiper-slide class="item" v-for="(item, index) in panelData" :key="index">
|
|
|
|
<div class="content">
|
|
|
|
<div class="icon">
|
|
|
|
<img src="@/assets/images/panel_icon.png" />
|
|
|
|
</div>
|
|
|
|
<div class="numValue" v-if="item.type === 'A'">
|
|
|
|
<span>
|
|
|
|
<countTo :start="1" :end="item.value" :duration="3000"></countTo>
|
|
|
|
</span>
|
|
|
|
<i>{{ item.ext }}</i>
|
|
|
|
<p>{{ item.title }}</p>
|
|
|
|
</div>
|
|
|
|
<div class="numValueMore" v-if="item.type === 'B'">
|
|
|
|
<div class="numItem" v-for="(res, index) in item.ext" :key="index">
|
|
|
|
<span>{{ res.name }}:</span>
|
|
|
|
<span><countTo :start="1" :end="res.value" :duration="3000"></countTo></span>
|
|
|
|
<span>{{ res.unit }}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</swiper-slide>
|
|
|
|
</swiper>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
|
|
import { Swiper, SwiperSlide } from 'swiper/vue';
|
|
|
|
import { Navigation, Pagination, Autoplay } from 'swiper/modules';
|
|
|
|
import { getTableFooter } from '@/api/table/list';
|
|
|
|
import { PanelVo } from '@/api/table/types';
|
|
|
|
import countTo from '@/utils/countTo';
|
|
|
|
import mitt from '@/plugins/bus';
|
|
|
|
import 'swiper/css';
|
|
|
|
|
|
|
|
const modules = [Navigation, Pagination, Autoplay];
|
|
|
|
const panelData = ref<PanelVo[]>();
|
|
|
|
const deptId = ref(0);
|
|
|
|
|
|
|
|
// const panelData: PanelVo[] = [
|
|
|
|
// {
|
|
|
|
// title: '总产热量',
|
|
|
|
// value: 26449,
|
|
|
|
// ext: 'KJ',
|
|
|
|
// backImg: '/poll/hot',
|
|
|
|
// type: 'A',
|
|
|
|
// id: 2
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// title: '一次网补水',
|
|
|
|
// value: 9889,
|
|
|
|
// ext: 'm³',
|
|
|
|
// backImg: '/poll/onewater',
|
|
|
|
// type: 'A',
|
|
|
|
// id: 3
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// title: '设备在线率',
|
|
|
|
// value: 40.425532,
|
|
|
|
// ext: '%',
|
|
|
|
// backImg: '/poll/dev',
|
|
|
|
// type: 'A',
|
|
|
|
// id: 1
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// title: '告警累计',
|
|
|
|
// value: 27893,
|
|
|
|
// ext: '次',
|
|
|
|
// backImg: '/poll/alert',
|
|
|
|
// type: 'A',
|
|
|
|
// id: 4
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// title: '',
|
|
|
|
// value: 0,
|
|
|
|
// ext: [
|
|
|
|
// {
|
|
|
|
// name:'一次网供水温度',
|
|
|
|
// value:'58996',
|
|
|
|
// ext:'℃'
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// name:'一次网回水温度',
|
|
|
|
// value:'58996',
|
|
|
|
// ext:'℃'
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// name:'一次网供水流量',
|
|
|
|
// value:'58996',
|
|
|
|
// ext:'℃'
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// name:'一次网回水流量',
|
|
|
|
// value:'32369',
|
|
|
|
// ext:'t/h'
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// name:'一次网瞬时补水',
|
|
|
|
// value:'58996',
|
|
|
|
// ext:'℃'
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// name:'一次网耗热累计',
|
|
|
|
// value:'58996',
|
|
|
|
// ext:'℃'
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// name:'一次网补水累计',
|
|
|
|
// value:'8956',
|
|
|
|
// ext:'T'
|
|
|
|
// }
|
|
|
|
// ],
|
|
|
|
// backImg: '/poll/alert',
|
|
|
|
// type: 'B',
|
|
|
|
// id: 5
|
|
|
|
// }
|
|
|
|
// ];
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
deptId.value = sessionStorage.getItem('deptId') === null ? 0 : Number(sessionStorage.getItem('deptId'));
|
|
|
|
getPanel();
|
|
|
|
});
|
|
|
|
|
|
|
|
mitt.on('menuKey', (res: any) => {
|
|
|
|
//监听左侧菜单点击
|
|
|
|
deptId.value = res;
|
|
|
|
getPanel();
|
|
|
|
});
|
|
|
|
|
|
|
|
function getPanel() {
|
|
|
|
//获取表格数据
|
|
|
|
const params = deptId.value;
|
|
|
|
getTableFooter(params).then((res: any) => {
|
|
|
|
if (res.code === 200) {
|
|
|
|
panelData.value = res.data;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
</script>
|