From c3aaf28f7316cce12eec007a9f85a96cbcddeec2 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 07 五月 2025 10:34:20 +0800
Subject: [PATCH] 最新版本541200007
---
screen/src/views/EnergyConsum.vue | 189 ++++++++++++++++++++++++++++++++++-------------
1 files changed, 137 insertions(+), 52 deletions(-)
diff --git a/screen/src/views/EnergyConsum.vue b/screen/src/views/EnergyConsum.vue
index 419ae85..33a6337 100644
--- a/screen/src/views/EnergyConsum.vue
+++ b/screen/src/views/EnergyConsum.vue
@@ -85,9 +85,9 @@
src="@/assets/images/ic_up.webp" alt="" />
<img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
<span class="val"
- v-if="data1.electricityQuantity.totalNum && data1.electricityQuantity.totalNum != 0">{{
+ v-if="data1.electricityQuantity.sameNum && data1.electricityQuantity.sameNum != 0">{{
Math.abs(((data1.electricityQuantity.totalNum -
- data1.electricityQuantity.sameNum) / data1.electricityQuantity.totalNum * 100).toFixed(1))
+ data1.electricityQuantity.sameNum) / data1.electricityQuantity.sameNum * 100).toFixed(1))
}}%</span>
<span class="val" v-else style="margin-left: 4px;"> -</span>
<span class="lab">鐜瘮</span>
@@ -95,9 +95,9 @@
src="@/assets/images/ic_up.webp" alt="" />
<img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
<span class="val"
- v-if="data1.electricityQuantity.totalNum && data1.electricityQuantity.totalNum != 0">{{
+ v-if="data1.electricityQuantity.ringNum && data1.electricityQuantity.ringNum != 0">{{
Math.abs(((data1.electricityQuantity.totalNum -
- data1.electricityQuantity.ringNum) / data1.electricityQuantity.totalNum * 100).toFixed(1))
+ data1.electricityQuantity.ringNum) / data1.electricityQuantity.ringNum * 100).toFixed(1))
}}%</span>
<span class="val" v-else style="margin-left: 4px;"> -</span>
</div>
@@ -143,24 +143,20 @@
</div>
<div class="static" v-if="data1.gasQuantity">
<span class="lab">鍚屾瘮</span>
- <template v-if="data1.gasQuantity.sameNum">
- <img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.sameNum" class="icon"
- src="@/assets/images/ic_up.webp" alt="" />
- <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
- </template>
- <span class="val" v-if="data1.gasQuantity.totalNum && data1.gasQuantity.totalNum != 0">{{
- Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.sameNum) / data1.gasQuantity.totalNum
+ <img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.sameNum" class="icon"
+ src="@/assets/images/ic_up.webp" alt="" />
+ <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+ <span class="val" v-if="data1.gasQuantity.sameNum && data1.gasQuantity.sameNum != 0">{{
+ Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.sameNum) / data1.gasQuantity.sameNum
* 100).toFixed(1))
}}%</span>
<span class="val" v-else style="margin-left: 4px;">-</span>
<span class="lab">鐜瘮</span>
- <template v-if="data1.gasQuantity.sameNum">
- <img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.ringNum" class="icon"
- src="@/assets/images/ic_up.webp" alt="" />
- <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
- </template>
- <span class="val" v-if="data1.gasQuantity.totalNum && data1.gasQuantity.totalNum != 0">{{
- Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.ringNum) / data1.gasQuantity.totalNum
+ <img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.ringNum" class="icon"
+ src="@/assets/images/ic_up.webp" alt="" />
+ <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+ <span class="val" v-if="data1.gasQuantity.ringNum && data1.gasQuantity.ringNum != 0">{{
+ Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.ringNum) / data1.gasQuantity.ringNum
* 100).toFixed(1))
}}%</span>
<span class="val" v-else style="margin-left: 4px;">-</span>
@@ -199,7 +195,7 @@
</template>
<div class="bottom_wrap" v-if="data1.yesterdayElectricity">
<div class="bottom bottom1" @click="changeacDay(3)">
- <div :class="{ active: activeDays == 3 }" class="num fs_linear">{{ data1.yesterdayElectricity.total || 0
+ <div :class="{ active: activeDays == 3 }" class="num fs_linear">{{ dataObj6.obj1.total || 0
}}</div>
<div class="name">鏄ㄦ棩鐢ㄧ數</div>
<div class="unit">kw路h</div>
@@ -207,14 +203,14 @@
<img v-else src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
</div>
<div class="bottom bottom2" @click="changeacDay(1)">
- <div :class="{ active: activeDays == 1 }" class="num">{{ data1.todayElectricity.total || 0 }}</div>
+ <div :class="{ active: activeDays == 1 }" class="num">{{ dataObj6.obj2.total || 0 }}</div>
<div class="name">浠婃棩鐢ㄧ數</div>
<div class="unit">kw路h</div>
<img v-if="activeDays == 1" src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" />
<img v-else src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
</div>
<div class="bottom bottom3" @click="changeacDay(2)">
- <div :class="{ active: activeDays == 2 }" class="num fs_linear">{{ data1.monthElectricity.total || 0 }}
+ <div :class="{ active: activeDays == 2 }" class="num fs_linear">{{ dataObj6.obj3.total || 0 }}
</div>
<div class="name">鏈湀鐢ㄧ數</div>
<div class="unit">kw路h</div>
@@ -252,18 +248,17 @@
<div class="tabs">娌硅�楋細L</div>
<img src="@/assets/images/title@2x.png" class="bg" alt="" />
</div>
- <div v-if="data3 && data3.length > 0" class="list">
- <template v-for="item, i in data3">
- <div v-if="i < 6" class="line">
- <div class="top" :class="{top3: i < 3}"><span v-if="i < 3">top</span>{{ i + 1 }}</div>
+ <div v-if="data3 && data3.length > 0" class="list one-swiper">
+ <div class="swiper-wrapper">
+ <div class="line one-swiper-slide swiper-slide" v-for="item, i in data3">
+ <div class="top" :class="{ top3: i < 3 }"><span v-if="i < 3">top</span>{{ i + 1 }}</div>
<div class="id_card">{{ item.carNo }}</div>
<div class="wrap">
<ChargeRate :rate="item.rate" :color="i > 2 ? 'cyan' : '#e3a83a'" />
</div>
<div class="num">{{ item.quantity }}</div>
</div>
- </template>
-
+ </div>
</div>
<div v-if="data3.length == 0" class="empty_wrap list">
<img src="@/assets/images/default_empty.png" alt="">
@@ -293,6 +288,8 @@
import ChargeRate from '@/components/ChargeRate.vue'
import * as echarts from 'echarts'
import VScaleScreen from 'v-scale-screen'
+import 'swiper/css/swiper.min.css'
+import Swiper from 'swiper'
import {
zxcenterData,
zxenergyDataList,
@@ -345,21 +342,35 @@
type: 'category',
boundaryGap: false,
axisLabel: {
- color: '#D2E0FF'
+ color: '#D2E0FF'
},
data: data5.value.map(i => dayjs(i.timeData).format('M'))
},
+ // tooltip: {
+ // trigger: 'axis',
+ // axisPointer: {
+ // type: 'line'
+ // },
+ // },
tooltip: {
trigger: 'axis',
- axisPointer: {
- type: 'line'
- },
+ formatter: function (params) {
+ // 閬嶅巻鎮诞鏃剁殑鎵�鏈夌偣锛屽畾鍒跺寲鏄剧ず鍐呭
+ let result = `<div>
+ <div style="width: 120px">${params[0].name}鏈�</div>
+ <div style="display: flex;align-items: center;;margin-top: 2px;">
+ <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #f6d047;margin-right: 6px;"></div></div>
+ <div><strong>${params[0].value} L</strong></div>
+ </div>
+ </div>`
+ return result
+ }
},
yAxis: {
type: 'value',
name: '鍗曚綅锛歀',
axisLabel: {
- color: '#D2E0FF'
+ color: '#D2E0FF'
},
nameTextStyle: {
color: '#D2E0FF',
@@ -469,7 +480,7 @@
type: 'category',
boundaryGap: false,
axisLabel: {
- color: '#D2E0FF'
+ color: '#D2E0FF'
},
data: data4.value.map(i => i.timeData)
},
@@ -490,7 +501,7 @@
splitNumber: 4
},
axisLabel: {
- color: '#D2E0FF'
+ color: '#D2E0FF'
}
},
grid: {
@@ -557,20 +568,61 @@
const data1 = ref({})
const getData1 = () => {
zxcenterData().then(res => {
- const result = res.data
+ const result = res.data || {}
data1.value = result
})
}
const activeDays = ref('1')
-const data6 = ref({})
+const data6 = ref([])
+const dataObj6 = ref({
+ obj1: { total: 0 },
+ obj2: { total: 0 },
+ obj3: { total: 0 },
+})
const changeacDay = (val) => {
activeDays.value = val
- getData6()
+ if (val == 3) {
+ data6.value = dataObj6.value.obj1.list
+ } else if (val == 1) {
+ data6.value = dataObj6.value.obj2.list
+ } else {
+ data6.value = dataObj6.value.obj3.list
+ }
}
+
const getData6 = () => {
- regionDataRanking({ type: activeDays.value }).then(res => {
- const result = res.data
- data6.value = result
+ let obj = {
+ obj1: { list: [], total: 0 },
+ obj2: { list: [], total: 0 },
+ obj3: { list: [], total: 0 },
+ }
+ regionDataRanking({ type: 3 }).then(res => {
+ let arr = res.data || []
+ obj.obj1.list = arr
+ arr.forEach(i => {
+ obj.obj1.total += Number(i.value)
+ })
+ obj.obj1.total = obj.obj1.total.toFixed(1)
+ dataObj6.value = obj
+ })
+ regionDataRanking({ type: 1 }).then(res => {
+ let arr = res.data || []
+ obj.obj2.list = arr
+ arr.forEach(i => {
+ obj.obj2.total += Number(i.value)
+ })
+ obj.obj2.total = obj.obj2.total.toFixed(1)
+ dataObj6.value = obj
+ changeacDay(1)
+ })
+ regionDataRanking({ type: 2 }).then(res => {
+ let arr = res.data || []
+ obj.obj3.list = arr
+ arr.forEach(i => {
+ obj.obj3.total += Number(i.value)
+ })
+ obj.obj3.total = obj.obj3.total.toFixed(1)
+ dataObj6.value = obj
})
}
@@ -596,14 +648,22 @@
},
tooltip: {
trigger: 'axis',
- axisPointer: {
- type: 'line'
- },
+ formatter: function (params) {
+ // 閬嶅巻鎮诞鏃剁殑鎵�鏈夌偣锛屽畾鍒跺寲鏄剧ず鍐呭
+ let result = `<div>
+ <div style="width: 120px">${params[0].name}鏈�</div>
+ <div style="display: flex;align-items: center;;margin-top: 2px;">
+ <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #61a1c4;margin-right: 6px;"></div></div>
+ <div><strong>${params[0].value} </strong></div>
+ </div>
+ </div>`
+ return result
+ }
},
xAxis: {
type: 'category',
axisLabel: {
- color: '#D2E0FF'
+ color: '#D2E0FF'
},
data: data2.value.map(i => dayjs(i.timeData).format('M'))
},
@@ -611,7 +671,7 @@
type: 'value',
name: unit,
axisLabel: {
- color: '#D2E0FF'
+ color: '#D2E0FF'
},
nameTextStyle: {
color: '#D2E0FF',
@@ -673,7 +733,7 @@
const data4 = ref([])
const getData4 = () => {
zxloadCurve().then(res => {
- const result = res.data
+ const result = res.data || []
data4.value = result
if (data4.value && data4.value.length > 0) {
initLoadReal()
@@ -684,9 +744,26 @@
const data5 = ref([])
const getData5 = () => {
zxenergyDataList({ type: 2 }).then(res => {
- const result = res.data
+ const result = res.data || []
data5.value = result
initOperation()
+ })
+}
+
+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: 6,
+ autoplay: autoplayFlag(data3.value, 6, 4000),
+ observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
})
}
@@ -707,6 +784,10 @@
getData5()
getData6()
}, 1000 * 60 * 60)
+
+ setTimeout(() => {
+ loopFn1()
+ }, 12000)
})
@@ -911,7 +992,7 @@
}
.bottom {
- width: 140px;
+ width: 150px;
height: 194px;
position: absolute;
text-align: center;
@@ -994,13 +1075,16 @@
margin-bottom: 20px;
.list {
- padding: 20px 24px 4px;
- height: 250px;
+ padding: 0px 24px;
+ height: 228px;
+ margin: 20px 0 0;
+ overflow: auto;
.line {
display: flex;
align-items: center;
- margin-bottom: 16px;
+ /* margin-bottom: 16px; */
+ height: 38px !important;
.top {
font-weight: 500;
@@ -1013,7 +1097,8 @@
box-shadow: inset 0px 0px 3px 0px #01D9FE;
margin-right: 10px;
}
- .top3{
+
+ .top3 {
box-shadow: inset 0px 0px 3px 0px #FEAF01;
}
--
Gitblit v1.9.3