<!--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>