ll
liukangdong
2024-12-27 7df781c76f651d21cac02bcdae7f7b3f9e41e275
screen/src/views/EnergyConsum.vue
@@ -27,7 +27,7 @@
                <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>
@@ -81,11 +81,9 @@
                </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 -
@@ -93,12 +91,9 @@
                    }}%</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 -
@@ -142,7 +137,7 @@
                <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>
@@ -204,21 +199,23 @@
            </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="" />
@@ -255,18 +252,17 @@
              <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="">
@@ -296,6 +292,8 @@
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,
@@ -347,7 +345,10 @@
    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',
@@ -358,8 +359,12 @@
    yAxis: {
      type: 'value',
      name: '单位:L',
      axisLabel: {
        color: '#D2E0FF'
      },
      nameTextStyle: {
        padding: [0, 0, 0, -16]    // 四个数字分别为上右下左与原位置距离
        color: '#D2E0FF',
        padding: [0, 0, 0, -18]    // 四个数字分别为上右下左与原位置距离
      },
      splitLine: {
        show: true,
@@ -464,13 +469,17 @@
    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,
@@ -480,10 +489,13 @@
          type: 'dashed',
        },
        splitNumber: 4
      },
      axisLabel: {
        color: '#D2E0FF'
      }
    },
    grid: {
      top: '26%',
      top: '18%',
      left: '4%',
      right: '2%',
      bottom: '2%',
@@ -557,7 +569,7 @@
  getData6()
}
const getData6 = () => {
  regionDataRanking({type: activeDays.value}).then(res => {
  regionDataRanking({ type: activeDays.value }).then(res => {
    const result = res.data
    data6.value = result
  })
@@ -577,7 +589,7 @@
  myChart.setOption({
    grid: {
      top: '24%',
      top: '20%',
      left: '6%',
      right: '2%',
      bottom: '4%',
@@ -591,12 +603,19 @@
    },
    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: {
@@ -672,6 +691,23 @@
  })
}
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()
@@ -689,6 +725,10 @@
    getData5()
    getData6()
  }, 1000 * 60 * 60)
  setTimeout(() => {
    loopFn1()
  }, 12000)
})
@@ -899,6 +939,7 @@
        text-align: center;
        padding-top: 70px;
        cursor: pointer;
        .num {
          font-size: 24px;
          color: #D0FFFA;
@@ -915,6 +956,7 @@
          font-size: 14px;
          color: #D0FFFA;
        }
        .active {
          font-size: 36px;
          color: #01D9FE;
@@ -974,13 +1016,16 @@
      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;
@@ -994,6 +1039,10 @@
            margin-right: 10px;
          }
          .top3 {
            box-shadow: inset 0px 0px 3px 0px #FEAF01;
          }
          .id_card {
            color: #DBEAEA;
            font-weight: 500;