Newer
Older
qd_cnooc_front / src / views / gasDashboard / components / FunctionArea.vue
Stephanie on 15 Nov 2022 4 KB fix<views>: 动力管线首页修改
<!--
 * @Description: 时间筛选器
 * @Author: 王晓颖
 * @Date:
 -->
<template>
  <div class="statistic-container">
    <el-button :class="{'checked-btn':selected=='year'}" round size="mini" @click="setDefaultTime('year')">本年度</el-button>
    <el-button :class="{'checked-btn':selected=='season'}" round size="mini" @click="setDefaultTime('season')">本季度</el-button>
    <el-button :class="{'checked-btn':selected=='month'}" round size="mini" @click="setDefaultTime('month')">近30日</el-button>
    <el-button :class="{'checked-btn':selected=='week'}" round size="mini" @click="setDefaultTime('week')">近7日</el-button>
    <el-button v-show="todayShow" :class="{'checked-btn':selected=='today'}" round size="mini" @click="setDefaultTime('today')">今日</el-button>
    <el-date-picker
      v-model="timeRange"
      :picker-options="pickerOptions"
      type="daterange"
      range-separator="至"
      start-placeholder="开始日期"
      end-placeholder="结束日期"
      value-format="yyyy-MM-dd"
      size="mini"
      style="width:250px;margin-right: 20px"
      @change="change('other')"/>
  </div>
</template>

<script>
import { getDayTime } from '@/utils/dateutils'
export default {
  name: 'FunctionArea',
  props: {
    select: {
      type: String,
      default: 'today'
    },
    todayShow: {
      type: Boolean,
      default: true
    }
  },
  data() {
    return {
      selected: '',
      timeRange: [],
      pickerOptions: {
        disabledDate: function(date) {
          var oDate1 = new Date(date)
          var oDate2 = new Date()
          if (oDate1.getTime() > oDate2.getTime()) {
            return true
          } else {
            return false
          }
        }
      }
    }
  },
  methods: {
    init() {
      this.setDefaultTime(this.select)
    },
    change(type) {
      this.$emit('change', this.timeRange, type)
    },
    setDefaultTime(val) {
      this.selected = val
      if (val === 'year') {
        var today = new Date()
        var tYear = today.getFullYear()
        const beginTime = tYear + '-01-01'
        const endTime = getDayTime(new Date().getTime())
        this.timeRange = [beginTime, endTime.Format('yyyy-MM-dd')]
      } if (val === 'season') {
        var today = new Date()
        var tYear = today.getFullYear()
        var tMonth = today.getMonth() + 1
        const oldMonth = tMonth < 4 ? '01' : (tMonth < 7 ? '04' : (tMonth < 10 ? '07' : '10'))
        const beginTime = tYear + '-' + oldMonth + '-01'
        const endTime = getDayTime(new Date().getTime())
        this.timeRange = [beginTime, endTime.Format('yyyy-MM-dd')]
      } else if (val === 'month') { // 30日
        // var today = new Date()
        // var tYear = today.getFullYear()
        // var tMonth = today.getMonth() + 1
        // if (tMonth.toString().length === 1) {
        //   tMonth = '0' + tMonth
        // }
        // const beginTime = tYear + '-' + tMonth + '-01'
        // const endTime = getDayTime(new Date().getTime())
        // this.timeRange = [beginTime, endTime.Format('yyyy-MM-dd')]
        this.timeRange = [getDayTime(new Date().getTime() - 24 * 29 * 60 * 60 * 1000).Format('yyyy-MM-dd'), getDayTime(new Date().getTime()).Format('yyyy-MM-dd')]
      } else if (val === 'week') {
        // const nowDayOfWeek =  new Date().getDay()-1
        const nowDayOfWeek = 6
        this.timeRange = [getDayTime(new Date().getTime() - 24 * nowDayOfWeek * 60 * 60 * 1000).Format('yyyy-MM-dd'), getDayTime(new Date().getTime()).Format('yyyy-MM-dd')]
      } else if (val === 'yesterday') {
        this.timeRange = [getDayTime(new Date().getTime() - 24 * 60 * 60 * 1000).Format('yyyy-MM-dd'), getDayTime(new Date().getTime() - 24 * 60 * 60 * 1000).Format('yyyy-MM-dd')]
      } else if (val === 'today') {
        this.timeRange = [getDayTime(new Date().getTime()).Format('yyyy-MM-dd'), getDayTime(new Date().getTime()).Format('yyyy-MM-dd')]
      }
      this.change(val)
    }
  }
}
</script>

<style rel="stylesheet/scss" lang="scss" scoped>
  .statistic-container {

    .el-button{
      padding: 5px 10px;
    }
    margin-bottom: 10px;
    text-align: center;
    .chart-tool-button {
      padding: 5px;
      line-height: 16px;
      margin-top: 5px;
      font-size: 14px;
    }
    .chart-tool-button:hover {
      background-color: #8cc5ff;
      cursor: pointer;
      color: white;
    }
    .chart-tool-button:active {
      background-color: #8cc5ff;
      color: white;
    }
  }
  .selected {
    background-color: #8cc5ff;
    color: white;
  }
  .checked-btn{
    color: #278DF9;
    border-color: #beddfd;
    background-color: #e9f4fe;
  }
</style>