From 7df781c76f651d21cac02bcdae7f7b3f9e41e275 Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期五, 27 十二月 2024 17:47:41 +0800 Subject: [PATCH] ll --- screen/src/views/EnergyConsum.vue | 869 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 538 insertions(+), 331 deletions(-) diff --git a/screen/src/views/EnergyConsum.vue b/screen/src/views/EnergyConsum.vue index 475cde1..76eaed1 100644 --- a/screen/src/views/EnergyConsum.vue +++ b/screen/src/views/EnergyConsum.vue @@ -1,241 +1,289 @@ <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.totalNum && data1.electricityQuantity.totalNum != 0">{{ + Math.abs(((data1.electricityQuantity.totalNum - + data1.electricityQuantity.sameNum) / data1.electricityQuantity.totalNum * 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.totalNum && data1.electricityQuantity.totalNum != 0">{{ + Math.abs(((data1.electricityQuantity.totalNum - + data1.electricityQuantity.ringNum) / data1.electricityQuantity.totalNum * 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> + <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 + * 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 + * 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">{{ data1.yesterdayElectricity.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">{{ data1.todayElectricity.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> + <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 +291,18 @@ 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 = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�',] const date = ref(dayjs().format('YYYY.MM.DD')) @@ -285,13 +345,26 @@ 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' + }, }, yAxis: { type: 'value', name: '鍗曚綅锛歀', + axisLabel: { + color: '#D2E0FF' + }, nameTextStyle: { - padding: [0, 0, 0, -16] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� + color: '#D2E0FF', + padding: [0, 0, 0, -18] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� }, splitLine: { show: true, @@ -304,20 +377,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: { @@ -353,7 +421,7 @@ width: 2, // 绾挎潯绮楃粏 }, symbol: 'circle', - symbolSize: 10, + symbolSize: 6, itemStyle: { normal: { color: '#F3BD00', //鎶樼嚎鐐圭殑棰滆壊 @@ -373,37 +441,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, @@ -413,10 +489,13 @@ type: 'dashed', }, splitNumber: 4 + }, + axisLabel: { + color: '#D2E0FF' } }, grid: { - top: '16%', + top: '18%', left: '4%', right: '2%', bottom: '2%', @@ -424,12 +503,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: { @@ -440,7 +514,7 @@ y2: 1, colorStops: [{ offset: 0, - color: "rgba(192, 156, 53,.7)" // 0% 澶勭殑棰滆壊 + color: "#2e6ab5" // 0% 澶勭殑棰滆壊 }, { offset: 1, color: "#1b1b12" // 100% 澶勭殑棰滆壊 @@ -457,18 +531,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 @@ -480,15 +554,43 @@ 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 changeacDay = (val) => { + activeDays.value = val + getData6() +} +const getData6 = () => { + regionDataRanking({ type: activeDays.value }).then(res => { + const result = res.data + data6.value = result + }) +} + + +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 @@ -501,12 +603,19 @@ }, 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: { @@ -519,7 +628,7 @@ }, series: [ { - data: [1,2,3,4,5], + data: data2.value.map(i => i.energy), type: 'bar', barWidth: 10, itemStyle: { @@ -527,11 +636,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] } } } @@ -541,12 +650,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> @@ -564,37 +748,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%; } @@ -602,10 +783,11 @@ } .left_box_three { - .energy_wrap{ + .energy_wrap { width: 100%; - height: 200px; - .energyRef{ + height: 250px; + + .energyRef { width: 100%; height: 100%; } @@ -684,7 +866,6 @@ height: 544px; .item { - width: 120px; height: 112px; position: absolute; text-align: center; @@ -707,9 +888,12 @@ } .bg { + margin: 0 auto; width: 120px; height: 88px; top: 24px; + left: 50%; + transform: translate(-50%, 0); } } @@ -754,6 +938,7 @@ position: absolute; text-align: center; padding-top: 70px; + cursor: pointer; .num { font-size: 24px; @@ -771,6 +956,13 @@ font-size: 14px; color: #D0FFFA; } + + .active { + font-size: 36px; + color: #01D9FE; + font-weight: bold; + margin-bottom: 10px; + } } .bottom1 { @@ -787,14 +979,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; - } } } } @@ -804,6 +990,7 @@ .right_box_one { margin-bottom: 20px; + .content { height: 164px; display: flex; @@ -824,15 +1011,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; @@ -843,19 +1038,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; @@ -863,12 +1067,12 @@ } } } - .right_box_three{ - .wrap{ - padding: 8px; - .analyseRef{ + + .right_box_three { + .wrap { + .analyseRef { width: 100%; - height: 210px; + height: 250px; } } } @@ -909,6 +1113,10 @@ font-size: 14px; color: #d2e0ff; + .tab { + cursor: pointer; + } + .separate { width: 1px; height: 14px; @@ -946,7 +1154,7 @@ display: flex; justify-content: space-between; align-items: center; - height: 92px; + height: 90px; position: relative; padding: 0px 40px 16px; font-weight: 600; @@ -962,7 +1170,7 @@ -webkit-text-fill-color: transparent; } - .time { + .time_wrap { font-size: 26px; font-weight: 600; background-image: -webkit-linear-gradient(top, @@ -976,15 +1184,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; } } @@ -1000,8 +1207,8 @@ } .main_app { - width: 100%; - min-height: 100vh; + width: 1920px; + height: 980px; color: #ffffff; position: relative; -- Gitblit v1.9.3