Guoxiaohuan 5 years ago
parent
commit
ac5c36befc

BIN
src/assets/completed.png


BIN
src/assets/error.png


BIN
src/assets/processing.png


+ 171 - 0
src/views/evaluate/evCard.vue

@@ -0,0 +1,171 @@
+<template>
+  <div class="count-card-box">
+    <div class="count-card" v-for="(item,index) in cardList" :key="index">
+      <div class="card-div1">执行时间:{{item.a}}</div>
+      <div class="card-div2">
+        <span>策略建议</span>
+        <span>冷机台数</span>
+        <span>{{item.b}}大{{item.c}}小</span>
+        <span>冷机出水温度</span>
+        <span>{{item.d}}°C</span>
+      </div>
+      <div class="card-div3">
+        <span>实际执行</span>
+        <span>冷机台数</span>
+        <span>{{item.e}}大{{item.f}}小</span>
+        <span>冷机出水温度</span>
+        <span>{{item.g}}°C</span>
+      </div>
+      <div class="card-div4">备注:{{item.h||'--'}}</div>
+      <div class="card-div5">
+        <span :class="item.g>5?'card-div6':(item.g>2?'card-div8':'card-div7')">
+          <img :src="item.i" alt />
+          {{item.k}}
+        </span>
+        <span>查看快照</span>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  props: ["cardList"]
+};
+</script>
+<style lang="scss" scoped>
+// 执行率
+.count-card-box {
+  display: flex;
+  flex-wrap: wrap;
+  .count-card {
+    min-width: 540px;
+    margin-right: 16px;
+    margin-top: 22px;
+    padding: 22px 28px;
+    background: rgba(255, 255, 255, 1);
+    box-shadow: 0px 6px 17px -3px rgba(31, 36, 41, 0.1);
+    border-radius: 6px;
+    border: 1px solid rgba(228, 230, 231, 1);
+    .card-div1,
+    .card-div2,
+    .card-div3,
+    .card-div4,
+    .card-div5 {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+    }
+    .card-div1 {
+      height: 31px;
+      font-size: 22px;
+      font-family: PingFangSC-Regular, PingFang SC;
+      font-weight: 400;
+      color: rgba(31, 36, 41, 1);
+      line-height: 31px;
+      margin-bottom: 20px;
+    }
+    .card-div2,
+    .card-div3 {
+      height: 56px;
+      background: rgba(245, 246, 247, 1);
+      border-radius: 1px;
+      padding-left: 22px;
+      padding-right: 34px;
+      span:nth-of-type(1) {
+        height: 27px;
+        font-size: 20px;
+        font-family: MicrosoftYaHei;
+        color: rgba(31, 36, 41, 1);
+        line-height: 27px;
+        margin-right: 50px;
+      }
+      span:nth-of-type(2) {
+        height: 25px;
+        font-size: 17px;
+        font-family: MicrosoftYaHei;
+        color: rgba(141, 147, 153, 1);
+        line-height: 31px;
+        margin-right: 12px;
+      }
+      span:nth-of-type(3) {
+        height: 27px;
+        font-size: 20px;
+        font-family: MicrosoftYaHei;
+        color: rgba(31, 36, 41, 1);
+        line-height: 27px;
+        margin-right: 50px;
+      }
+      span:nth-of-type(4) {
+        height: 25px;
+        font-size: 17px;
+        font-family: MicrosoftYaHei;
+        color: rgba(141, 147, 153, 1);
+        line-height: 31px;
+        margin-right: 6px;
+      }
+      span:nth-of-type(5) {
+        height: 30px;
+        font-size: 22px;
+        font-family: MicrosoftYaHei;
+        color: rgba(31, 36, 41, 1);
+        line-height: 30px;
+      }
+    }
+    .card-div2 {
+      margin-bottom: 6px;
+    }
+    .card-div3 {
+      margin-bottom: 22px;
+    }
+    .card-div4 {
+      height: 28px;
+      font-size: 20px;
+      font-family: PingFangSC-Regular, PingFang SC;
+      font-weight: 400;
+      color: rgba(100, 108, 115, 1);
+      line-height: 28px;
+      margin-bottom: 38px;
+    }
+
+    .card-div5 {
+      span:nth-of-type(1) {
+        img {
+          width: 18px;
+          height: 18px;
+          margin-right: 6px;
+        }
+        padding: 0 16px;
+        display: flex;
+        align-items: center;
+        height: 34px;
+        border-radius: 17px;
+        font-size: 20px;
+        font-family: MicrosoftYaHeiSemibold;
+      }
+      span:nth-of-type(2) {
+        height: 31px;
+        font-size: 20px;
+        font-family: MicrosoftYaHei;
+        color: rgba(31, 35, 41, 1);
+        line-height: 31px;
+        background: rgba(255, 255, 255, 1);
+        border-radius: 6px;
+        border: 1px solid rgba(195, 199, 203, 1);
+        padding: 0 16px;
+      }
+    }
+    .card-div6 {
+      color: rgba(245, 78, 69, 1);
+      background: rgba(253, 227, 226, 1);
+    }
+    .card-div7 {
+      color: rgba(52, 199, 36, 1);
+      background: rgba(217, 245, 214, 1);
+    }
+    .card-div8 {
+      color: rgba(0, 145, 255, 1);
+      background: rgba(225, 242, 255, 1);
+    }
+  }
+}
+</style>

+ 85 - 0
src/views/evaluate/evEnergyTable.vue

@@ -0,0 +1,85 @@
+<template>
+  <div class="evEnergyTable">
+    <el-table :data="tableData" style="width: 100%;" height="400">
+      <el-table-column prop label="序号" align="left" type="index" width="150"></el-table-column>
+      <el-table-column prop="a" label="日期" align="left"></el-table-column>
+      <el-table-column prop="b" label="室外平均温度(℃)" align="right"></el-table-column>
+      <el-table-column prop="c" label="室内平均温度(℃)" align="right"></el-table-column>
+      <el-table-column prop="d" label="冷站能耗(kWh)" align="right"></el-table-column>
+      <el-table-column prop="e" label align="right"></el-table-column>
+    </el-table>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      tableData: [
+        {
+          a: "2019.11.03",
+          b: "27.1",
+          c: "24.5",
+          d: "11894"
+        },
+        {
+          a: "2019.11.03",
+          b: "27.1",
+          c: "24.5",
+          d: "11894"
+        },
+        {
+          a: "2019.11.03",
+          b: "27.1",
+          c: "24.5",
+          d: "11894"
+        },
+        {
+          a: "2019.11.03",
+          b: "27.1",
+          c: "24.5",
+          d: "11894"
+        },
+        {
+          a: "2019.11.03",
+          b: "27.1",
+          c: "24.5",
+          d: "11894"
+        },
+        {
+          a: "2019.11.03",
+          b: "27.1",
+          c: "24.5",
+          d: "11894"
+        },
+        {
+          a: "2019.11.03",
+          b: "27.1",
+          c: "24.5",
+          d: "11894"
+        },
+        {
+          a: "2019.11.03",
+          b: "27.1",
+          c: "24.5",
+          d: "11894"
+        },
+        {
+          a: "2019.11.03",
+          b: "27.1",
+          c: "24.5",
+          d: "11894"
+        }
+      ]
+    };
+  },
+  methods: {},
+  mounted() {}
+};
+</script>
+<style lang="scss">
+.evEnergyTable {
+  .el-table thead {
+    background: rgba(248, 249, 250, 1);
+  }
+}
+</style>

+ 196 - 0
src/views/evaluate/evHistory.vue

@@ -0,0 +1,196 @@
+<template>
+  <div>
+    <p>
+      <span>根据历史数据计算</span>
+      <span></span>
+      <span>本日概况</span>
+      <span></span>
+      <span>相似日概况</span>
+    </p>
+    <div class="count-data">
+      <div class="outdoor">
+        <div class="outdoor-left">
+          <span>27.3℃</span>
+        </div>
+        <div class="outdoor-right">
+          <span>27.1℃</span>
+        </div>
+      </div>
+      <div class="indoor">
+        <div class="indoor-left">
+          <span>24.5℃</span>
+        </div>
+        <div class="indoor-right">
+          <span>24.4℃</span>
+        </div>
+      </div>
+      <div class="coldWar">
+        <div class="coldWar-left">
+          <span>9817kWh</span>
+        </div>
+        <div class="coldWar-right">
+          <span>11092kWh</span>
+        </div>
+      </div>
+    </div>
+    <div class="count-text">
+      <div class="outdoor-text">室外平均温度</div>
+      <div class="indoor-text">室内平均温度</div>
+      <div class="coldWar-text">冷站能耗</div>
+    </div>
+  </div>
+</template>
+<style lang="scss" scoped>
+p {
+  margin: 0;
+  margin-top: 28px;
+  margin-bottom: 30px;
+  display: flex;
+  align-items: center;
+  span {
+    display: inline-block;
+  }
+  span:nth-of-type(1) {
+    height: 34px;
+    font-size: 22px;
+    font-family: MicrosoftYaHeiSemibold;
+    color: rgba(31, 36, 41, 1);
+    line-height: 30px;
+    margin-right: 32px;
+  }
+  span:nth-of-type(2) {
+    width: 14px;
+    height: 14px;
+    background: rgba(0, 145, 255, 1);
+    margin-right: 6px;
+  }
+  span:nth-of-type(3) {
+    height: 25px;
+    font-size: 17px;
+    font-family: MicrosoftYaHei;
+    color: rgba(0, 0, 0, 1);
+    line-height: 22px;
+    margin-right: 28px;
+  }
+  span:nth-of-type(4) {
+    width: 14px;
+    height: 14px;
+    background: rgba(0, 214, 185, 1);
+    margin-right: 6px;
+  }
+  span:nth-of-type(5) {
+    height: 25px;
+    font-size: 17px;
+    font-family: MicrosoftYaHei;
+    color: rgba(0, 0, 0, 1);
+    line-height: 22px;
+  }
+}
+.count-data {
+  height: 200px;
+  text-align: center;
+  border-bottom: 1px solid #e4e6e7;
+  display: flex;
+  justify-content: space-around;
+  .outdoor {
+    width: 290px;
+    height: 200px;
+    display: flex;
+    justify-content: space-between;
+    position: relative;
+    span {
+      width: 100%;
+      position: absolute;
+      top: -25px;
+      left: 0;
+    }
+    .outdoor-left {
+      width: 141px;
+      height: 170px;
+      background: rgba(0, 145, 255, 1);
+      position: absolute;
+      bottom: 0;
+      left: 0;
+    }
+    .outdoor-right {
+      width: 141px;
+      height: 159px;
+      background: rgba(0, 214, 185, 1);
+      position: absolute;
+      bottom: 0;
+      right: 0;
+    }
+  }
+  .indoor {
+    width: 290px;
+    height: 200px;
+    position: relative;
+    span {
+      width: 100%;
+      position: absolute;
+      top: -25px;
+      left: 0;
+    }
+    .indoor-left {
+      width: 141px;
+      height: 170px;
+      background: rgba(0, 145, 255, 1);
+      position: absolute;
+      bottom: 0;
+      left: 0;
+    }
+    .indoor-right {
+      width: 141px;
+      height: 159px;
+      background: rgba(0, 214, 185, 1);
+      position: absolute;
+      bottom: 0;
+      right: 0;
+    }
+  }
+  .coldWar {
+    width: 290px;
+    height: 200px;
+    position: relative;
+    span {
+      width: 100%;
+      position: absolute;
+      top: -25px;
+      left: 0;
+    }
+    .coldWar-left {
+      width: 141px;
+      height: 118px;
+      background: rgba(0, 145, 255, 1);
+      position: absolute;
+      bottom: 0;
+      left: 0;
+    }
+    .coldWar-right {
+      width: 141px;
+      height: 193px;
+      background: rgba(0, 214, 185, 1);
+      position: absolute;
+      bottom: 0;
+      right: 0;
+    }
+  }
+}
+.count-text {
+  height: 22px;
+  font-size: 17px;
+  font-family: MicrosoftYaHei;
+  color: rgba(100, 108, 115, 1);
+  line-height: 22px;
+  display: flex;
+  text-align: center;
+  margin-top: 16px;
+  margin-bottom: 46px;
+  justify-content: space-around;
+  .outdoor-text,
+  .indoor-text,
+  .coldWar-text {
+    width: 290px;
+  }
+}
+</style>

+ 85 - 0
src/views/evaluate/evRateTitle.vue

@@ -0,0 +1,85 @@
+<template>
+  <div class="count-bottom-title">
+    <span v-if="tab==1" class="count-bottom-text">
+      <span class="span1"></span>
+      <span class="span2">室内温度满足率</span>
+      <span class="span3">90.2%</span>
+    </span>
+    <span v-if="tab==2" class="count-bottom-text">
+      <span class="span1"></span>
+      <span class="span2">节能率</span>
+      <span class="span4">22.6%</span>
+      <span class="span5">准确率</span>
+      <span class="span6">90%</span>
+    </span>
+    <span v-if="tab==3" class="count-bottom-text">
+      <span class="span1"></span>
+      <span class="span2">执行率</span>
+      <img class="span7" src="../../assets/finish.png" alt />
+    </span>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {};
+  },
+  props: ["tab"]
+};
+</script>
+<style lang="scss" scoped>
+.count-bottom-title {
+  display: flex;
+  .count-bottom-text {
+    height: 90px;
+    background: rgba(248, 249, 250, 1);
+    border-radius: 6px;
+    border: 1px solid rgba(238, 238, 238, 1);
+    display: flex;
+    align-items: center;
+    padding-right: 34px;
+    .span1 {
+      width: 6px;
+      height: 90px;
+      background: rgba(0, 145, 255, 1);
+      border-radius: 6px 0 0 6px;
+      margin-right: 28px;
+    }
+    .span2 {
+      font-size: 28px;
+      font-family: MicrosoftYaHeiSemibold;
+      color: rgba(31, 36, 41, 1);
+      margin-right: 16px;
+    }
+    .span3 {
+      font-size: 34px;
+      font-family: Persagy-Bold, Persagy;
+      font-weight: bold;
+      color: rgba(31, 36, 41, 1);
+    }
+    .span4 {
+      font-size: 34px;
+      font-family: Persagy-Bold, Persagy;
+      font-weight: bold;
+      color: rgba(31, 36, 41, 1);
+      margin-right: 44px;
+    }
+    .span5 {
+      font-size: 22px;
+      font-family: PingFangSC-Regular, PingFang SC;
+      font-weight: 400;
+      color: rgba(100, 108, 115, 1);
+      margin-right: 12px;
+    }
+    .span6 {
+      font-size: 22px;
+      font-family: Persagy;
+      color: rgba(100, 108, 115, 1);
+    }
+    .span7 {
+      width: 28px;
+      height: 28px;
+    }
+  }
+}
+</style>

+ 108 - 95
src/views/evaluate/evTwoLevelMenu.vue

@@ -23,16 +23,9 @@
             <span class="arrow-right"></span>
           </div>
         </ul>
-
         <div class="count-bottom">
           <div v-show="num == 1">
-            <div class="count-bottom-title">
-              <span class="count-bottom-text">
-                <span class="span1"></span>
-                <span class="span2">室内温度满足率</span>
-                <span class="span3">90.2%</span>
-              </span>
-            </div>
+            <ev-rate-title :tab="1"></ev-rate-title>
             <div class="count-bottom-switch">
               <span class="switchSpan">只显示不满足的点位</span>
               <el-switch v-model="value2"></el-switch>
@@ -45,24 +38,23 @@
             </div>
           </div>
           <div v-show="num == 2">
-            <div class="count-bottom-title">
-              <span class="count-bottom-text">
-                <span class="span1"></span>
-                <span class="span2">节能率</span>
-                <span class="span4">22.6%</span>
-                <span class="span5">准确率</span>
-                <span class="span6">90%</span>
-              </span>
+            <ev-rate-title :tab="2"></ev-rate-title>
+            <div class="count-historical-data">
+              <ev-history></ev-history>
+              <div class="count-foot">
+                <div class="count-foot-title">
+                  <span>相似日概况</span>
+                  <span>相似度高</span>
+                </div>
+                <div class="count-foot-table">
+                  <ev-energy-table></ev-energy-table>
+                </div>
+              </div>
             </div>
           </div>
           <div v-show="num == 3">
-            <div class="count-bottom-title">
-              <span class="count-bottom-text">
-                <span class="span1"></span>
-                <span class="span2">执行率</span>
-                <img class="span7" src="../../assets/finish.png" alt />
-              </span>
-            </div>
+            <ev-rate-title :tab="3"></ev-rate-title>
+            <ev-card v-if="cardList.length>0" :cardList="cardList"></ev-card>
           </div>
         </div>
       </div>
@@ -73,41 +65,85 @@
 import Head from "../main/index";
 import EvTwoTable from "./evTwoTable";
 import EvStackedLine from "./evStackedLine";
-
+import EvEnergyTable from "./evEnergyTable";
+import EvCard from "./evCard"; //执行率
+import EvRateTitle from "./evRateTitle";
+import EvHistory from "./evHistory";
 export default {
   data() {
     return {
       headText: "运行评价",
       num: 1,
       value1: "",
-      value2: true
+      value2: true,
+      cardList: [
+        {
+          a: "08:30",
+          b: "1",
+          c: "2",
+          d: "8.0",
+          e: "1",
+          f: "2",
+          g: "7.0",
+          h: "这是备注",
+          i: require("../../assets/error.png"),
+          k: "未按策略执行"
+        },
+        {
+          a: "08:30",
+          b: "1",
+          c: "2",
+          d: "8.0",
+          e: "1",
+          f: "2",
+          g: "5.0",
+          i: require("../../assets/processing.png"),
+          k: "申诉中"
+        },
+        {
+          a: "08:30",
+          b: "1",
+          c: "2",
+          d: "8.0",
+          e: "1",
+          f: "2",
+          g: "2.0",
+          h: "这是备注",
+          i: require("../../assets/completed.png"),
+          k: "已按策略执行"
+        }
+      ]
     };
   },
   components: {
     Head,
     EvTwoTable,
-    EvStackedLine
+    EvStackedLine,
+    EvEnergyTable,
+    EvCard,
+    EvRateTitle,
+    EvHistory
   },
-  mounted(){
-this.dateNow()
+  mounted() {
+    this.dateNow();
   },
   methods: {
     change: function(index) {
       this.num = index;
     },
-     dateNow() {
-            var day = new Date()
-            day.setTime(day.getTime() - 24 * 60 * 60 * 1000)
-            let years = day.getFullYear()
-            let months = day.getMonth() + 1
-            let days = day.getDate()
-            if (months < 10) {
-                months = '0' + months
-            } else if (days < 10) {
-                days = '0' + days
-            }
-            this.dateValue = `${years}${months}${days}`
-        }
+    dateNow() {
+      var day = new Date();
+      day.setTime(day.getTime() - 24 * 60 * 60 * 1000);
+      let years = day.getFullYear();
+      let months = day.getMonth() + 1;
+      let days = day.getDate();
+      if (months < 10) {
+        months = "0" + months;
+      } else if (days < 10) {
+        days = "0" + days;
+      }
+      this.dateValue = `${years}${months}${days}`;
+    }
   }
 };
 </script>
@@ -214,60 +250,6 @@ this.dateNow()
       height: auto;
       background: #fff;
       margin-top: 22px;
-      .count-bottom-title {
-        display: flex;
-        .count-bottom-text {
-          height: 90px;
-          background: rgba(248, 249, 250, 1);
-          border-radius: 6px;
-          border: 1px solid rgba(238, 238, 238, 1);
-          display: flex;
-          align-items: center;
-          padding-right: 34px;
-          .span1 {
-            width: 6px;
-            height: 90px;
-            background: rgba(0, 145, 255, 1);
-            border-radius: 6px 0 0 6px;
-            margin-right: 28px;
-          }
-          .span2 {
-            font-size: 28px;
-            font-family: MicrosoftYaHeiSemibold;
-            color: rgba(31, 36, 41, 1);
-            margin-right: 16px;
-          }
-          .span3 {
-            font-size: 34px;
-            font-family: Persagy-Bold, Persagy;
-            font-weight: bold;
-            color: rgba(31, 36, 41, 1);
-          }
-          .span4 {
-            font-size: 34px;
-            font-family: Persagy-Bold, Persagy;
-            font-weight: bold;
-            color: rgba(31, 36, 41, 1);
-            margin-right: 44px;
-          }
-          .span5 {
-            font-size: 22px;
-            font-family: PingFangSC-Regular, PingFang SC;
-            font-weight: 400;
-            color: rgba(100, 108, 115, 1);
-            margin-right: 12px;
-          }
-          .span6 {
-            font-size: 22px;
-            font-family: Persagy;
-            color: rgba(100, 108, 115, 1);
-          }
-          .span7 {
-            width: 28px;
-            height: 28px;
-          }
-        }
-      }
       .count-bottom-switch {
         display: flex;
         justify-content: flex-end;
@@ -283,6 +265,37 @@ this.dateNow()
           margin-right: 22px;
         }
       }
+      .count-historical-data {
+        .count-foot {
+          .count-foot-title {
+            display: flex;
+            align-items: center;
+            margin-bottom: 22px;
+            span:nth-of-type(1) {
+              height: 34px;
+              font-size: 22px;
+              font-family: MicrosoftYaHeiSemibold;
+              color: rgba(31, 36, 41, 1);
+              line-height: 30px;
+              margin-right: 22px;
+            }
+            span:nth-of-type(2) {
+              width: 101px;
+              height: 34px;
+              background: rgba(225, 242, 255, 1);
+              border-radius: 3px;
+              font-size: 20px;
+              font-family: MicrosoftYaHei;
+              color: rgba(0, 101, 179, 1);
+              line-height: 34px;
+              text-align: center;
+            }
+          }
+          .count-foot-content {
+            height: 500px;
+          }
+        }
+      }
       .count-bottom-content {
         margin-top: 12px;
       }