violationCaseTable.vue 4.25 KB
<template>
  <div class="app-container">
    <el-form ref="queryForm" :inline="true" label-width="105px">
      <el-form-item label="所属区域" prop="owningRegion">
        <el-select v-model="owningRegion" multiple placeholder="请选择所属区域" clearable size="small">
          <el-option v-for="item in areas" :label="item.name" :value="item.name" />
        </el-select>
      </el-form-item>
      <el-form-item label="日期" prop="createTime">
        <el-date-picker
          v-model="createTime"
            size="small"
             type="datetimerange"
            start-placeholder="开始日期"
            value-format="yyyy-MM-dd HH:mm:ss"
            end-placeholder="结束日期">
        </el-date-picker>
      </el-form-item>
      <el-form-item>
        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
      </el-form-item>
    </el-form>
    <el-table :data="tableData" :span-method="spanMethod" :show-summary="true" :summary-method="getSummaries"
              v-if="hackReset">
      <el-table-column label="行政范围" header-align="center" align="center">
        <template slot-scope="scope">
          <h3>
          {{ owningRegion != "" && owningRegion != null ? owningRegion+"" : "长沙市" }}</h3>

          <h4>
            该区域信息数{{allCount[2]}},回复数{{allCount[3]}},回复率{{allCount[4]}}
          </h4>

        </template>
      </el-table-column>
      <el-table-column property="type" label="预警类型" header-align="center" align="center"></el-table-column>
      <el-table-column property="count" label="预警信息数" header-align="center" align="center"></el-table-column>
      <el-table-column property="repCount" label="预警信息回复数" header-align="center"
                       align="center"></el-table-column>
      <el-table-column property="repPct" label="预警信息回复率" header-align="center" align="center"></el-table-column>
    </el-table>
  </div>
</template>

<script>

import {caseTable} from "@/api/casefile/violationCaseFile";
import {getArea} from "@/api/dict";

export default {
  name: "caseTable",
  props: {},
  data() {
    return {
      tableData: [],
      owningRegion: "",
      createTime: [],
      areas: [],
      hackReset: false,
      pickerMinDate: null,
      pickerMaxDate: null,
      allCount:[]
    }
  },
  created() {
    caseTable({owningRegion: "", startDate: "", endDate: ""}).then(res => {
      this.tableData = res.data;
      this.hackReset = true;
    });
    getArea().then(res => {
      this.areas = res.result;
    });
  },
  methods: {
    spanMethod({row, column, rowIndex, columnIndex}) {
      if (columnIndex == 0) {
        if (rowIndex == 0) {
          return {rowspan: 300, colspan: 1}
        } else {
          return {rowspan: 0, colspan: 0}
        }
      }
    },
    getSummaries(param) {
      const {columns, data} = param;
      const sums = [];

      let allCount = 0;
      let allRepCount = 0;
      for (let i in data) {

        allCount += Number(data[i].count == null ? 0 : data[i].count);
        allRepCount += Number(data[i].repCount == null ? 0 : data[i].repCount);

      }

      columns.forEach((column, index) => {
        if (index == 0 || index == 1) {
          return;
        }

        if (index == 2) {
          sums[2] = allCount;
        }

        if (index == 3) {
          sums[3] = allRepCount;
        }

        if (index == 4) {
          if (allCount == 0 || allRepCount == 0) {
            sums[4] = "0" + "%";
          } else {
            sums[4] = ((allRepCount / allCount) * 100).toFixed(2) + "%";
          }
        }
      })
      this.allCount = sums;
      return sums;
    },
    handleQuery() {
      let startDate = null;
      let endDate = null;
      if(this.createTime.length!=0){
        startDate = this.createTime[0];
        endDate = this.createTime[1];
      }
      let owningRegion = null;
      if(this.owningRegion)
        owningRegion = this.owningRegion + ""

      caseTable({owningRegion: owningRegion, startDate: startDate, endDate: endDate}).then(res => {
        this.tableData = res.data;
        this.hackReset = false;
        this.$nextTick(() => {
          this.hackReset = true
        })
      });
    },

  }
}
</script>

<style scoped>

</style>