| | |
| | | <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> |
| | | }}</span><span>个</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <div class="static" v-if="data1.electricityQuantity"> |
| | | <span class="lab">同比</span> |
| | | <template v-if="data1.electricityQuantity.sameNum"> |
| | | <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="" /> |
| | | </template> |
| | | <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 - |
| | |
| | | }}%</span> |
| | | <span class="val" v-else style="margin-left: 4px;"> -</span> |
| | | <span class="lab">环比</span> |
| | | <template v-if="data1.electricityQuantity.ringNum"> |
| | | <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="" /> |
| | | </template> |
| | | |
| | | <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 - |
| | |
| | | <div class="header"> |
| | | <img class="icon" src="@/assets/images/ic_yongqi@2x.png" alt="" /> |
| | | <div class="content"> |
| | | <div class="name">上月用气(t)</div> |
| | | <div class="name">上月用气(m³)</div> |
| | | <div class="num" v-if="data1.gasQuantity">{{ data1.gasQuantity.total.toLocaleString() }}</div> |
| | | </div> |
| | | </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="{ 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="{ 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="{ 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="" /> |
| | |
| | | <div class="tabs">油耗:L</div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div v-if="data3 && data3.length > 0" class="list"> |
| | | <template v-for="item, i in data3"> |
| | | <div v-if="i < 6" class="line"> |
| | | <div class="top"><span v-if="i < 3">top</span>{{ i + 1 }}</div> |
| | | <div v-if="data3 && data3.length > 0" class="list one-swiper"> |
| | | <div class="swiper-wrapper"> |
| | | <div class="line one-swiper-slide swiper-slide" v-for="item, i in data3"> |
| | | <div class="top" :class="{ top3: i < 3 }"><span v-if="i < 3">top</span>{{ i + 1 }}</div> |
| | | <div class="id_card">{{ item.carNo }}</div> |
| | | <div class="wrap"> |
| | | <ChargeRate :rate="item.rate" :color="i > 2 ? 'cyan' : '#e3a83a'" /> |
| | | </div> |
| | | <div class="num">{{ item.quantity }}</div> |
| | | </div> |
| | | </template> |
| | | |
| | | </div> |
| | | </div> |
| | | <div v-if="data3.length == 0" class="empty_wrap list"> |
| | | <img src="@/assets/images/default_empty.png" alt=""> |
| | |
| | | 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, |
| | |
| | | xAxis: { |
| | | type: 'category', |
| | | boundaryGap: false, |
| | | data: data5.value.map(i => i.timeData) |
| | | axisLabel: { |
| | | color: '#D2E0FF' |
| | | }, |
| | | data: data5.value.map(i => dayjs(i.timeData).format('M')) |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | |
| | | yAxis: { |
| | | type: 'value', |
| | | name: '单位:L', |
| | | axisLabel: { |
| | | color: '#D2E0FF' |
| | | }, |
| | | nameTextStyle: { |
| | | padding: [0, 0, 0, -16] // 四个数字分别为上右下左与原位置距离 |
| | | color: '#D2E0FF', |
| | | padding: [0, 0, 0, -18] // 四个数字分别为上右下左与原位置距离 |
| | | }, |
| | | splitLine: { |
| | | show: true, |
| | |
| | | xAxis: { |
| | | type: 'category', |
| | | boundaryGap: false, |
| | | 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: '26%', |
| | | top: '18%', |
| | | left: '4%', |
| | | right: '2%', |
| | | bottom: '2%', |
| | |
| | | getData6() |
| | | } |
| | | const getData6 = () => { |
| | | regionDataRanking({type: activeDays.value}).then(res => { |
| | | regionDataRanking({ type: activeDays.value }).then(res => { |
| | | const result = res.data |
| | | data6.value = result |
| | | }) |
| | |
| | | |
| | | myChart.setOption({ |
| | | grid: { |
| | | top: '24%', |
| | | top: '20%', |
| | | left: '6%', |
| | | right: '2%', |
| | | bottom: '4%', |
| | |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: data2.value.map(i => i.timeData) |
| | | axisLabel: { |
| | | color: '#D2E0FF' |
| | | }, |
| | | data: data2.value.map(i => dayjs(i.timeData).format('M')) |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | name: unit, |
| | | axisLabel: { |
| | | color: '#D2E0FF' |
| | | }, |
| | | nameTextStyle: { |
| | | color: '#D2E0FF', |
| | | padding: [0, 0, 4, -30] // 四个数字分别为上右下左与原位置距离 |
| | | }, |
| | | splitLine: { |
| | |
| | | }) |
| | | } |
| | | |
| | | 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自己或子元素时,自动初始化swiper |
| | | }) |
| | | } |
| | | |
| | | onMounted(() => { |
| | | getData1() |
| | | getData2() |
| | |
| | | getData5() |
| | | getData6() |
| | | }, 1000 * 60 * 60) |
| | | |
| | | setTimeout(() => { |
| | | loopFn1() |
| | | }, 12000) |
| | | |
| | | }) |
| | | |
| | |
| | | text-align: center; |
| | | padding-top: 70px; |
| | | cursor: pointer; |
| | | |
| | | .num { |
| | | font-size: 24px; |
| | | color: #D0FFFA; |
| | |
| | | font-size: 14px; |
| | | color: #D0FFFA; |
| | | } |
| | | |
| | | .active { |
| | | font-size: 36px; |
| | | color: #01D9FE; |
| | |
| | | margin-bottom: 20px; |
| | | |
| | | .list { |
| | | padding: 20px 24px 4px; |
| | | height: 250px; |
| | | padding: 0px 24px; |
| | | height: 228px; |
| | | margin: 20px 0 0; |
| | | overflow: auto; |
| | | |
| | | .line { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 16px; |
| | | /* margin-bottom: 16px; */ |
| | | height: 38px !important; |
| | | |
| | | .top { |
| | | font-weight: 500; |
| | |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .top3 { |
| | | box-shadow: inset 0px 0px 3px 0px #FEAF01; |
| | | } |
| | | |
| | | .id_card { |
| | | color: #DBEAEA; |
| | | font-weight: 500; |