Newer
Older
smartwell_front / src / views / wellManage / components / listLiquidGasData.vue
<template>
  <el-row :gutter="10">
    <el-col>
      <search-area
        type=""
        size="small"
      >
        <!--一般查询条件-->
        <search-item>
          <el-date-picker
            v-model="timeRange"
            type="datetimerange"
            range-separator="至"
            size="small"
            :picker-options="pickerOptions"
            value-format="yyyy-MM-dd HH:mm:ss"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            @change="fetchDeviceType"
          />
        </search-item>
        <search-item>
          <el-select
            v-model="listQuery.watchContent"
            placeholder="监控指标"
            size="small"
            @change="watchContentChange"
          >
            <el-option
              v-for="item in watchContentList"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            />
          </el-select>
        </search-item>
      </search-area>
    </el-col>
    <el-col>
      <el-col :span="12">
        <ve-line
          :data="chartData"
          :settings="chartSettings"
        />
      </el-col>
      <el-col :span="12">
        <el-table
          v-loading="listLoading"
          class="tableStyle"
          :data="list"
          border
        >
          <el-table-column
            v-for="column in columns"
            :key="column.value"
            :label="column.text"
            :width="column.width"
            :align="column.align"
          >
            <template slot-scope="scope">
              <span>{{ scope.row[column.value] }}</span>
            </template>
          </el-table-column>
        </el-table>
      </el-col>
    </el-col>
  </el-row>
</template>

<script>
import { liquidgasdataList } from '@/api/device/deviceTypeDetail'
export default {
  name: 'ListLiquidGasData',
  data() {
    return {
      timeRange: '',
      listQuery: {
        devcode: '',
        beginTime: '',
        endTime: '',
        watchContent: '0'
      },
      watchContentList: [
        {
          label: '液位',
          value: '0'
        },
        {
          label: '燃气',
          value: '1'
        }
      ],
      pickerOptions: {
        shortcuts: [{
          text: '最近一周',
          onClick(picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近一个月',
          onClick(picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近三个月',
          onClick(picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
            picker.$emit('pick', [start, end])
          }
        }]
      },
      // 是否需要序号列
      options: {
        needIndex: false
      },
      columns: [],
      list: [],
      listLoading: false,
      chartSettings: {},
      chartData: {}
    }
  },
  created() {
    this.watchContentChange()
  },
  methods: {
    initData: function(row = null) {
      this.listQuery.devcode = row.devcode
    },
    fetchDeviceType(val) {
      this.listLoading = true
      if (val !== undefined) {
        this.listQuery.startTime = val[0]
        this.listQuery.endTime = val[1]
      }
      liquidgasdataList(this.listQuery).then(response => {
        this.list = response.data
        this.chartData.rows = response.data
        this.listLoading = false
      })
    },
    watchContentChange(val) {
      console.log(val, '=====')
      if (val === '0' || val === undefined) {
        this.chartSettings = {
          labelMap: {
            'liquiddata': '液位值'
          },
          metrics: ['liquiddata'],
          dimension: ['uptime']
        }
        this.chartData = {
          columns: ['uptime', 'liquiddata'],
          rows: []
        }
        this.columns = [
          {
            text: '液位值',
            value: 'liquiddata',
            align: 'center'
          },
          {
            text: '上报时间',
            value: 'uptime',
            align: 'center'
          }
        ]
      } else if (val === '1') {
        this.chartSettings = {
          labelMap: {
            'strength': '燃气浓度'
          },
          metrics: ['strength'],
          dimension: ['uptime']
        }
        this.chartData = {
          columns: ['uptime', 'strength'],
          rows: []
        }
        this.columns = [
          {
            text: '燃气浓度',
            value: 'strength',
            align: 'center'
          },
          {
            text: '上报时间',
            value: 'uptime',
            align: 'center'
          }
        ]
      }
      this.fetchDeviceType()
    }
  }
}
</script>

<style rel="stylesheet/scss" lang="scss" scoped>
.el-date-editor--datetimerange.el-input,
.el-date-editor--datetimerange.el-input__inner{
  width: 340px;
}
.tableStyle {
  margin-top: 60px;
}
</style>