Newer
Older
securityFront / src / views / ctrl / statCharts / devAlarmCount.vue
wangxitong on 20 Feb 2021 3 KB bug修改
<!--suppress ALL -->
<template>
  <div style="height: 90%">
    <el-date-picker
      v-model="timeRange"
      :picker-options="pickerOptions"
      type="daterange"
      range-separator="至"
      start-placeholder="开始日期"
      end-placeholder="结束日期"
      style="margin-bottom: 10px;z-index: 10000"
      size="small"/>
    <ve-histogram :data="chartData" :settings="settings" :extend="chartExtend" style="margin-top: -50px" height="100%"/>
  </div>
</template>

<script>

import { devAlarmCount } from '@/api/statistics'
import { formatToString, parseToDate, getDate, oneDayTime } from '@/utils/calendarUtil'
const now = new Date()

export default {
  name: 'DevAlarmCount',
  data() {
    return {
      params: {
        beginDate: '',
        endDate: ''
      },
      chartData: {
        columns: ['name', 'count'],
        rows: []
      },
      chartExtend: {
        series: {
          barMaxWidth: 50
        },
        grid: {
          containLabel: true,
          bottom: '10%'
        }
      },
      settings: {
        labelMap: {
          'name': '设备类型',
          'count': ''
        },
        max: [4],
        area: false
      },
      timeRange: [],
      pickerOptions: {
        shortcuts: [{
          text: '最近七日',
          onClick(picker) {
            const end = now
            const start = new Date()
            start.setTime(start.getTime() - oneDayTime * 7)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近十日',
          onClick(picker) {
            const end = now
            const start = new Date()
            start.setTime(start.getTime() - oneDayTime * 10)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近三十日',
          onClick(picker) {
            const end = now
            const start = new Date()
            start.setTime(start.getTime() - oneDayTime * 30)
            picker.$emit('pick', [start, end])
          }
        }],
        disabledDate(time) {
          const oneMonthLater = new Date(now.getTime() - (oneDayTime * 31))
          return time.getTime() < oneMonthLater
        }
      }
    }
  },
  watch: {
    timeRange: function(newV) {
      if (newV) {
        this.params.beginDate = formatToString(newV[0], 'DATE')
        this.params.endDate = formatToString(newV[1], 'DATE')
      } else {
        this.initTime()
      }
      this.fetchData()
    }
  },
  created() {
    this.initTime()
  },
  activated() {
    this.fetchData()
  },
  methods: {
    initTime() {
      this.params.beginDate = getDate(-6, 'DATE')
      this.params.endDate = getDate(0, 'DATE')

      this.timeRange = [this.params.beginDate, this.params.endDate]
    },
    fetchData() {
      devAlarmCount(this.params).then(response => {
        if (response.code === 200) {
          this.chartData.rows = response.data
          var max = 4
          for(var i=0;i<response.data.length;i++){
            if(Number(response.data[i].count)>max){
              max = Number(response.data[i].count)
            }
          }
          this.settings.max = [max]
        }
      })
    }
  }
}
</script>

<style scoped>

</style>