ll
liukangdong
2024-11-19 00554486047226063b1bf8200490bae5cf97e8bc
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 ? '单位:t' : activeTab2.value == 3 ? '单位:kw·h' : '单位:m³'
  myChart.setOption({
    grid: {
      top: '24%',
@@ -497,7 +572,7 @@
    },
    yAxis: {
      type: 'value',
      name: '单位:kw·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: '皖A87772', maxOil: 50, quantity: 50 },
    { carNo: '皖A81222', maxOil: 50, quantity: 26 },
    { carNo: '皖A85035', maxOil: 50, quantity: 24 },
    { carNo: '皖A86057', maxOil: 50, quantity: 14 },
    { carNo: '皖A81272', maxOil: 50, quantity: 9 },
    { carNo: '皖A87772', 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 {