| | |
| | | <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">皖A12313</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"> |
| | | <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> |
| | | </template> |
| | | |
| | | </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> |
| | |
| | | import dayjs from 'dayjs' |
| | | import ChargeRate from '@/components/ChargeRate.vue' |
| | | import * as echarts from 'echarts' |
| | | import VScaleScreen from 'v-scale-screen' |
| | | import { |
| | | zxcenterData, |
| | | zxenergyDataList, |
| | | zxlastMonthOil, |
| | | zxloadCurve, |
| | | zxenergyRegionData, |
| | | regionDataRanking |
| | | } from '@/api' |
| | | |
| | | |
| | | const weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',] |
| | | const date = ref(dayjs().format('YYYY.MM.DD')) |
| | |
| | | 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: '单位:L', |
| | | axisLabel: { |
| | | color: '#D2E0FF' |
| | | }, |
| | | nameTextStyle: { |
| | | padding: [0, 0, 0, -16] // 四个数字分别为上右下左与原位置距离 |
| | | color: '#D2E0FF', |
| | | padding: [0, 0, 0, -18] // 四个数字分别为上右下左与原位置距离 |
| | | }, |
| | | splitLine: { |
| | | show: true, |
| | |
| | | } |
| | | }, |
| | | 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: { |
| | |
| | | width: 2, // 线条粗细 |
| | | }, |
| | | symbol: 'circle', |
| | | symbolSize: 10, |
| | | symbolSize: 6, |
| | | itemStyle: { |
| | | normal: { |
| | | color: '#F3BD00', //折线点的颜色 |
| | |
| | | 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: '单位:kw·h', |
| | | nameTextStyle: { |
| | | padding: [0, 0, 0, -16] // 四个数字分别为上右下左与原位置距离 |
| | | padding: [0, 0, 0, -16], // 四个数字分别为上右下左与原位置距离 |
| | | color: '#D2E0FF' |
| | | }, |
| | | splitLine: { |
| | | show: true, |
| | |
| | | type: 'dashed', |
| | | }, |
| | | splitNumber: 4 |
| | | }, |
| | | axisLabel: { |
| | | color: '#D2E0FF' |
| | | } |
| | | }, |
| | | grid: { |
| | | top: '16%', |
| | | top: '18%', |
| | | left: '4%', |
| | | right: '2%', |
| | | bottom: '2%', |
| | |
| | | }, |
| | | 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: { |
| | |
| | | y2: 1, |
| | | colorStops: [{ |
| | | offset: 0, |
| | | color: "rgba(192, 156, 53,.7)" // 0% 处的颜色 |
| | | color: "#2e6ab5" // 0% 处的颜色 |
| | | }, { |
| | | offset: 1, |
| | | color: "#1b1b12" // 100% 处的颜色 |
| | |
| | | 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 |
| | |
| | | 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 ? '单位:t' : activeTab2.value == 3 ? '单位:kw·h' : '单位:m³' |
| | | |
| | | myChart.setOption({ |
| | | grid: { |
| | | top: '20%', |
| | | left: '2%', |
| | | left: '6%', |
| | | right: '2%', |
| | | bottom: '4%', |
| | | containLabel: true |
| | |
| | | }, |
| | | 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: { |
| | |
| | | }, |
| | | series: [ |
| | | { |
| | | data: [1,2,3,4,5], |
| | | data: data2.value.map(i => i.energy), |
| | | type: 'bar', |
| | | barWidth: 10, |
| | | itemStyle: { |
| | |
| | | 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] |
| | | } |
| | | } |
| | | } |
| | |
| | | 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() |
| | | }) |
| | | } |
| | | |
| | | onMounted(() => { |
| | | initOperation() |
| | | initLoadReal() |
| | | initEnergy() |
| | | }) |
| | | getData1() |
| | | getData2() |
| | | getData3() |
| | | getData4() |
| | | getData5() |
| | | getData6() |
| | | setInterval(() => { |
| | | getData4() |
| | | }, 1000 * 60) |
| | | setInterval(() => { |
| | | getData1() |
| | | getData2() |
| | | getData3() |
| | | getData5() |
| | | getData6() |
| | | }, 1000 * 60 * 60) |
| | | |
| | | }) |
| | | |
| | | |
| | | </script> |
| | |
| | | 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%; |
| | | } |
| | |
| | | } |
| | | |
| | | .left_box_three { |
| | | .energy_wrap{ |
| | | .energy_wrap { |
| | | width: 100%; |
| | | height: 200px; |
| | | .energyRef{ |
| | | height: 250px; |
| | | |
| | | .energyRef { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | |
| | | height: 544px; |
| | | |
| | | .item { |
| | | width: 120px; |
| | | height: 112px; |
| | | position: absolute; |
| | | text-align: center; |
| | |
| | | } |
| | | |
| | | .bg { |
| | | margin: 0 auto; |
| | | width: 120px; |
| | | height: 88px; |
| | | top: 24px; |
| | | left: 50%; |
| | | transform: translate(-50%, 0); |
| | | } |
| | | } |
| | | |
| | |
| | | position: absolute; |
| | | text-align: center; |
| | | padding-top: 70px; |
| | | cursor: pointer; |
| | | |
| | | .num { |
| | | font-size: 24px; |
| | |
| | | font-size: 14px; |
| | | color: #D0FFFA; |
| | | } |
| | | |
| | | .active { |
| | | font-size: 36px; |
| | | color: #01D9FE; |
| | | font-weight: bold; |
| | | margin-bottom: 10px; |
| | | } |
| | | } |
| | | |
| | | .bottom1 { |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | .right_box_one { |
| | | margin-bottom: 20px; |
| | | |
| | | .content { |
| | | height: 164px; |
| | | display: flex; |
| | |
| | | } |
| | | } |
| | | } |
| | | .right_box_two{ |
| | | |
| | | .right_box_two { |
| | | margin-bottom: 20px; |
| | | .list{ |
| | | |
| | | .list { |
| | | padding: 20px 24px 4px; |
| | | .line{ |
| | | height: 250px; |
| | | |
| | | .line { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 16px; |
| | | .top{ |
| | | |
| | | .top { |
| | | font-weight: 500; |
| | | font-size: 12px; |
| | | width: 33px; |
| | |
| | | box-shadow: inset 0px 0px 3px 0px #01D9FE; |
| | | margin-right: 10px; |
| | | } |
| | | .id_card{ |
| | | |
| | | .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; |
| | |
| | | } |
| | | } |
| | | } |
| | | .right_box_three{ |
| | | .wrap{ |
| | | padding: 8px; |
| | | .analyseRef{ |
| | | |
| | | .right_box_three { |
| | | .wrap { |
| | | .analyseRef { |
| | | width: 100%; |
| | | height: 210px; |
| | | height: 250px; |
| | | } |
| | | } |
| | | } |
| | |
| | | font-size: 14px; |
| | | color: #d2e0ff; |
| | | |
| | | .tab { |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .separate { |
| | | width: 1px; |
| | | height: 14px; |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | height: 92px; |
| | | height: 90px; |
| | | position: relative; |
| | | padding: 0px 40px 16px; |
| | | font-weight: 600; |
| | |
| | | -webkit-text-fill-color: transparent; |
| | | } |
| | | |
| | | .time { |
| | | .time_wrap { |
| | | font-size: 26px; |
| | | font-weight: 600; |
| | | background-image: -webkit-linear-gradient(top, |
| | |
| | | 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; |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | .main_app { |
| | | width: 100%; |
| | | min-height: 100vh; |
| | | width: 1920px; |
| | | height: 980px; |
| | | color: #ffffff; |
| | | position: relative; |
| | | |