Newer
Older
smartcity_env_front / src / views / environment / environmentData.vue
[wangxitong] on 22 Jul 2021 7 KB first commit
<template>
  <app-container>
    <search-area :need-clear="false" :need-search-more="false" type="seperate" size="small" search-more-type="default" @search="fetchData" @clear="clearInput">
      <!--一般查询条件-->
      <search-item>
        <el-input v-model.trim="listQuery.keywords" size="small" placeholder="监测点名称/编号" clearable/>
      </search-item>
      <search-item>
        <el-date-picker
          v-model="timeRange"
          size="small"
          type="datetimerange"
          range-separator="至"
          value-format="yyyy-MM-dd HH:mm:ss"
          start-placeholder="开始时间"
          end-placeholder="结束时间"/>
      </search-item>
    </search-area>
    <el-row style="height: 12px;background-color: #ebebeb"/>
    <div style="padding: 10px 10px 0px 10px">
      <el-tabs v-model="activeName" type="card" @tab-click="lineSearch">
        <el-tab-pane
          v-for="(item, index) in tabs"
          :key="item.name"
          :label="item.title"
          :name="item.name"/>
        <ve-line :data="chartData" :settings="chartSettings"/>
      </el-tabs>
    </div>

    <normal-table :data="list" :head="tableOption.head" :query="listQuery" :total="total" :columns="columns" :list-loading="listLoading" :options="tableOption.options" :tools-option="tableOption.toolsOption" size="small" @change="changePage">
      <template slot="btns"/>
    </normal-table>
  </app-container>
</template>

<script>
import { getToday } from '@/utils/dateutils'
export default {
  name: 'EnvironmentData',
  components: { getToday },
  data() {
    return {
      chartData: {
        columns: ['date', 'standard', 'value'],
        rows: []
      },
      chartSettings: {
        labelMap: {
          'value': '指标值',
          'standard': '标准值'
        },
        metrics: ['standard', 'value'],
        dimension: ['date']
      },
      activeName: 'SO2',
      tabs: [
        { title: 'SO2', name: 'SO2' },
        { title: 'NO2', name: 'NO2' },
        { title: 'CO', name: 'CO' },
        { title: 'O3', name: 'O3' },
        { title: 'PM10', name: 'PM10' },
        { title: 'PM2.5', name: 'PM25' },
        { title: '温度', name: 'temperature' },
        { title: '湿度', name: 'humidity' },
        { title: '风速', name: 'windSpeed' },
        { title: '风向', name: 'windDirection' }
      ],
      listQuery: {
        keywords: '',
        startTime: '', // 开始时间
        endTime: '', // 结束时间
        offset: 1,
        limit: 20
      }, // 筛选条件
      columns: [
        {
          text: '名称',
          value: 'name',
          align: 'center'
        },
        {
          text: 'PM2.5',
          value: 'PM25',
          align: 'center',
          width: 100
        },
        {
          text: 'PM10',
          value: 'PM10',
          align: 'center',
          width: 100
        },
        {
          text: 'SO2',
          value: 'SO2',
          align: 'center',
          width: 100
        },
        {
          text: 'NO2',
          value: 'NO2',
          align: 'center',
          width: 100
        },
        {
          text: 'CO',
          value: 'CO',
          align: 'center',
          width: 100
        },
        {
          text: 'O3',
          value: 'O3',
          align: 'center',
          width: 100
        },
        {
          text: '温度',
          value: 'temperature',
          align: 'center',
          width: 100
        },
        {
          text: '湿度',
          value: 'humidity',
          align: 'center',
          width: 100
        },
        {
          text: '风速',
          value: 'windSpeed',
          align: 'center',
          width: 100
        },
        {
          text: '风向',
          value: 'windDirection',
          align: 'center',
          width: 100
        },
        {
          text: '时间',
          value: 'time',
          align: 'center'
        }
      ], // 显示列
      timeRange: [], // 时间范围
      list: [], // 列表数据
      total: 0, // 数据总数
      listLoading: true, // 列表加载动画
      tableOption: {
        head: {
          show: true, // 是否需要标题栏,
          text: '数据列表' // 标题名称
        },
        options: {
          needIndex: false // 是否需要序号列
        },
        toolsOption: {
          selectColumns: false, // 是否需要筛选列
          refresh: false // 是否需要刷新按钮
        }
      } // 表格属性
    }
  },
  watch: {
    timeRange(val) {
      if (val && val.length > 0) {
        this.listQuery.startTime = val[0]
        this.listQuery.endTime = val[1]
        this.fetchData()
      } else {
        this.listQuery.startTime = ''
        this.listQuery.endTime = ''
      }
    }
  },
  activated() {
    if (this.$route.query) {
      this.listQuery.keywords = this.$route.query.name
    }
  },
  created() {
    if (this.$route.query) {
      this.listQuery.keywords = this.$route.query.name
    }
    this.listQuery.startTime = getToday('yyyy-MM-dd 00:00:00')
    this.listQuery.endTime = getToday('yyyy-MM-dd hh:mm:ss')
    this.timeRange = [this.listQuery.startTime, this.listQuery.endTime]
    this.fetchData()
  },
  methods: {
    fetchData() {
      this.lineSearch()
      this.listLoading = true
      const that = this
      setTimeout(function() {
        that.list = [
          { name: '宝水新城监控点', PM25: '23.40', PM10: '25.80', SO2: '0.00', NO2: '3.40', CO: '0.40', O3: '7.40', temperature: '22.50', humidity: '80.50', windSpeed: '2.50', windDirection: '122.50', time: '05-07 11:15' },
          { name: '宝水新城监控点', PM25: '23.40', PM10: '25.80', SO2: '0.00', NO2: '3.40', CO: '0.40', O3: '7.40', temperature: '22.50', humidity: '80.50', windSpeed: '2.50', windDirection: '122.50', time: '05-07 11:15' },
          { name: '宝水新城监控点', PM25: '23.40', PM10: '25.80', SO2: '0.00', NO2: '3.40', CO: '0.40', O3: '7.40', temperature: '22.50', humidity: '80.50', windSpeed: '2.50', windDirection: '122.50', time: '05-07 11:15' },
          { name: '宝水新城监控点', PM25: '23.40', PM10: '25.80', SO2: '0.00', NO2: '3.40', CO: '0.40', O3: '7.40', temperature: '22.50', humidity: '80.50', windSpeed: '2.50', windDirection: '122.50', time: '05-07 11:15' }
        ]
        that.total = 200
        that.listLoading = false
      }, 500)
    },
    lineSearch() {
      this.chartData.rows = [
        { date: '9月20日', value: 153, standard: 43 },
        { date: '9月21日', value: 150, standard: 30 },
        { date: '9月22日', value: 143, standard: 23 },
        { date: '9月23日', value: 173, standard: 23 },
        { date: '9月24日', value: 272, standard: 52 },
        { date: '9月25日', value: 253, standard: 53 }
      ]
    },
    // 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写
    changePage(val) {
      if (val && val.size) {
        this.listQuery.limit = val.size
      }
      if (val && val.page) {
        this.listQuery.offset = val.page
      }
      this.fetchData()
    },
    // 重置后的操作, 若不需要显示重置按钮则不需要写
    clearInput() {
      this.$message.success('clearInput')
    }
  }
}
</script>

<style scoped>

</style>