<template lang="pug"> el-dialog(:title="type==1?'历史数据':'统计图表'", :close-on-click-modal='false', :visible.sync='visible' width='80%' :append-to-body='true') el-form(:model='dataForm', size='mini' :inline='true' :rules='dataRule' ,ref='dataForm', label-width='120px') el-form-item(label='设备名称', prop='name') el-input(v-model='dataForm.name', placeholder='设备名称' readOnly) el-form-item(label='设备编号', prop='code') el-input(v-model='dataForm.code', placeholder='设备编号' readOnly) //- el-form-item(label='数据起止阶段', prop='time') //- el-button( //- size="mini", //- type="primary", //- @click="handleDate(item.id)", //- v-for="(item, index) in typeList", //- :key="index", //- :class="[item.id == currentActive ? 'isActive' : '']" //- ) {{ item.name }} el-form-item( label="时间范围:") el-date-picker( v-model="startTime" align="right" type="date" @change="startChangeHandle" :picker-options="startPickerOptions" value-format="yyyy-MM-dd" placeholder="选择日期") span( style="padding: 0 10px") 至 el-date-picker( v-model="endTime" align="right" type="date" @change="endChangeHandle" :picker-options="endPickerOptions" value-format="yyyy-MM-dd" placeholder="选择日期") el-button( type="primary" style='margin-left:10px;' size="mini" icon="el-icon-search" @click="getList()") 查询 span(v-if="type==1") el-table( :data='dataList' size="mini" ,style='width: 100%;' :header-cell-style="{ background: '#EEF8FF', color: '#333333' }") el-table-column( :resizable="false" type='index', header-align='center', align='center', label='序号') el-table-column( :resizable="false" prop='temperature', header-align='center', align='center', label='温度(℃)') el-table-column( :resizable="false" prop='humidity', header-align='center', align='center', label='湿度(%RH)') el-table-column( :resizable="false" prop='carbon_dioxide', header-align='center', align='center', label='CO2(PPM)') //- el-table-column( :resizable="false" prop='name', header-align='center', align='center', label='设备状态') el-table-column( :resizable="false" prop='create_time', header-align='center', align='center', label='采集时间') tablePagination(:pageSize="pageSize" :totalSize="totalPage" @parentMethod='getDataList') span(v-else) .echartsWarp(width="100%", flex) div(v-for='item in chartList' :key='item.id') chart(:id="item.id", :data="item.data", :title="item.title", :color="item.color") </template> <script> import tablePagination from '@/pages/components/tablePagination' import chart from '@/pages/components/chart.vue' import pie from './pie' export default { components: { tablePagination, chart, pie }, data() { return { startPickerOptions: {}, endPickerOptions: {}, startTime: '', endTime: '', typeList: [ { name: '当日', id: 1 }, { name: '本周', id: 2 }, { name: '当月', id: 3 }, { name: '今年', id: 4 } ], currentActive: 1, type: null, pageSize: 10, pageIndex: 1, totalPage: 0, visible: false, dataForm: {}, dataList: [], chartList: [ { id: '11', title: '温度(℃)', color: '#21ACFC', data: [] }, { id: '22', title: '湿度(%RH)', color: '#36CBCB', data: [] }, { id: '33', title: 'CO2(PPM)', color: '#4ECB74', data: [] }, { id: '44', title: '故障报警', color: '#975FE4', data: [] } ], dataRule: {} } }, methods: { init(data, type) { this.startTime = '' this.endTime = '' this.dataForm = data this.type = type this.visible = true this.currentActive = 1 if (this.type === 1) { this.getDataList() //获取历史数据列表 } else if (this.type === 2) { this.getDataListTb() } }, getList() { if (this.type === 1) { this.getDataList() //获取历史数据列表 } else if (this.type === 2) { this.getDataListTb() } }, getDataList(page, size) { this.$http({ url: this.$http.adornUrl(`/kanban/getListByTypeAndId`), method: 'get', params: this.$http.adornParams({ resourceId: this.dataForm.id, resourceType: this.dataForm.type, startTime: this.startTime, endTime: this.endTime, page: page || this.pageIndex, rows: size || this.pageSize }) }).then((data) => { if (data && data.code === 0) { console.log('室内气象站历史数据', data) this.dataList = data.page.records this.totalPage = data.page.total } else { this.dataList = [] this.totalPage = 0 } }) }, getDataListTb() { this.$http({ url: this.$http.adornUrl('/analysis/getSnqxzInfoTj'), method: 'get', params: this.$http.adornParams({ region: this.dataForm.region, resourceId: this.dataForm.id, startTime: this.startTime, endTime: this.endTime }) }).then((data) => { if (data && data.code === 0) { // console.log('数据', data) this.chartList[0].data = data.temperatureList this.chartList[1].data = data.humidityList this.chartList[2].data = data.carbonDioxideList this.chartList[3].data = data.carbonDioxideList } }) }, // 开始时间change事件 startChangeHandle(val) { if (val) { this.endPickerOptions = { disabledDate(time) { return time.getTime() <= new Date(val) - 8.64e7 } } } else { this.endPickerOptions = {} } }, // 结束时间change事件 endChangeHandle(val) { if (val) { this.startPickerOptions = { disabledDate(time) { return new Date(val) <= time.getTime() } } } else { this.startPickerOptions = {} } }, // 当日 ,本周 handleDate(i) { this.currentActive = i if (this.type === 1) { this.getDataList() //获取历史数据列表 } else if (this.type === 2) { this.getDataListTb() } } } } </script> <style lang="scss" scoped> .echartsWarp { display: flex; justify-content: space-between; flex-wrap: wrap; height: calc(100vh - 530px); // margin-bottom: 90px; // border: 1px solid; > div { width: 48%; height: calc(85% / 2); padding: 10px 10px 0 10px; box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.1); .title { font-size: 16px; font-family: Microsoft YaHei; font-weight: 600; color: #000000; line-height: 40px; &::before { content: ''; display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: #0097ff; margin: 0 10px; } } } } </style>