From 47a63dcdcd1889bd806208dc79937cd8112b8e38 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 19 十一月 2024 16:41:05 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- screen/src/views/EnergyConsum.vue | 258 +++++++++++++++++++++++++++++++-------------------- 1 files changed, 157 insertions(+), 101 deletions(-) diff --git a/screen/src/views/EnergyConsum.vue b/screen/src/views/EnergyConsum.vue index b51bc3d..3fa773b 100644 --- a/screen/src/views/EnergyConsum.vue +++ b/screen/src/views/EnergyConsum.vue @@ -25,7 +25,8 @@ <img src="@/assets/images/nenghao_ic1.png" class="co2" alt=""> <div> <div class="name">鏈勾绱寰幆鐑熺</div> - <div><span class="num" v-if="data1.smokeBoxTotal">{{ data1.smokeBoxTotal.toLocaleString() + <div><span class="num" v-if="data1.smokeBoxTotal || data1.smokeBoxTotal == 0">{{ + data1.smokeBoxTotal.toLocaleString() }}</span><span>鍙�</span></div> </div> </div> @@ -41,6 +42,9 @@ <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"> @@ -51,7 +55,7 @@ <div class="tabs"> <div class="tab" :class="{ active: activeTab2 == 0 }" @click="tabsClick2(0)">鐢ㄦ按</div> <div class="separate"></div> - <div class="tab" :class="{ active: activeTab2 == 2 }" @click="tabsClick2(2)">鐢ㄧ數</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> @@ -70,17 +74,32 @@ <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 == 0">{{ data1.electricityQuantity.toLocaleString() }} + <div class="num" v-if="data1.electricityQuantity">{{ + data1.electricityQuantity.total.toLocaleString() }} </div> </div> </div> - <div class="static"> + <div class="static" v-if="data1.electricityQuantity"> <span class="lab">鍚屾瘮</span> - <img class="icon" src="@/assets/images/ic_up.webp" alt="" /> - <span class="val">{{ data1.electricityYear }}</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>-</span> <span class="lab">鐜瘮</span> - <img class="icon" src="@/assets/images/ic_down.webp" alt="" /> - <span class="val">{{ data1.gasMonth }}</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>-</span> </div> </div> <div class="item"> @@ -88,16 +107,26 @@ <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 == 0">{{ data1.waterQuantity.toLocaleString() }}</div> + <div class="num" v-if="data1.waterQuantity">{{ data1.waterQuantity.total.toLocaleString() }}</div> </div> </div> - <div class="static"> + <div class="static" v-if="data1.waterQuantity"> <span class="lab">鍚屾瘮</span> - <img class="icon" src="@/assets/images/ic_up.webp" alt="" /> - <span class="val">{{ data1.waterMonth }}</span> + <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="" /> + <span class="val" v-if="data1.waterQuantity.totalNum && data1.waterQuantity.totalNum != 0">{{ + Math.abs(((data1.waterQuantity.totalNum - + data1.waterQuantity.sameNum) / data1.waterQuantity.totalNum * 100).toFixed(1)) }}%</span> + <span class="val" v-else>-</span> <span class="lab">鐜瘮</span> - <img class="icon" src="@/assets/images/ic_down.webp" alt="" /> - <span class="val">{{ data1.waterYear }}</span> + <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="" /> + <span class="val" v-if="data1.waterQuantity.totalNum && data1.waterQuantity.totalNum != 0">{{ + Math.abs(((data1.waterQuantity.totalNum - + data1.waterQuantity.ringNum) / data1.waterQuantity.totalNum * 100).toFixed(1)) }}%</span> + <span class="val" v-else>-</span> </div> </div> <div class="item"> @@ -105,62 +134,76 @@ <img class="icon" src="@/assets/images/ic_yongqi@2x.png" alt="" /> <div class="content"> <div class="name">涓婃湀鐢ㄦ皵(t)</div> - <div class="num" v-if="data1.gasQuantity || data1.gasQuantity == 0">{{ data1.gasQuantity.toLocaleString() }}</div> + <div class="num" v-if="data1.gasQuantity">{{ data1.gasQuantity.total.toLocaleString() }}</div> </div> </div> - <div class="static"> + <div class="static" v-if="data1.gasQuantity"> <span class="lab">鍚屾瘮</span> - <img class="icon" src="@/assets/images/ic_up.webp" alt="" /> - <span class="val">{{ data1.gasMonth }}</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.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>-</span> <span class="lab">鐜瘮</span> - <img class="icon" src="@/assets/images/ic_down.webp" alt="" /> - <span class="val">{{ data1.gasYear }}</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.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>-</span> </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">{{ data1.workHouseQuantity || 0 }}<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">{{ data1.officeQuantity || 0 }}<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">{{ data1.parkQuantity || 0 }}<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">{{ data1.productHouseQuantity || 0 }}<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">{{ data1.powerQuantity || 0 }}<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"> + <template v-if="data6 && data6.secondRegionDataList && data6.secondRegionDataList.length > 0"> + <div class="item item1"> + <div class="num fs_linear">{{ data6.secondRegionDataList[0].value }}<span class="unit">kw路h</span></div> + <div class="name">{{ data6.secondRegionDataList[0].name }}</div> + <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> + </div> + <div class="item item2" v-if="data6.secondRegionDataList.length > 1"> + <div class="num fs_linear">{{ data6.secondRegionDataList[1].value }}<span class="unit">kw路h</span></div> + <div class="name">{{ data6.secondRegionDataList[1].name }}</div> + <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> + </div> + <div class="item item3" v-if="data6.secondRegionDataList.length > 2"> + <div class="num fs_linear">{{ data6.secondRegionDataList[2].value }}<span class="unit">kw路h</span></div> + <div class="name">{{ data6.secondRegionDataList[2].name }}</div> + <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> + </div> + <div class="item item4" v-if="data6.secondRegionDataList.length > 3"> + <div class="num fs_linear">{{ data6.secondRegionDataList[3].value }}<span class="unit">kw路h</span></div> + <div class="name">{{ data6.secondRegionDataList[3].name }}</div> + <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> + </div> + <div class="item item5" v-if="data6.secondRegionDataList.length > 4"> + <div class="num fs_linear">{{ data6.secondRegionDataList[4].value }}<span class="unit">kw路h</span></div> + <div class="name">{{ data6.secondRegionDataList[4].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"> - <div class="num fs_linear">{{ data1.yesterdayElectricity || 0 }}</div> + <div class="num fs_linear">{{ data1.yesterdayElectricity.total || 0 }}</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">{{ data1.todayElectricity || 0 }}</div> + <div class="num">{{ data1.todayElectricity.total || 0 }}</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">{{ data1.monthElectricity || 0 }}</div> + <div class="num fs_linear">{{ data1.monthElectricity.total || 0 }}</div> <div class="name">鏈湀鐢ㄧ數</div> <div class="unit">kw路h</div> <img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" /> @@ -181,7 +224,8 @@ <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.toLocaleString() }}</span><span>鍚�</span> + <div><span class="num" v-if="data1.carbon || data1.carbon == 0">{{ data1.carbon.toLocaleString() + }}</span><span>鍚�</span> </div> </div> </div> @@ -195,15 +239,21 @@ <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 data3"> - <div class="top"><span v-if="i < 3">top</span>{{ i }}</div> - <div class="id_card">{{ item.carNo }}</div> - <div class="wrap"> - <ChargeRate :rate="item.rate" :color="i > 2 ? 'cyan' : '#e3a83a'" /> + <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"><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 class="num">{{ item.quantity }}</div> - </div> + </template> + + </div> + <div v-if="data3.length == 0" class="empty_wrap list"> + <img src="@/assets/images/default_empty.png" alt=""> </div> </div> <div class="right_box_three"> @@ -235,6 +285,7 @@ zxenergyDataList, zxlastMonthOil, zxloadCurve, + zxenergyRegionData } from '@/api' @@ -304,7 +355,7 @@ } }, grid: { - top: '26%', + top: '22%', left: '4%', right: '6%', bottom: '2%', @@ -474,9 +525,33 @@ myChart.resize() }) } + +const data1 = ref({}) +const getData1 = () => { + zxcenterData().then(res => { + const result = res.data + data1.value = result + }) +} +const data6 = ref({}) +const getData6 = () => { + zxenergyRegionData().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')) // 缁樺埗鍥捐〃 + let unit = activeTab2.value == 0 ? '鍗曚綅锛歵' : activeTab2.value == 3 ? '鍗曚綅锛歬w路h' : '鍗曚綅锛歮鲁' + myChart.setOption({ grid: { top: '24%', @@ -497,7 +572,7 @@ }, yAxis: { type: 'value', - name: '鍗曚綅锛歬w路h', + name: unit, nameTextStyle: { padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� }, @@ -533,52 +608,25 @@ myChart.resize() }) } - -const data1 = ref({}) -const getData1 = () => { - zxcenterData().then(res => { - const result = res.data - data1.value = result - }) -} -const activeTab2 = ref(0) -const tabsClick2 = (v) => { - activeTab2.value = v - getData2() -} -const data2 = ref([]) const getData2 = () => { zxenergyDataList({ type: activeTab2.value }).then(res => { - const result = res.data + const result = res.data || [] data2.value = result initEnergy() }) } const data3 = ref([]) const getData3 = () => { - data3.value = [ - { carNo: '鐨朅87772', maxOil: 50, quantity: 50 }, - { carNo: '鐨朅81222', maxOil: 50, quantity: 26 }, - { carNo: '鐨朅85035', maxOil: 50, quantity: 24 }, - { carNo: '鐨朅86057', maxOil: 50, quantity: 14 }, - { carNo: '鐨朅81272', maxOil: 50, quantity: 9 }, - { carNo: '鐨朅87772', maxOil: 50, quantity: 1 }, - ] - data3.value = data3.value.map(i => { - if (i.quantity && i.maxOil) { - i.rate = ((i.quantity / i.maxOil) * 25).toFixed(0) - } - return i - }) - return zxlastMonthOil().then(res => { const result = res.data || [] - data3.value = result.map(i => { - if (i.quantity && i.maxOil) { - i.rate = ((i.quantity / i.maxOil) * 25).toFixed(0) - } - return i - }) + 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([]) @@ -586,13 +634,15 @@ zxloadCurve().then(res => { const result = res.data data4.value = result - initLoadReal() + if (data4.value && data4.value.length > 0) { + initLoadReal() + } }) } const data5 = ref([]) const getData5 = () => { - zxenergyDataList({ type: 3 }).then(res => { + zxenergyDataList({ type: 2 }).then(res => { const result = res.data data5.value = result initOperation() @@ -605,6 +655,7 @@ getData3() getData4() getData5() + getData6() }) @@ -742,7 +793,6 @@ height: 544px; .item { - width: 120px; height: 112px; position: absolute; text-align: center; @@ -765,9 +815,12 @@ } .bg { + margin: 0 auto; width: 120px; height: 88px; top: 24px; + left: 50%; + transform: translate(-50%, 0); } } @@ -889,6 +942,7 @@ .list { padding: 20px 24px 4px; + height: 250px; .line { display: flex; @@ -910,8 +964,9 @@ .id_card { color: #DBEAEA; font-weight: 500; - margin-right: 14px; - font-size: 14px; + margin-right: 6px; + font-size: 13px; + width: 64px; } .num { @@ -919,6 +974,7 @@ font-size: 13px; color: #DBEAEA; margin-left: 15px; + width: 40px; } .wrap { -- Gitblit v1.9.3