From c5370d2a8c89caa6c8da533c2cf691cb3d16dc3c Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期四, 12 十二月 2024 16:45:31 +0800
Subject: [PATCH] ll
---
screen/src/views/FireFighting.vue | 199 ++++++++++++++++++++++++++++++++++++-------------
1 files changed, 144 insertions(+), 55 deletions(-)
diff --git a/screen/src/views/FireFighting.vue b/screen/src/views/FireFighting.vue
index b9b4b1f..8e63144 100644
--- a/screen/src/views/FireFighting.vue
+++ b/screen/src/views/FireFighting.vue
@@ -31,17 +31,22 @@
<span class="item">鏁呴殰</span>
<span class="item">绂荤嚎</span>
</div>
- <template v-for="(item, i) in dataList1" :key="i">
- <div class="line">
- <span class="item name">{{ item.deviceTypeName }}</span>
- <span class="item">{{ item.statusTotal }}</span>
- <span class="item">{{ item.alarmNum }}</span>
- <span class="item">{{ item.shieldNum }}</span>
- <span class="item">{{ item.errNum }}</span>
- <span class="item">{{ item.offlineNum }}</span>
+ <div class="one-swiper list_content">
+ <div class="swiper-wrapper">
+ <div class="line_wrap one-swiper-slide swiper-slide" v-for="(item, i) in dataList1">
+ <div class="line">
+ <span class="item name">{{ item.typeName }}</span>
+ <span class="item">{{ item.totalDeviceNum || 0 }}</span>
+ <span class="item">{{ item.alarmDeviceNum || 0 }}</span>
+ <span class="item">{{ item.shieldDeviceNum || 0 }}</span>
+ <span class="item">{{ item.errDeviceNum || 0 }}</span>
+ <span class="item">{{ item.offlineDeviceNum || 0 }}</span>
+ </div>
+ <div class="separate"></div>
+ </div>
</div>
- <div class="separate"></div>
- </template>
+ </div>
+
</div>
</div>
</div>
@@ -112,7 +117,7 @@
<img src="@/assets/images/FireFighting/xiaofang_ic_pingbi@2x.png" alt="">
<div class="content">
<div class="name">灞忚斀</div>
- <div class="num num5">{{ dataList4.shieldDeviceNum }}</div>
+ <div class="num num5">{{ dataList4.shieldDeviceNum || 0 }}</div>
</div>
</div>
</div>
@@ -218,7 +223,8 @@
<div class="separate"></div>
<div class="item">
<div>缁翠繚鐜�</div>
- <div v-if="dataList5.protectNum && dataList5.planProtectTotal" class="num active">{{ ((dataList5.protectNum / dataList5.planProtectTotal) * 100).toFixed(0) }}%</div>
+ <div v-if="dataList5.protectNum && dataList5.planProtectTotal" class="num active">{{
+ ((dataList5.protectNum / dataList5.planProtectTotal) * 100).toFixed(0) }}%</div>
</div>
</div>
<div class="footer">
@@ -247,14 +253,14 @@
<img src="@/assets/images/FireFighting/ic_tibao@2x.png" alt="">
<div class="content">
<div class="name">鎻愭姤闅愭偅鏁�</div>
- <div class="num"><span>{{ dataList4.todayDangerNum }}</span>涓�</div>
+ <div class="num"><span>{{ dataList4.dangerTotalNum }}</span>涓�</div>
</div>
</div>
<div class="item">
<img src="@/assets/images/FireFighting/ic_chuli@2x.png" alt="">
<div class="content">
<div class="name">澶勭悊闅愭偅鏁�</div>
- <div class="num"><span class="today">{{ dataList4.dealDangerNum }}</span>涓�</div>
+ <div class="num"><span class="today">{{ dataList4.dangerDealedNum }}</span>涓�</div>
</div>
</div>
</div>
@@ -262,30 +268,38 @@
<img class="icon" src="@/assets/images/FireFighting/ic_title_green@2x.png" alt="">
<div class="name">鍛婅淇℃伅</div>
</div>
- <div class="list">
- <div class="item" v-for="i in 5">
- <div class="icon">
- <div class="circle"></div>
- <div class="line"></div>
+ <div class="list two-swiper">
+ <div class="swiper-wrapper">
+ <div class="item two-swiper-slide swiper-slide" v-for="item, i in dataList7" :key="i">
+ <div class="icon">
+ <div class="circle"></div>
+ <div class="line"></div>
+ </div>
+ <div class="content">
+ <div class="header">
+ <div class="time">
+ <span>{{ item.alarmTime }}</span>
+ <span class="status" v-if="item.handleStatus == 1">宸叉牳瀹�</span>
+ <span class="status" v-else-if="item.handleStatus == 2">鏈牳瀹�</span>
+ <span class="status" v-else-if="item.handleStatus == 3">鏍稿疄涓�</span>
+ <span v-else class="status">鏈牳瀹�</span>
+ </div>
+ <div class="have_time">宸茬粡鍙戠敓{{ item.haveTime }}</div>
+ </div>
+ <div class="wrap">
+ <div class="title">
+ <img class="xf" src="@/assets/images/FireFighting/ic_gaojing_red@2x.png" alt="">
+ <span>{{ item.alarmTypeName }}</span>
+ </div>
+ <div class="title">
+ <img class="addr" src="@/assets/images/FireFighting/xiaofang_ic_weizhi@2x.png" alt="">
+ <span>{{ item.regionName }}</span>
+ </div>
+ </div>
+ </div>
</div>
- <div class="content">
- <div class="header">
- <div class="time">
- <span>123</span>
- <span class="status">澶勭悊涓�</span>
- </div>
- <div class="have_time">宸茬粡鍙戠敓<span>1</span>鍒嗛挓</div>
- </div>
- <div class="wrap">
- <div class="title">
- <img class="xf" src="@/assets/images/FireFighting/ic_gaojing_red@2x.png" alt="">
- <span>娑堥槻璀﹀憡</span>
- </div>
- <div class="title">
- <img class="addr" src="@/assets/images/FireFighting/xiaofang_ic_weizhi@2x.png" alt="">
- <span>A鍘傛埧3杞﹂棿闂ㄥ彛</span>
- </div>
- </div>
+ <div v-if="dataList7.length == 0" style="margin-top: 100px;" class="empty_wrap">
+ <img src="@/assets/images/default_empty.png" alt="">
</div>
</div>
</div>
@@ -301,13 +315,18 @@
import VScaleScreen from 'v-scale-screen'
import FirePercent from '@/components/FirePercent.vue'
import dayjs from 'dayjs'
+import duration from 'dayjs/plugin/duration'
+dayjs.extend(duration)
import * as echarts from 'echarts'
+import 'swiper/css/swiper.min.css'
+import Swiper from 'swiper'
import {
getFightingalarmData,
getFightingHandle,
getFightingcenterData,
getFightingDeAlarm,
getFightingDeviceY,
+ getFighalarmDataList
} from '@/api'
const colors = ['#FEAF01', '#01ABFE', '#51F9E4']
@@ -325,7 +344,7 @@
const initWatergage = () => {
const myChart = echarts.init(document.getElementById('watergage'))
- var data_value = 2
+ var data_value = 1
const option = {
barMaxWidth: 3,
polar: {
@@ -689,14 +708,16 @@
}
const dataList1 = ref([])
-const getData1 = () => {
- getFightingDeAlarm().then(res => {
- dataList1.value = res.data
- })
-}
const policeColors = ['#01D9FE', '#FE5501', '#0193FE', '#28F0C4']
const dataList2 = ref([])
const getData2 = () => {
+ // let temp = []
+ // temp.push({ name: '鐪熷疄鎶ヨ鏁�', num: 10, rate: 20 })
+ // temp.push({ name: '璇姤璀︽暟', num: 30, rate: 60 })
+ // temp.push({ name: '宸茶В闄�', num: 20, rate: 40 })
+ // temp.push({ name: '澶勭悊涓�', num: 8, rate: 16 })
+ // dataList2.value = temp
+ // return
getFightingalarmData().then(res => {
const result = res.data || {}
let temp = []
@@ -719,10 +740,14 @@
var myChart = echarts.init(document.querySelector('.echart2'))
// 鐢熸垚鏁版嵁鍜屾棩鏈�
// 绀轰緥鏁版嵁
- const data1 = dataList3.value.map(i => i.alarmNum)
+ const data1 = dataList3.value.map(i => i.realNum)
const data2 = dataList3.value.map(i => i.processingNum)
const data3 = dataList3.value.map(i => i.liftNum)
const data4 = dataList3.value.map(i => i.errNum)
+ const months = dataList3.value.map(i => {
+ return i.startDate.substring(5, 7) + '鏈�'
+ }
+ )
const option = {
legend: {
x: "center",
@@ -756,10 +781,10 @@
borderColor: "rgba(219, 230, 255, 0.8)",
},
xAxis: {
- data: dataList3.value.map(i => i.monthStr),
+ data: months,
axisLabel: {
color: "#FFFFFF", // X 杞存枃瀛楄涓虹櫧鑹�
- fontSize: 14,
+ fontSize: 13,
},
axisLine: {
lineStyle: {
@@ -868,6 +893,7 @@
const getData4 = () => {
getFightingcenterData().then(res => {
dataList4.value = res.data || {}
+ dataList1.value = res.data.deviceTypeList
})
}
const dataList5 = ref({}) // 缁翠繚
@@ -878,21 +904,76 @@
}
const dataList6 = ref([])
const getData6 = () => {
- getFightingHandle({type: 1}).then(res => {
+ getFightingHandle({ type: 1 }).then(res => {
dataList6.value = res.data
+ })
+}
+const dataList7 = ref([])
+const getData7 = () => {
+ getFighalarmDataList().then(res => {
+ dataList7.value = res.data || []
+ dataList7.value = dataList7.value.map(item => {
+ item.haveTime = dayjs.duration(new Date().getTime() - new Date(item.alarmTime).getTime()).format('H灏忔椂m鍒嗛挓')
+ return item
+ })
+ })
+}
+
+const autoplayFlag = (list = [], leng = 4, time = 2000) => {
+ if (list.length > leng) {
+ return { delay: time, disableOnInteraction: false }
+ } else {
+ return false
+ }
+}
+const loopFn1 = () => {
+ var newSwiper1 = new Swiper('.one-swiper', {
+ initialSlide: 0,
+ direction: 'vertical', //绔栫洿鏂瑰悜
+ slidesPerView: 5,
+ autoplay: autoplayFlag(dataList1.value, 5, 4000),
+ observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
+ })
+}
+const loopFn2 = () => {
+ var newSwiper1 = new Swiper('.two-swiper', {
+ initialSlide: 0,
+ direction: 'vertical', //绔栫洿鏂瑰悜
+ slidesPerView: 4,
+ autoplay: autoplayFlag(dataList7.value, 4, 4000),
+ observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
})
}
onMounted(() => {
- getData1()
+ // getData1()
getData2()
getData3()
getData4()
getData5()
- getData6()
+ // getData6()
+ getData7()
+ setInterval(() => {
+ getData2()
+ getData3()
+ getData4()
+ // getData6()
+ getData7()
+ }, 60 * 1000)
+ setInterval(() => {
+
+ getData5()
+
+ }, 60 * 60 * 1000)
initWatergage()
initLiquidlevel()
+
+ setTimeout(() => {
+ loopFn1()
+ loopFn2()
+ }, 12000)
+
})
@@ -916,8 +997,15 @@
.list_wrap {
padding: 10px 0;
- height: 227px;
- overflow: auto;
+
+ .list_content {
+ height: 170px;
+ overflow: hidden;
+
+ .line_wrap {
+ height: 34px !important;
+ }
+ }
.list {
.line {
@@ -1347,7 +1435,7 @@
margin-right: 7px;
}
}
-
+
.static_wrap {
display: flex;
justify-content: space-evenly;
@@ -1397,8 +1485,8 @@
}
.list {
- height: 330px;
- overflow: auto;
+ height: 320px;
+ overflow: hidden;
margin-top: 15px;
scrollbar-width: none;
@@ -1406,6 +1494,7 @@
display: flex;
font-size: 13px;
color: #D2E0FF;
+ height: 80px !important;
.icon {
width: 40px;
@@ -1465,7 +1554,7 @@
}
.wrap {
- height: 40px;
+ height: 34px;
background: linear-gradient(270deg, rgba(254, 85, 1, 0) 0%, rgba(254, 85, 1, 0.19) 100%);
border-radius: 2px 0px 0px 2px;
display: flex;
--
Gitblit v1.9.3