From 328305d2e3fbac22e5c975b13667535b655ca445 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 25 十二月 2024 17:40:33 +0800
Subject: [PATCH] ll
---
screen/src/views/FireFighting.vue | 298 +++++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 197 insertions(+), 101 deletions(-)
diff --git a/screen/src/views/FireFighting.vue b/screen/src/views/FireFighting.vue
index f9590a4..f0ca910 100644
--- a/screen/src/views/FireFighting.vue
+++ b/screen/src/views/FireFighting.vue
@@ -30,7 +30,7 @@
<span class="item">鎶ヨ</span>
<span class="item">灞忚斀</span>
<span class="item">鏁呴殰</span>
- <span class="item">绂荤嚎</span>
+ <span class="item">姝e父</span>
</div>
<div class="one-swiper list_content">
<div class="swiper-wrapper">
@@ -89,7 +89,7 @@
<div class="item">
<img src="@/assets/images/FireFighting/xiaofang_ic_zaixian@2x.png" alt="">
<div class="content">
- <div class="name">鍦ㄧ嚎</div>
+ <div class="name">鎬绘暟</div>
<div class="num">{{ dataList4.onlineDeviceNum }}</div>
</div>
</div>
@@ -110,7 +110,7 @@
<div class="item">
<img src="@/assets/images/FireFighting/xiaofang_ic_lixian@2x.png" alt="">
<div class="content">
- <div class="name">绂荤嚎</div>
+ <div class="name">姝e父</div>
<div class="num num4">{{ dataList4.offlineDeviceNum }}</div>
</div>
</div>
@@ -131,29 +131,33 @@
<span>娓╁害/婀垮害浼犳劅鍣�</span>
</div>
<div class="right">
- <img @click="changeData8(-1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" alt="">
- <div class="num">{{dataIndex8 + 1}}/{{ dataList8.length }}</div>
- <img @click="changeData8(1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" alt="">
+ <img @click="changeData8(-1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png"
+ alt="">
+ <div class="num">{{ dataIndex8 + 1 }}/{{ dataList8.length }}</div>
+ <img @click="changeData8(1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png"
+ alt="">
</div>
</div>
<div class="list_wrap">
<div class="title">
<img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt="">
- <span>鍗歌揣鍖�1</span>
+ <span v-if="dataList8 && dataList8.length > 0">{{ dataList8[dataIndex8].humidityData.name }}</span>
</div>
<div class="list" v-if="dataList8 && dataList8.length > 0">
<div class="item">
<img class="icon" src="@/assets/images/FireFighting/ic_wendu@2x.png" alt="">
<div class="content">
<div class="num">{{ dataList8[dataIndex8].temperatureData?.latestValue }}<span>掳C</span></div>
- <div class="la">闃堝�� {{ dataList8[dataIndex8].temperatureData?.alarmLow }}锝瀧{ dataList8[dataIndex8].temperatureData?.alarmHigh }}掳C</div>
+ <div class="la">闃堝�� {{ dataList8[dataIndex8].temperatureData?.alarmLow }}锝瀧{
+ dataList8[dataIndex8].temperatureData?.alarmHigh }}掳C</div>
</div>
</div>
<div class="item">
<img class="icon" src="@/assets/images/FireFighting/ic_shidu@2x.png" alt="">
<div class="content">
<div class="num">{{ dataList8[dataIndex8].humidityData?.latestValue }}<span>%</span></div>
- <div class="la">闃堝�� {{ dataList8[dataIndex8].humidityData?.alarmLow }}锝瀧{ dataList8[dataIndex8].humidityData?.alarmHigh }}</div>
+ <div class="la">闃堝�� {{ dataList8[dataIndex8].humidityData?.alarmLow }}锝瀧{
+ dataList8[dataIndex8].humidityData?.alarmHigh }}</div>
</div>
</div>
</div>
@@ -166,35 +170,30 @@
<span>瀹炴椂浼犳劅鍣ㄦ娴�</span>
</div>
<div class="right">
- <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" alt="">
- <div class="num">1/5</div>
- <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" alt="">
+ <img @click="changeData9(-1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png"
+ alt="">
+ <div class="num">{{ dataIndex9 + 1 }}/{{ dataTotal9 }}</div>
+ <img @click="changeData9(1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png"
+ alt="">
</div>
</div>
- <div class="list_wrap">
- <div class="title_wrap">
+ <div class="list_wrap2">
+ <div class="item" v-for="item, i in dataListTemp9">
<div class="title">
<img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt="">
- <span>1璺�/姘村帇</span>
+ <span>{{ item.name }}</span>
</div>
- <div class="title">
- <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt="">
- <span>2璺�/娑蹭綅</span>
+ <div class="watergage_wrap" v-if="item.obj.typeCode == 253958">
+ <div class="watergage" :id="'watergage' + i"></div>
+ <div class="unit">{{ item.obj.value }}</div>
+ <div class="place">闃堝�� {{ item.level }}</div>
</div>
- </div>
- <div class="list">
- <div class="watergage_wrap">
- <div class="watergage" id="watergage"></div>
- <div class="unit">2.50 <span>Mpa</span></div>
- <div class="place">闃堝�� 0锝�2.5Mpa</div>
- </div>
- <div class="item">
- <div class="liquidlevel_wrap">
- <div class="liquidlevel" id="liquidlevel"></div>
- <div class="unit">3.45 <span>M</span></div>
- <div class="placeT">闃堝��</div>
+ <div v-if="item.obj.typeCode == 254001" class="liquidlevel_wrap">
+ <div class="liquidlevel" :id="'liquidlevel' + i"></div>
+ <div class="liquidle_te">
+ <div class="unit">{{ item.obj.value }}</div>
+ <div class="placeT">闃堝�納{ item.level }}</div>
</div>
- <div class="place">闃堝�� 0锝�4.50M</div>
</div>
</div>
</div>
@@ -312,7 +311,7 @@
</template>
<script setup>
-import { ref, onMounted } from 'vue'
+import { ref, onMounted, nextTick } from 'vue'
import VScaleScreen from 'v-scale-screen'
import FirePercent from '@/components/FirePercent.vue'
import dayjs from 'dayjs'
@@ -328,7 +327,8 @@
getFightingDeAlarm,
getFightingDeviceY,
getFighalarmDataList,
- getTemperatureHumidityData
+ getTemperatureHumidityData,
+ monitorDataListP
} from '@/api'
const colors = ['#FEAF01', '#01ABFE', '#51F9E4']
@@ -344,9 +344,14 @@
}, 1000)
-const initWatergage = () => {
- const myChart = echarts.init(document.getElementById('watergage'))
- var data_value = 1
+const initWatergage = (id, item) => {
+ const myChart = echarts.init(document.getElementById(id))
+ var data_value = item.obj.value.replaceAll('Mpa', '')
+ const startI = item.level.indexOf('-')
+ const endI = item.level.indexOf('Mpa')
+ let maxNum = item.level.slice(startI + 1, endI)
+ let minNum = item.level.slice(0, startI)
+ // let maxNum =
const option = {
barMaxWidth: 3,
polar: {
@@ -373,8 +378,8 @@
series: [
{
type: 'gauge',
- min: 0,
- max: 2.50,
+ min: minNum,
+ max: maxNum,
splitNumber: 5,
radius: '100%',
center: ['50%', '50%'],
@@ -506,9 +511,17 @@
myChart.resize()
})
}
-const initLiquidlevel = () => {
- const myChart = echarts.init(document.getElementById('liquidlevel'))
- var data = 65
+const initLiquidlevel = (id, item) => {
+ const myChart = echarts.init(document.getElementById(id))
+ const startI = item.level.indexOf('-')
+ const endI = item.level.indexOf('M')
+ let maxNum = item.level.slice(startI + 1, endI)
+ let minNum = item.level.slice(0, startI)
+ let conNum = maxNum - minNum
+ let acNum = item.obj.value.replaceAll('M', '')
+ var data = (((acNum - minNum) / conNum) * 100).toFixed(0)
+ console.log('data', data);
+
const option = {
tooltip: {
trigger: 'none',
@@ -924,20 +937,69 @@
const dataList8 = ref([])
const dataIndex8 = ref(0)
+
+const dataList9 = ref([])
+const dataListTemp9 = ref([])
+const dataIndex9 = ref(0)
+const dataTotal9 = ref(0)
+
const getData8 = () => {
getTemperatureHumidityData().then(res => {
dataList8.value = res.data || []
})
+ monitorDataListP().then(res => {
+ dataList9.value = res.data || []
+ dataList9.value.forEach(item => {
+ if (item.dataList && item.dataList.length > 0) {
+ item.obj = item.dataList[0]
+ }
+ })
+ if (dataList9.value.length > 0) {
+ dataTotal9.value = Math.ceil(dataList9.value.length / 2)
+ dataListTemp9.value = dataList9.value.slice(0, 2)
+ }
+ initEcharts9()
+ })
}
const changeData8 = (num) => {
- if(dataIndex8.value == dataList8.value.length - 1 && num > 0){
+ if (dataIndex8.value == dataList8.value.length - 1 && num > 0) {
dataIndex8.value = 0
- }else if (dataIndex8.value == 0 && num < 0){
+ } else if (dataIndex8.value == 0 && num < 0) {
dataIndex8.value = dataList8.value.length - 1
- }else{
- dataIndex8.value = dataIndex8.value + num
+ } else {
+ dataIndex8.value = dataIndex8.value + num
}
}
+const changeData9 = (num) => {
+ // return
+ if (dataIndex9.value == dataTotal9.value - 1 && num > 0) {
+ dataIndex9.value = 0
+ dataListTemp9.value = dataList9.value.slice(0, 2)
+ } else if (dataIndex9.value == 0 && num < 0) {
+ dataIndex9.value = dataTotal9.value - 1
+ dataListTemp9.value = dataList9.value.slice(dataList9.value.length - 2, dataList9.value.length)
+ } else {
+ dataIndex9.value = dataIndex9.value + num
+ dataListTemp9.value = dataList9.value.slice(dataIndex9.value * 2, (dataIndex9.value + 1) * 2)
+ }
+ initEcharts9()
+}
+const initEcharts9 = () => {
+ dataListTemp9.value.forEach((item, i) => {
+
+ if (item.obj && item.obj.typeCode == 253958) {
+ nextTick(() => {
+ initWatergage('watergage' + i, item)
+ })
+ }
+ if (item.obj && item.obj.typeCode == 254001) {
+ nextTick(() => {
+ initLiquidlevel('liquidlevel' + i, item)
+ })
+ }
+ })
+}
+
const autoplayFlag = (list = [], leng = 4, time = 2000) => {
if (list.length > leng) {
@@ -987,9 +1049,6 @@
getData8()
}, 60 * 60 * 1000)
-
- initWatergage()
- initLiquidlevel()
setTimeout(() => {
loopFn1()
@@ -1273,7 +1332,8 @@
display: flex;
align-items: center;
position: relative;
- .place{
+
+ .place {
position: absolute;
top: 120px;
right: 70px;
@@ -1283,6 +1343,7 @@
width: 120px;
text-align: center;
}
+
.icon {
width: 70px;
height: 70px;
@@ -1307,76 +1368,111 @@
}
}
}
+ }
- .watergage_wrap {
- text-align: center;
- position: relative;
- left: 30px;
- .watergage {
- width: 130px;
- height: 112px;
- }
+ .list_wrap2 {
+ display: flex;
+ align-items: center;
+ height: 206px;
+ background-image: url('@/assets/images/FireFighting/bg_wendu@2x.png');
+ background-size: cover;
- .unit {
- font-weight: 500;
- font-size: 18px;
- position: relative;
- bottom: 16px;
- left: 4px;
+ .item {
+ width: 50%;
+ height: 100%;
- span {
- font-size: 12px;
- font-weight: 400;
+ .title {
+ height: 46px;
+ display: flex;
+ align-items: center;
+ color: #D2E0FF;
+ padding-left: 20px;
+
+ .icon {
+ width: 16px;
+ margin-right: 8px;
}
}
- .place {
+ .watergage_wrap {
+ text-align: center;
position: relative;
- bottom: 16px;
- left: 4px;
- font-size: 13px;
- color: #869CC9;
- }
- }
+ left: 30px;
- .liquidlevel_wrap {
- transform: scale(0.24);
- color: #fff;
- text-align: center;
- position: relative;
- left: 20px;
- bottom: 10px;
+ .watergage {
+ width: 130px;
+ height: 112px;
+ }
- .unit {
- font-weight: 500;
- font-size: 80px;
- position: relative;
- bottom: 24px;
- left: 4px;
+ .unit {
+ font-weight: 500;
+ font-size: 18px;
+ position: relative;
+ bottom: 16px;
+ left: 4px;
+ width: 130px;
+ margin-bottom: 6px;
+ margin-top: 2px;
- span {
- font-size: 52px;
- font-weight: 400;
+ span {
+ font-size: 12px;
+ font-weight: 400;
+ }
+ }
+
+ .place {
+ position: relative;
+ bottom: 16px;
+ left: 4px;
+ width: 130px;
+ font-size: 13px;
+ color: #869CC9;
}
}
- .placeT {
+ .liquidlevel_wrap {
position: relative;
- bottom: 10px;
- left: 4px;
- font-size: 44px;
- color: #869CC9;
- opacity: 0;
- }
- .liquidlevel {
- width: 300px;
- height: 396px;
+ /* border: 6px solid red; */
+ .liquidle_te {
+ font-weight: 500;
+ font-size: 16px;
+ position: absolute;
+ top: 102px;
+ left: 0;
+ width: 214px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ .placeT {
+ font-size: 12px;
+ color: #869CC9;
+ margin-top: 4px;
+ }
+ }
+
+ /* .placeT {
+ position: relative;
+ bottom: 10px;
+ left: 4px;
+ font-size: 74px;
+ color: #869CC9;
+ opacity: 0;
+ } */
+
+ .liquidlevel {
+ width: 300px;
+ height: 400px;
+ transform: scale(0.24);
+ color: #fff;
+ text-align: center;
+ position: relative;
+ left: -42px;
+ top: -140px;
+ }
}
}
-
-
}
}
--
Gitblit v1.9.3