From 9ae3baca4c8730fcc5f7c8daf3b6368cec554ae6 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 25 十二月 2024 18:39:13 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- 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