Explorar el Código

Merge branch 'wsy' of http://61.161.152.110:10101/r/electronic-map into sl

shilin hace 3 años
padre
commit
d1d517ef3c
Se han modificado 2 ficheros con 322 adiciones y 0 borrados
  1. 317 0
      src/views/alarmCenter/customStatistics.vue
  2. 5 0
      src/views/layout/Menu.vue

+ 317 - 0
src/views/alarmCenter/customStatistics.vue

@@ -0,0 +1,317 @@
+<template>
+  <div>
+    <div class="query mg-b-8">
+      <div class="query-items">
+        <div class="query-item">
+          <div class="lable">场站:</div>
+          <div class="search-input">
+            <el-select
+              v-model="stationId"
+              clearable
+              placeholder="请选择"
+              popper-class="select"
+              @change="(stationId) => { Windturbines() }"
+            >
+              <el-option
+                v-for="item in ChangZhan"
+                :key="item.id"
+                :value="item.id"
+                :label="item.name"
+              ></el-option>
+            </el-select>
+          </div>
+        </div>
+        <div class="query-item">
+          <div class="lable">开始日期:</div>
+          <div class="search-input">
+            <el-date-picker
+              v-model="startDate"
+              type="date"
+              placeholder="开始日期"
+              popper-class="date-select"
+              value-format="YYYY-MM-DD"
+            ></el-date-picker>
+          </div>
+        </div>
+        <div class="query-item">
+          <div class="lable">结束日期:</div>
+          <div class="search-input">
+            <el-date-picker
+              v-model="endDate"
+              type="date"
+              placeholder="开始日期"
+              popper-class="date-select"
+              value-format="YYYY-MM-DD"
+            ></el-date-picker>
+          </div>
+        </div>
+        <div class="query-actions">
+          <button class="btn green" @click="getTable()">查询</button>
+        </div>
+      </div>
+    </div>
+    <div class="table-box">
+      <div class="title">自定义报警统计</div>
+      <div class="report-items">
+        <div class="title" v-for="item in tableData" :key="item" @click="alertDetail(item)">
+          <div class="alarmName">{{item.alarmtext}}</div>
+          <div class="alarmCount">{{item.sum}}</div>
+        </div>
+      </div>
+    </div>
+    <el-dialog
+      title="自定义报警统计-图表"
+      v-model="dialogShow"
+      width="80%"
+      top="10vh"
+      custom-class="modal dBody"
+      :close-on-click-modal="true"
+    >
+      <div class="dGrid" height="100%">
+        <table class="com-table">
+          <thead>
+            <tr>
+              <th>风机</th>
+              <th>数量</th>
+            </tr>
+          </thead>
+          <el-scrollbar>
+            <tbody>
+              <tr v-for="item in dGridData" :key="item">
+                <td>{{item.name}}</td>
+                <td>{{item.sum}}</td>
+              </tr>
+            </tbody>
+          </el-scrollbar>
+        </table>
+      </div>
+      <div class="dChart" height="100%" id="dChart">
+        <!-- <div class="title">报警统计柱状图</div> -->
+        <!-- <multiple-hover-bar-chart height="80%" width="90%"></multiple-hover-bar-chart> -->
+        <!-- <multiple-hover-bar-chart height="100%" :list="dChartData"></multiple-hover-bar-chart> -->
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+// import ComTable from "@/components/coms/table/table.vue";
+import MultipleHoverBarChart from "../../components/chart/bar/multiple-bar-chart.vue";
+import * as echarts from "echarts";
+export default {
+  name: "customStatistics",
+  components: { MultipleHoverBarChart },
+  data() {
+    let that = this;
+    return {
+      ChangZhan: [],
+      stationId: "XS_FDC",
+      startDate: "",
+      endDate: "",
+      tableData: [],
+      dialogShow: false,
+      dGridData: [],
+      dChartData: []
+
+      // tableLoading: true
+    };
+  },
+  created() {
+    this.ChangZhanVal();
+    let end = new Date();
+    let start = new Date(end.getTime() - 1 * 24 * 60 * 60 * 1000);
+    this.endDate = end.formatDate("yyyy-MM-dd");
+    this.startDate = start.formatDate("yyyy-MM-dd");
+    this.getTable();
+  },
+  methods: {
+    // 场站
+    ChangZhanVal() {
+      var that = this;
+      that.API.requestData({
+        method: "GET",
+        baseURL: "http://10.155.32.4:9001/",
+        subUrl: "benchmarking/wplist",
+        success(res) {
+          that.ChangZhan = res.data;
+          that.stationId = res.data[0].id;
+        }
+      });
+    },
+    getTable() {
+      let that = this;
+      this.tableLoading = true;
+      this.API.requestData({
+        timeout: 30000,
+        method: "GET",
+        baseURL: "http://192.168.1.18:8075/",
+        subUrl: "alarm/count/querymap",
+        data: {
+          stationid: this.stationId,
+          datebegin: this.startDate,
+          dateend: this.endDate
+        },
+        success(res) {
+          let tmpArr = [];
+          for (var key in res.data) {
+            let item = res.data[key];
+            item["key"] = key;
+            tmpArr.push(item);
+          }
+          tmpArr.sort(function(a, b) {
+            return b["sum"] - a["sum"];
+          });
+          that.tableData = tmpArr;
+        }
+      });
+    },
+    async alertDetail(item) {
+      this.dialogShow = true;
+      let resData = await this.API.requestData({
+        timeout: 30000,
+        method: "GET",
+        baseURL: "http://192.168.1.18:8075/",
+        subUrl: "alarm/count/querybyname",
+        data: {
+          stationid: this.stationId,
+          datebegin: this.startDate,
+          dateend: this.endDate,
+          snapid: item["key"]
+        }
+      });
+      let keyValue = resData.data.data;
+      const dGridData = [];
+      for (let key in keyValue) {
+        dGridData.push({ sum: keyValue[key], name: key });
+      }
+      dGridData.sort(function(a, b) {
+        return b.sum - a.sum;
+      });
+      this.dGridData = dGridData;
+      this.alertDetailChart(item);
+    },
+    async alertDetailChart(item) {
+      let resData = await this.API.requestData({
+        timeout: 30000,
+        method: "GET",
+        baseURL: "http://192.168.1.18:8075/",
+        subUrl: "alarm/count/lineandproject",
+        data: {
+          stationid: this.stationId,
+          datebegin: this.startDate,
+          dateend: this.endDate,
+          snapid: item["key"]
+        }
+      });
+      let dataX = [],
+        data1 = [],
+        data2 = [];
+      for (let item of resData.data.data) {
+        dataX.push(item["linenum"]);
+        data1.push(item["happendsum"]);
+        data2.push(item["sum"]);
+      }
+
+      let option = {
+        color: ["#05bb4c", "#4b55ae", "#fa8c16"],
+        title: {
+          text: "报警统计柱状图",
+          left: "5%"
+        },
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            type: "shadow"
+          }
+        },
+        legend: {
+          data: ["总数", "发生数量"],
+          textStyle: {
+            color: "#fff"
+          }
+        },
+        grid: {
+          left: "5%",
+          right: "6%",
+          bottom: "3%",
+          containLabel: true
+        },
+        xAxis: { name: "线路", type: "category", data: dataX },
+        yAxis: { name: "数量", type: "value" },
+        series: [
+          {
+            name: "总数",
+            type: "bar",
+            barWidth: 40,
+            barGap: "-100%",
+            label: { normal: { show: true, position: "top" } },
+            data: data2
+          },
+          {
+            name: "发生数量",
+            type: "bar",
+            barGap: "-100%",
+            barWidth: 40,
+            label: { normal: { show: true, position: "inside" } },
+            data: data1
+          }
+        ]
+      };
+      let chart = echarts.init(document.getElementById("dChart"));
+      chart.clear();
+      chart.setOption(option);
+    }
+  }
+};
+</script>
+<style lang="less">
+.dGrid {
+  height: 70vh;
+  width: 30%;
+  display: inline-block;
+  table {
+    tbody {
+      height: 65vh;
+    }
+  }
+}
+.dChart {
+  height: 70vh;
+  width: 70%;
+  display: inline-block;
+  vertical-align: top;
+}
+.dBody {
+  height: 80vh;
+}
+.title {
+  background: rgba(255, 255, 255, 0.1);
+  margin-bottom: 8px;
+  padding: 1vh;
+}
+
+.report-items {
+  display: flex;
+  flex-wrap: wrap;
+  .title {
+    height: 70px;
+    width: 280px;
+    background: fade(@gray, 40);
+    color: @gray-l;
+    font-size: 2vh;
+    margin-left: 7px;
+    margin-right: 7px;
+    margin-top: 7px;
+    margin-bottom: 7px;
+    cursor: pointer;
+    div {
+      width: 100%;
+      display: block;
+      clear: both;
+      text-align: center;
+      &:first-child {
+        margin-bottom: 20px;
+      }
+    }
+  }
+}
+</style>

+ 5 - 0
src/views/layout/Menu.vue

@@ -154,6 +154,11 @@ export default {
                   icon: "svg-wind-site",
                   path: "/alarmCenter/customAlarm",
                 },
+                {
+                  text: "自定义报警统计",
+                  icon: "svg-wind-site",
+                  path: "/alarmCenter/customStatistics",
+                },
               ],
             },
           ],