Newer
Older
smartwell_front / src / views / dashboard / components / JobByStatus.vue
<template>
  <ve-bar :data="chartData" :title="title" :extend="extend" :settings="chartSettings" :colors="colors" />
</template>

<script>
import { getDayTime } from '@/utils/dateutils'
import { jobStaticsByDept } from '@/api/data/dataStatics'

export default {
  name: 'JobByStatus',
  data() {
    return {
      title: {
        text: '30日工单数量统计'
      },
      colors: ['#fa6e86', '#f5ab6f', '#fdde51', '#19d4ae'],
      chartSettings: {
        labelMap: {
          'deptName': '权属单位',
          'beforeGet': '待处理',
          'beforeConfirm': '待确认',
          'inHandle': '处理中',
          'over': '已完成'
        },
        stack: {
          'xxx': ['beforeGet', 'beforeConfirm', 'inHandle', 'over']
        }
      },
      extend: {
        xAxis: {
          type: 'value',
          minInterval: 1
        },
        series: {
          barMaxWidth: 35
        }
      },
      chartData: {
        columns: ['deptName', 'beforeGet', 'beforeConfirm', 'inHandle', 'over'],
        rows: []
      }
    }
  },
  mounted() {
    // TODO:待调试真接口
    this.fetchData()
    // this.chartData.rows = [
    //   { 'deptName': '电力公司', 'beforeGet': 139, 'beforeConfirm': 109, 'inHandle': 123, 'over': 456 },
    //   { 'deptName': '开拓热力', 'beforeGet': 353, 'beforeConfirm': 323, 'inHandle': 123, 'over': 456 },
    //   { 'deptName': '市政集团', 'beforeGet': 292, 'beforeConfirm': 262, 'inHandle': 123, 'over': 456 },
    //   { 'deptName': '博大网信', 'beforeGet': 172, 'beforeConfirm': 142, 'inHandle': 123, 'over': 456 },
    //   { 'deptName': '信息办', 'beforeGet': 379, 'beforeConfirm': 349, 'inHandle': 123, 'over': 456 },
    //   { 'deptName': '燃气四分', 'beforeGet': 459, 'beforeConfirm': 429, 'inHandle': 123, 'over': 456 },
    //   { 'deptName': '其他', 'beforeGet': 459, 'beforeConfirm': 429, 'inHandle': 123, 'over': 456 }
    // ]
  },
  methods: {
    fetchData() {
      const beginTime = getDayTime(new Date().getTime() - 24 * 30 * 60 * 60 * 1000).Format('yyyy-MM-dd hh:mm:ss')
      const endTime = new Date().Format('yyyy-MM-dd hh:mm:ss')
      const listQuery = {
        beginTime: beginTime,
        endTime: endTime
      }
      jobStaticsByDept(listQuery).then(response => {
        this.chartData.rows = response.data
        const maxValue = Math.max.apply(Math, response.data.map(function(item) {
          return parseInt(item.beforeGet) + parseInt(item.beforeConfirm) + parseInt(item.inHandle) + parseInt(item.over)
        }))
        if (maxValue < 10) {
          this.extend.xAxis = { type: 'value', minInterval: 1, max: 10 }
        } else {
          this.extend.xAxis = { type: 'value', minInterval: 1 }
        }
      })
    }
  }
}
</script>