From 7298d5354963a88643a543b51b90192dc9fc934c Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 11 九月 2025 18:43:14 +0800
Subject: [PATCH] 最新版本541200007
---
screen/src/views/EnergyConsum.vue | 937 +++++++++++++++++++++++++++++++++++++---------------------
1 files changed, 601 insertions(+), 336 deletions(-)
diff --git a/screen/src/views/EnergyConsum.vue b/screen/src/views/EnergyConsum.vue
index 8be04ea..b1ba998 100644
--- a/screen/src/views/EnergyConsum.vue
+++ b/screen/src/views/EnergyConsum.vue
@@ -1,241 +1,285 @@
<template>
- <div class="main_app">
- <img src="@/assets/images/bg_main_app.png" class="main_bg" alt="" />
- <div class="main_header">
- <img src="@/assets/images/maintitle@2x.png" class="main_header_bg" alt="" />
- <div class="title">瀹夋嘲鏅烘収鐗╂祦鍥尯-缁胯壊浣庣⒊杩愯惀</div>
- <div class="time">
- <span class="date">{{ date }}</span>
- <span class="week">{{ week }}</span>
- <span class="time">{{ time }}</span>
- </div>
- </div>
- <div class="main_content">
- <div class="left_box">
- <div class="left_box_one">
- <div class="com_header">
- <div class="title">
- <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
- <div>瀹炴椂涓夌浉鐢垫祦/鐢靛帇</div>
- </div>
- <img src="@/assets/images/title@2x.png" class="bg" alt="" />
- </div>
- <div class="content">
- <div class="item">
- <div class="lab">A鐩哥數娴�(A)</div>
- <div class="val">60</div>
- </div>
- <div class="item">
- <div class="lab">B鐩哥數娴�(A)</div>
- <div class="val">60</div>
- </div>
- <div class="item">
- <div class="lab">C鐩哥數娴�(A)</div>
- <div class="val">60</div>
- </div>
- <div class="item">
- <div class="lab">鏈夊姛鍔熺巼(KW)</div>
- <div class="val">60</div>
- </div>
- <div class="item">
- <div class="lab">鍔熺巼鍥犳暟</div>
- <div class="val">60</div>
- </div>
- <div class="item">
- <div class="lab">鏈夊姛鐢靛害(掳)</div>
- <div class="val">60</div>
- </div>
- </div>
- </div>
- <div class="left_box_two">
- <div class="com_header">
- <div class="title">
- <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
- <div>瀹炴椂璐熻嵎鏇茬嚎</div>
- </div>
- <img src="@/assets/images/title@2x.png" class="bg" alt="" />
- </div>
- <div class="load_wrap">
- <div class="loadRef"></div>
- </div>
- </div>
- <div class="left_box_three">
- <div class="com_header">
- <div class="title">
- <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
- <div>鏈堣兘鑰楀垎鏋�</div>
- </div>
- <div class="tabs">
- <div class="tab active">鐢ㄧ數</div>
- <div class="separate"></div>
- <div class="tab">鐢ㄦ按</div>
- <div class="separate"></div>
- <div class="tab">鐢ㄦ皵</div>
- </div>
- <img src="@/assets/images/title@2x.png" class="bg" alt="" />
- </div>
- <div class="energy_wrap">
- <div class="energyRef"></div>
- </div>
+ <v-scale-screen width="1920" height="960">
+ <div class="main_app">
+ <img src="@/assets/images/bg_main_app.png" class="main_bg" alt="" />
+ <div class="main_header">
+ <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" />
+ <div class="title">瀹夋嘲鏅烘収鐗╂祦鍥尯-缁胯壊浣庣⒊杩愯惀</div>
+ <div class="time_wrap">
+ <span class="date">{{ date }}</span>
+ <span class="week">{{ week }}</span>
+ <span class="time">{{ time }}</span>
</div>
</div>
- <div class="center_box">
- <div class="center_box_one">
- <div class="list">
- <div class="item">
- <div class="header">
- <img class="icon" src="@/assets/images/ic_yongdian@2x.png" alt="" />
- <div class="content">
- <div class="name">涓婃湀鐢ㄧ數(kw路h)</div>
- <div class="num">450</div>
+ <div class="main_content">
+ <div class="left_box">
+ <div class="left_box_one">
+ <div class="com_header">
+ <div class="title">
+ <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
+ <div>鏈勾瀹夊窘涓儫绱寰幆鐑熺</div>
+ </div>
+ <img src="@/assets/images/title@2x.png" class="bg" alt="" />
+ </div>
+ <div class="content">
+ <img src="@/assets/images/nenghao_ic1.png" class="co2" alt="">
+ <div>
+ <div class="name">鏈勾绱寰幆鐑熺</div>
+ <div><span class="num" style="color: #68cfb2;" v-if="data1.smokeBoxTotal || data1.smokeBoxTotal == 0">{{
+ data1.smokeBoxTotal.toLocaleString()
+ }}</span><span>鍙�</span></div>
+ </div>
+ </div>
+ </div>
+ <div class="left_box_two">
+ <div class="com_header">
+ <div class="title">
+ <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
+ <div>瀹炴椂璐熻嵎鏇茬嚎</div>
+ </div>
+ <img src="@/assets/images/title@2x.png" class="bg" alt="" />
+ </div>
+ <div class="load_wrap">
+ <div class="loadRef"></div>
+ </div>
+ <!-- <div v-show="data4.length == 0" class="empty_wrap load_wrap">
+ <img src="@/assets/images/default_empty.png" alt="">
+ </div> -->
+ </div>
+ <div class="left_box_three">
+ <div class="com_header">
+ <div class="title">
+ <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
+ <div>鏈堣兘鑰楀垎鏋�</div>
+ </div>
+ <div class="tabs">
+ <div class="tab" :class="{ active: activeTab2 == 0 }" @click="tabsClick2(0)">鐢ㄦ按</div>
+ <div class="separate"></div>
+ <div class="tab" :class="{ active: activeTab2 == 3 }" @click="tabsClick2(3)">鐢ㄧ數</div>
+ <div class="separate"></div>
+ <div class="tab" :class="{ active: activeTab2 == 1 }" @click="tabsClick2(1)">鐢ㄦ皵</div>
+ </div>
+ <img src="@/assets/images/title@2x.png" class="bg" alt="" />
+ </div>
+ <div class="energy_wrap">
+ <div class="energyRef"></div>
+ </div>
+ </div>
+ </div>
+ <div class="center_box">
+ <div class="center_box_one">
+ <div class="list">
+ <div class="item">
+ <div class="header">
+ <img class="icon" src="@/assets/images/ic_yongdian@2x.png" alt="" />
+ <div class="content">
+ <div class="name">涓婃湀鐢ㄧ數(kw路h)</div>
+ <div class="num" v-if="data1.electricityQuantity">{{
+ data1.electricityQuantity.total.toLocaleString() }}
+ </div>
+ </div>
+ </div>
+ <div class="static" v-if="data1.electricityQuantity">
+ <span class="lab">鍚屾瘮</span>
+ <img v-if="data1.electricityQuantity.totalNum > data1.electricityQuantity.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.electricityQuantity.sameNum && data1.electricityQuantity.sameNum != 0">{{
+ Math.abs(((data1.electricityQuantity.totalNum -
+ data1.electricityQuantity.sameNum) / data1.electricityQuantity.sameNum * 100).toFixed(1))
+ }}%</span>
+ <span class="val" v-else style="margin-left: 4px;"> -</span>
+ <span class="lab">鐜瘮</span>
+ <img v-if="data1.electricityQuantity.totalNum > data1.electricityQuantity.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.electricityQuantity.ringNum && data1.electricityQuantity.ringNum != 0">{{
+ Math.abs(((data1.electricityQuantity.totalNum -
+ data1.electricityQuantity.ringNum) / data1.electricityQuantity.ringNum * 100).toFixed(1))
+ }}%</span>
+ <span class="val" v-else style="margin-left: 4px;"> -</span>
</div>
</div>
- <div class="static">
- <span class="lab">鍚屾瘮</span>
- <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
- <span class="val">11</span>
- <span class="lab">鐜瘮</span>
- <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
- <span class="val">11</span>
- </div>
- </div>
- <div class="item">
- <div class="header">
- <img class="icon" src="@/assets/images/ic_yongshui@2x.png" alt="" />
- <div class="content">
- <div class="name">涓婃湀鐢ㄦ按(t)</div>
- <div class="num">450</div>
+ <div class="item">
+ <div class="header">
+ <img class="icon" src="@/assets/images/ic_yongshui@2x.png" alt="" />
+ <div class="content">
+ <div class="name">涓婃湀鐢ㄦ按(t)</div>
+ <div class="num" v-if="data1.waterQuantity">{{ data1.waterQuantity.total.toLocaleString() }}</div>
+ </div>
+ </div>
+ <div class="static" v-if="data1.waterQuantity">
+ <span class="lab">鍚屾瘮</span>
+ <template v-if="data1.waterQuantity.sameNum">
+ <img v-if="data1.waterQuantity.totalNum > data1.waterQuantity.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.waterQuantity.sameNum && data1.waterQuantity.sameNum != 0">{{
+ Math.abs(((data1.waterQuantity.totalNum -
+ data1.waterQuantity.sameNum) / data1.waterQuantity.sameNum * 100).toFixed(1)) }}%</span>
+ <span class="val" v-else style="margin-left: 4px;">-</span>
+ <span class="lab">鐜瘮</span>
+ <template v-if="data1.waterQuantity.ringNum">
+ <img v-if="data1.waterQuantity.totalNum > data1.waterQuantity.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.waterQuantity.ringNum && data1.waterQuantity.ringNum != 0">{{
+ Math.abs(((data1.waterQuantity.totalNum -
+ data1.waterQuantity.ringNum) / data1.waterQuantity.ringNum * 100).toFixed(1)) }}%</span>
+ <span class="val" v-else style="margin-left: 4px;">-</span>
</div>
</div>
- <div class="static">
- <span class="lab">鍚屾瘮</span>
- <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
- <span class="val">11</span>
- <span class="lab">鐜瘮</span>
- <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
- <span class="val">11</span>
- </div>
- </div>
- <div class="item">
- <div class="header">
- <img class="icon" src="@/assets/images/ic_yongqi@2x.png" alt="" />
- <div class="content">
- <div class="name">涓婃湀鐢ㄦ皵(t)</div>
- <div class="num">450</div>
+ <div class="item">
+ <div class="header">
+ <img class="icon" src="@/assets/images/ic_yongqi@2x.png" alt="" />
+ <div class="content">
+ <div class="name">涓婃湀鐢ㄦ皵(m鲁)</div>
+ <div class="num" v-if="data1.gasQuantity">{{ data1.gasQuantity.total.toLocaleString() }}</div>
+ </div>
+ </div>
+ <div class="static" v-if="data1.gasQuantity">
+ <span class="lab">鍚屾瘮</span>
+ <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>
+ <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>
</div>
</div>
- <div class="static">
- <span class="lab">鍚屾瘮</span>
- <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
- <span class="val">11</span>
- <span class="lab">鐜瘮</span>
- <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
- <span class="val">11</span>
+ </div>
+ </div>
+ <div class="center_box_two">
+ <img class="bg" src="@/assets/images/img_city@2x.png" alt="" />
+ <template v-if="data6 && data6 && data6.length > 0">
+ <div class="item item1" v-if="data6.length > 4">
+ <div class="num fs_linear">{{ data6[4].value }}<span class="unit">kw路h</span></div>
+ <div class="name">{{ data6[4].name }}</div>
+ <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
+ </div>
+ <div class="item item2" v-if="data6.length > 1">
+ <div class="num fs_linear">{{ data6[1].value }}<span class="unit">kw路h</span></div>
+ <div class="name">{{ data6[1].name }}</div>
+ <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
+ </div>
+ <div class="item item3" v-if="data6.length > 2">
+ <div class="num fs_linear">{{ data6[2].value }}<span class="unit">kw路h</span></div>
+ <div class="name">{{ data6[2].name }}</div>
+ <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
+ </div>
+ <div class="item item4" v-if="data6.length > 3">
+ <div class="num fs_linear">{{ data6[3].value }}<span class="unit">kw路h</span></div>
+ <div class="name">{{ data6[3].name }}</div>
+ <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
+ </div>
+ <div class="item item5">
+ <div class="num fs_linear">{{ data6[0].value }}<span class="unit">kw路h</span></div>
+ <div class="name">{{ data6[0].name }}</div>
+ <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
+ </div>
+ </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">{{ dataObj6.obj1.total || 0
+ }}</div>
+ <div class="name">鏄ㄦ棩鐢ㄧ數</div>
+ <div class="unit">kw路h</div>
+ <img v-if="activeDays == 3" 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 bottom2" @click="changeacDay(1)">
+ <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">{{ dataObj6.obj3.total || 0 }}
+ </div>
+ <div class="name">鏈湀鐢ㄧ數</div>
+ <div class="unit">kw路h</div>
+ <img v-if="activeDays == 2" 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>
</div>
</div>
- <div class="center_box_two">
- <img class="bg" src="@/assets/images/img_city@2x.png" alt="" />
- <div class="item item1">
- <div class="num fs_linear">240<span class="unit">kw路h</span></div>
- <div class="name">鑱斿悎宸ユ埧</div>
- <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
- </div>
- <div class="item item2">
- <div class="num fs_linear">240<span class="unit">kw路h</span></div>
- <div class="name">鑱斿悎宸ユ埧</div>
- <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
- </div>
- <div class="item item3">
- <div class="num fs_linear">240<span class="unit">kw路h</span></div>
- <div class="name">鑱斿悎宸ユ埧</div>
- <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
- </div>
- <div class="item item4">
- <div class="num fs_linear">240<span class="unit">kw路h</span></div>
- <div class="name">鑱斿悎宸ユ埧</div>
- <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
- </div>
- <div class="item item5">
- <div class="num fs_linear">240<span class="unit">kw路h</span></div>
- <div class="name">鑱斿悎宸ユ埧</div>
- <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
- </div>
- <div class="bottom_wrap">
- <div class="bottom bottom1">
- <div class="num fs_linear">240</div>
- <div class="name">鏄ㄦ棩鐢ㄧ數</div>
- <div class="unit">kw路h</div>
- <img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
- </div>
- <div class="bottom bottom2">
- <div class="num">240</div>
- <div class="name">浠婃棩鐢ㄧ數</div>
- <div class="unit">kw路h</div>
- <img src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" />
- </div>
- <div class="bottom bottom3">
- <div class="num fs_linear">240</div>
- <div class="name">鏈湀鐢ㄧ數</div>
- <div class="unit">kw路h</div>
- <img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
- </div>
- </div>
- </div>
- </div>
- <div class="right_box">
- <div class="right_box_one">
- <div class="com_header">
- <div class="title">
- <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
- <div>鏈湀纰虫帓鏀鹃噺缁熻</div>
- </div>
- <img src="@/assets/images/title@2x.png" class="bg" alt="" />
- </div>
- <div class="content">
- <img src="@/assets/images/ic_co2@2x.png" class="co2" alt="">
- <div>
- <div class="name">鏈湀绱纰虫帓鏀�</div>
- <div><span class="num">22.22</span><span>鍚�</span></div>
- </div>
- </div>
- </div>
- <div class="right_box_two">
- <div class="com_header">
- <div class="title">
- <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
- <div>涓婃湀娌硅�楁帓琛岀粺璁�</div>
- </div>
- <div class="tabs">娌硅�楋細L</div>
- <img src="@/assets/images/title@2x.png" class="bg" alt="" />
- </div>
- <div class="list">
- <div class="line" v-for="item,i in 6">
- <div class="top"><span v-if="i < 3">top</span>{{ i }}</div>
- <div class="id_card">鐨朅12313</div>
- <div class="wrap">
- <ChargeRate :rate="15" :color />
+ <div class="right_box">
+ <div class="right_box_one">
+ <div class="com_header">
+ <div class="title">
+ <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
+ <div>鏈湀纰虫帓鏀鹃噺缁熻</div>
</div>
- <div class="num">1000</div>
+ <img src="@/assets/images/title@2x.png" class="bg" alt="" />
+ </div>
+ <div class="content">
+ <img src="@/assets/images/ic_co2@2x.png" class="co2" alt="">
+ <div>
+ <div class="name">鏈湀绱纰虫帓鏀�</div>
+ <div><span class="num" v-if="data1.carbon || data1.carbon == 0">{{ data1.carbon.toLocaleString()
+ }}</span><span>鍚�</span>
+ </div>
+ </div>
</div>
</div>
- </div>
- <div class="right_box_three">
- <div class="com_header">
- <div class="title">
- <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
- <div>鏈堟补鑰楀垎鏋�</div>
+ <div class="right_box_two">
+ <div class="com_header">
+ <div class="title">
+ <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
+ <div>涓婃湀娌硅�楁帓琛岀粺璁�</div>
+ </div>
+ <div class="tabs">娌硅�楋細L</div>
+ <img src="@/assets/images/title@2x.png" class="bg" alt="" />
</div>
- <img src="@/assets/images/title@2x.png" class="bg" alt="" />
+ <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>
+ </div>
+ </div>
+ <div v-if="data3.length == 0" class="empty_wrap list">
+ <img src="@/assets/images/default_empty.png" alt="">
+ </div>
</div>
- <div class="wrap">
- <div class="analyseRef"></div>
+ <div class="right_box_three">
+ <div class="com_header">
+ <div class="title">
+ <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
+ <div>鏈堟补鑰楀垎鏋�</div>
+ </div>
+ <img src="@/assets/images/title@2x.png" class="bg" alt="" />
+ </div>
+ <div class="wrap">
+ <div class="analyseRef"></div>
+ </div>
</div>
</div>
</div>
</div>
- </div>
+ </v-scale-screen>
</template>
<script setup>
@@ -243,6 +287,17 @@
import dayjs from 'dayjs'
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,
+ zxlastMonthOil,
+ zxloadCurve,
+ zxenergyRegionData,
+ regionDataRanking
+} from '@/api'
const weekMap = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�',]
@@ -286,13 +341,40 @@
xAxis: {
type: 'category',
boundaryGap: false,
- data: [1,2,3,4,5,5]
+ axisLabel: {
+ color: '#D2E0FF'
+ },
+ data: data5.value.map(i => dayjs(i.timeData).format('M'))
+ },
+ // tooltip: {
+ // trigger: 'axis',
+ // axisPointer: {
+ // type: 'line'
+ // },
+ // },
+ tooltip: {
+ trigger: 'axis',
+ 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'
+ },
nameTextStyle: {
- padding: [0, 0, 0, -16] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂�
+ color: '#D2E0FF',
+ padding: [0, 0, 0, -18] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂�
},
splitLine: {
show: true,
@@ -305,20 +387,15 @@
}
},
grid: {
- top: '16%',
+ top: '22%',
left: '4%',
- right: '2%',
+ right: '6%',
bottom: '2%',
containLabel: true
},
series: [
{
- data: [1,2,3,4,4,5].map(i => {
- return {
- name: i,
- value: i,
- }
- }),
+ data: data5.value.map(i => i.energy),
type: 'line',
areaStyle: {
normal: {
@@ -354,7 +431,7 @@
width: 2, // 绾挎潯绮楃粏
},
symbol: 'circle',
- symbolSize: 10,
+ symbolSize: 6,
itemStyle: {
normal: {
color: '#F3BD00', //鎶樼嚎鐐圭殑棰滆壊
@@ -374,37 +451,45 @@
var myChart = echarts.init(document.querySelector('.loadRef'))
// 缁樺埗鍥捐〃
myChart.setOption({
- // tooltip: {
- // trigger: 'axis',
- // axisPointer: {
- // type: 'line'
- // },
- // formatter: function (params) {
- // setTimeout(() => {
- // console.log('params', params)
- // })
- // return `
- // <div style="background-color: #091123;margin: -12px;padding: 14px;border: 2px solid rgba(1,217,254,0.5);color: #fff;">
- // <div>${params[0].name}鎬婚攢鍞(涓囧厓)</div>
- // <div style="display: flex;align-items: center;">
- // <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #ebbf40;"></div>
- // <div style="margin: 0 4px 0 6px;">鎬婚攢鍞�</div>
- // <span style="color: #ebbf40;">${params[0].value}</span>
- // </div>
- // </div>
- // `
- // }
- // },
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ type: 'line'
+ },
+ // trigger: 'axis',
+ // axisPointer: {
+ // type: 'line'
+ // },
+ // formatter: function (params) {
+ // setTimeout(() => {
+ // console.log('params', params)
+ // })
+ // return `
+ // <div style="background-color: #091123;margin: -12px;padding: 14px;border: 2px solid rgba(1,217,254,0.5);color: #fff;">
+ // <div>${params[0].name}鎬婚攢鍞(涓囧厓)</div>
+ // <div style="display: flex;align-items: center;">
+ // <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #ebbf40;"></div>
+ // <div style="margin: 0 4px 0 6px;">鎬婚攢鍞�</div>
+ // <span style="color: #ebbf40;">${params[0].value}</span>
+ // </div>
+ // </div>
+ // `
+ // }
+ },
xAxis: {
type: 'category',
boundaryGap: false,
- data: [1,2,3,4,5,5]
+ axisLabel: {
+ color: '#D2E0FF'
+ },
+ data: data4.value.map(i => i.timeData)
},
yAxis: {
type: 'value',
name: '鍗曚綅锛歬w路h',
nameTextStyle: {
- padding: [0, 0, 0, -16] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂�
+ padding: [0, 0, 0, -16], // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂�
+ color: '#D2E0FF'
},
splitLine: {
show: true,
@@ -414,10 +499,13 @@
type: 'dashed',
},
splitNumber: 4
+ },
+ axisLabel: {
+ color: '#D2E0FF'
}
},
grid: {
- top: '16%',
+ top: '18%',
left: '4%',
right: '2%',
bottom: '2%',
@@ -425,12 +513,7 @@
},
series: [
{
- data: [1,2,3,4,4,4000].map(i => {
- return {
- name: i,
- value: i,
- }
- }),
+ data: data4.value.map(i => i.energy),
type: 'line',
areaStyle: {
normal: {
@@ -441,7 +524,7 @@
y2: 1,
colorStops: [{
offset: 0,
- color: "rgba(192, 156, 53,.7)" // 0% 澶勭殑棰滆壊
+ color: "#2e6ab5" // 0% 澶勭殑棰滆壊
}, {
offset: 1,
color: "#1b1b12" // 100% 澶勭殑棰滆壊
@@ -458,18 +541,18 @@
x2: 0,
y2: 1,
colorStops: [{
- offset: 0, color: '#F3BD00' // 0% 澶勭殑棰滆壊
+ offset: 0, color: '#2e6ab5' // 0% 澶勭殑棰滆壊
}, {
- offset: 1, color: '#F3BD00' // 100% 澶勭殑棰滆壊
+ offset: 1, color: '#2e6ab5' // 100% 澶勭殑棰滆壊
}],
},
width: 2, // 绾挎潯绮楃粏
},
symbol: 'circle',
- symbolSize: 10,
+ symbolSize: 0,
itemStyle: {
normal: {
- color: '#F3BD00', //鎶樼嚎鐐圭殑棰滆壊
+ color: '#2e6ab5', //鎶樼嚎鐐圭殑棰滆壊
},
},
smooth: true
@@ -481,33 +564,117 @@
myChart.resize()
})
}
-const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a']
+
+const data1 = ref({})
+const getData1 = () => {
+ zxcenterData().then(res => {
+ const result = res.data || {}
+ data1.value = result
+ })
+}
+const activeDays = ref('1')
+const data6 = ref([])
+const dataObj6 = ref({
+ obj1: { total: 0 },
+ obj2: { total: 0 },
+ obj3: { total: 0 },
+})
+const changeacDay = (val) => {
+ activeDays.value = val
+ 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 = () => {
+ 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
+ })
+}
+
+
+const activeTab2 = ref(0)
+const tabsClick2 = (v) => {
+ activeTab2.value = v
+ getData2()
+}
+const data2 = ref([])
const initEnergy = () => {
var myChart = echarts.init(document.querySelector('.energyRef'))
// 缁樺埗鍥捐〃
- const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a']
+ let unit = activeTab2.value == 0 ? '鍗曚綅锛歵' : activeTab2.value == 3 ? '鍗曚綅锛歬w路h' : '鍗曚綅锛歮鲁'
+
myChart.setOption({
grid: {
top: '20%',
- left: '2%',
+ left: '6%',
right: '2%',
bottom: '4%',
containLabel: true
},
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',
- data: [1,2,3,4,4,5]
+ axisLabel: {
+ color: '#D2E0FF'
+ },
+ data: data2.value.map(i => dayjs(i.timeData).format('M'))
},
yAxis: {
type: 'value',
- name: 'kw路h',
+ name: unit,
+ axisLabel: {
+ color: '#D2E0FF'
+ },
nameTextStyle: {
+ color: '#D2E0FF',
padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂�
},
splitLine: {
@@ -520,7 +687,7 @@
},
series: [
{
- data: [1,2,3,4,5],
+ data: data2.value.map(i => i.energy),
type: 'bar',
barWidth: 10,
itemStyle: {
@@ -528,11 +695,11 @@
color: new echarts.graphic.LinearGradient(
0, 0, 0, 1,
[
- { offset: 0, color: arr[1] },
- { offset: 1, color: '#080807' }
+ { offset: 0, color: '#50afd3' },
+ { offset: 1, color: '#1d4861' }
]
),
- barBorderRadius: [10, 10, 0, 0]
+ barBorderRadius: [3, 3, 0, 0]
}
}
}
@@ -542,12 +709,87 @@
myChart.resize()
})
}
+const getData2 = () => {
+ zxenergyDataList({ type: activeTab2.value }).then(res => {
+ const result = res.data || []
+ data2.value = result
+ initEnergy()
+ })
+}
+const data3 = ref([])
+const getData3 = () => {
+ zxlastMonthOil().then(res => {
+ const result = res.data || []
+ if (result.length > 0) {
+ data3.value = result.map(i => {
+ if (i.quantity || i.quantity == 0) {
+ i.rate = ((i.quantity / result[0].quantity) * 25).toFixed(0)
+ }
+ return i
+ })
+ }
+ })
+}
+const data4 = ref([])
+const getData4 = () => {
+ zxloadCurve().then(res => {
+ const result = res.data || []
+ data4.value = result
+ if (data4.value && data4.value.length > 0) {
+ initLoadReal()
+ }
+ })
+}
+
+const data5 = ref([])
+const getData5 = () => {
+ zxenergyDataList({ type: 2 }).then(res => {
+ 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
+ })
+}
onMounted(() => {
- initOperation()
- initLoadReal()
- initEnergy()
-})
+ getData1()
+ getData2()
+ getData3()
+ getData4()
+ getData5()
+ getData6()
+ setInterval(() => {
+ getData4()
+ }, 1000 * 60)
+ setInterval(() => {
+ getData1()
+ getData2()
+ getData3()
+ getData5()
+ getData6()
+ }, 1000 * 60 * 60)
+
+ setTimeout(() => {
+ loopFn1()
+ }, 12000)
+
+})
</script>
@@ -565,37 +807,34 @@
margin-bottom: 20px;
.content {
- width: 100%;
- padding: 24px 5%;
+ height: 164px;
display: flex;
- flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
- .item {
- width: 33.3%;
- margin-bottom: 12px;
+ .co2 {
+ width: 100px;
+ margin-right: 30px;
+ }
- .lab {
- font-size: 14px;
- color: #ffffff;
- }
-
- .val {
- font-weight: 600;
- font-size: 20px;
- color: #01d9fe;
- margin-top: 4px;
- }
+ .num {
+ margin-top: 10px;
+ color: #01D9FE;
+ font-weight: 600;
+ font-size: 36px;
+ margin-right: 2px;
}
}
}
.left_box_two {
margin-bottom: 20px;
- .load_wrap{
+
+ .load_wrap {
width: 100%;
- height: 210px;
- padding: 12px 12px;
- .loadRef{
+ height: 250px;
+
+ .loadRef {
width: 100%;
height: 100%;
}
@@ -603,10 +842,11 @@
}
.left_box_three {
- .energy_wrap{
+ .energy_wrap {
width: 100%;
- height: 200px;
- .energyRef{
+ height: 250px;
+
+ .energyRef {
width: 100%;
height: 100%;
}
@@ -685,7 +925,6 @@
height: 544px;
.item {
- width: 120px;
height: 112px;
position: absolute;
text-align: center;
@@ -708,9 +947,12 @@
}
.bg {
+ margin: 0 auto;
width: 120px;
height: 88px;
top: 24px;
+ left: 50%;
+ transform: translate(-50%, 0);
}
}
@@ -750,11 +992,12 @@
}
.bottom {
- width: 140px;
+ width: 150px;
height: 194px;
position: absolute;
text-align: center;
padding-top: 70px;
+ cursor: pointer;
.num {
font-size: 24px;
@@ -772,6 +1015,13 @@
font-size: 14px;
color: #D0FFFA;
}
+
+ .active {
+ font-size: 36px;
+ color: #01D9FE;
+ font-weight: bold;
+ margin-bottom: 10px;
+ }
}
.bottom1 {
@@ -788,14 +1038,8 @@
bottom: -0px;
left: 50%;
transform: translate(-50%, 0);
- padding-top: 50px;
+ /* padding-top: 50px; */
- .num {
- font-size: 36px;
- color: #01D9FE;
- line-height: 54px;
- font-weight: bold;
- }
}
}
}
@@ -805,6 +1049,7 @@
.right_box_one {
margin-bottom: 20px;
+
.content {
height: 164px;
display: flex;
@@ -825,15 +1070,23 @@
}
}
}
- .right_box_two{
+
+ .right_box_two {
margin-bottom: 20px;
- .list{
- padding: 20px 24px 4px;
- .line{
+
+ .list {
+ padding: 0px 24px;
+ height: 228px;
+ margin: 20px 0 0;
+ overflow: auto;
+
+ .line {
display: flex;
align-items: center;
- margin-bottom: 16px;
- .top{
+ /* margin-bottom: 16px; */
+ height: 38px !important;
+
+ .top {
font-weight: 500;
font-size: 12px;
width: 33px;
@@ -844,19 +1097,28 @@
box-shadow: inset 0px 0px 3px 0px #01D9FE;
margin-right: 10px;
}
- .id_card{
+
+ .top3 {
+ box-shadow: inset 0px 0px 3px 0px #FEAF01;
+ }
+
+ .id_card {
color: #DBEAEA;
font-weight: 500;
- margin-right: 14px;
- font-size: 14px;
+ margin-right: 6px;
+ font-size: 13px;
+ width: 68px;
}
- .num{
+
+ .num {
font-weight: 500;
font-size: 13px;
color: #DBEAEA;
margin-left: 15px;
+ width: 40px;
}
- .wrap{
+
+ .wrap {
flex: 1;
height: 20px;
border: 1px solid #686B6B;
@@ -864,12 +1126,12 @@
}
}
}
- .right_box_three{
- .wrap{
- padding: 8px;
- .analyseRef{
+
+ .right_box_three {
+ .wrap {
+ .analyseRef {
width: 100%;
- height: 210px;
+ height: 250px;
}
}
}
@@ -910,6 +1172,10 @@
font-size: 14px;
color: #d2e0ff;
+ .tab {
+ cursor: pointer;
+ }
+
.separate {
width: 1px;
height: 14px;
@@ -947,7 +1213,7 @@
display: flex;
justify-content: space-between;
align-items: center;
- height: 92px;
+ height: 90px;
position: relative;
padding: 0px 40px 16px;
font-weight: 600;
@@ -963,7 +1229,7 @@
-webkit-text-fill-color: transparent;
}
- .time {
+ .time_wrap {
font-size: 26px;
font-weight: 600;
background-image: -webkit-linear-gradient(top,
@@ -977,15 +1243,14 @@
align-items: center;
.time {
- width: 180px;
+ width: 130px;
display: flex;
justify-content: flex-end;
- padding-bottom: 10px;
- font-size: 36px;
+ font-size: 30px;
}
.week {
- margin-left: 36px;
+ margin-left: 20px;
}
}
@@ -1001,8 +1266,8 @@
}
.main_app {
- width: 100%;
- min-height: 100vh;
+ width: 1920px;
+ height: 980px;
color: #ffffff;
position: relative;
@@ -1016,4 +1281,4 @@
z-index: -1;
}
}
-</style>
\ No newline at end of file
+</style>
--
Gitblit v1.9.3