From f99807c9489639be25e9a277bd92c8ff021e37f5 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Mon, 18 Dec 2023 13:52:08 +0800
Subject: [PATCH] fix:热力图播放
---
src/views/averageContrast/index.vue | 278 ++++++++++++++++++++++++++++++++++---------------------
1 files changed, 170 insertions(+), 108 deletions(-)
diff --git a/src/views/averageContrast/index.vue b/src/views/averageContrast/index.vue
index 8c98eeb..ae7f421 100644
--- a/src/views/averageContrast/index.vue
+++ b/src/views/averageContrast/index.vue
@@ -1,34 +1,29 @@
<template>
- <div style="width:100%">
+ <div style="width: 100%">
<div class="topSelect">
- <el-cascader
- v-model="newMac"
- :options="options"
- clearable
- placeholder="������������"
- style="width: 354px;"
- />
- <el-select v-model="value" placeholder="������������" style="margin-left:20px">
- <el-option
- v-for="item in newSensor"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
+ <el-cascader v-model="newMac" :options="options" clearable placeholder="������������" style="width: 354px" />
+ <el-select v-model="value" placeholder="������������" style="margin-left: 20px">
+ <el-option v-for="item in newSensor" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<!-- <el-radio-group v-model="radio1" style="margin-left:20px">
<el-radio-button label="������" />
<el-radio-button label="������" />
</el-radio-group> -->
- <component :is="dataType" style="padding-left:0;margin-left:20px;width:160px" @sendPickerChild="showPickerChild" />
+ <el-date-picker v-model="timevalue" type="datetimerange" range-separator="���" value-format="yyyy-MM-dd HH"
+ start-placeholder="������������" :picker-options="pickerOptions" end-placeholder="������������" style="margin-left: 1rem">
+ </el-date-picker>
<!--������������-->
<el-button @click="selectData" class="btn1">������</el-button>
+ </div>
+ <div class="topTitle">
+ <div style="position: absolute">{{ selectyz }}</div>
+ <!-- <div style="text-align: center;width: 100%;">{{ newData }}��{{ newMac?newMac[0]:'' }}��{{ newMac?newMac[newMac.length - 1][0]:'' }}��{{ value |sensorFilter }}�����������</div> -->
</div>
<!-- <div class="topTitle">
<div style="position:absolute">(������:ug/m��)</div>
<div style="text-align: center;width: 100%;">{{ newData }}��{{ newMac?newMac[0]:'' }}��{{ newMac?newMac[newMac.length - 1][0]:'' }}��{{ value |sensorFilter }}�����������</div>
</div> -->
- <LineChart :chart-data="lineChartData" />
+ <LineChart :chart-data="lineChartData" :isMouse="true" style="height: 30rem" />
</div>
</template>
@@ -37,35 +32,34 @@
// ���������import������������������from'������������������';
// import LineChart from '@/components/Echarts/LineChartSpe'
-import LineChart from '@/components/Echarts/LineChart'
+import LineChart from '@/components/Echarts/LineChart2'
import DatePicker from '@/components/Form/DatePicker'
import MouthPicker from '@/components/Form/MouthPicker'
import HourPicker from '@/components/Form/HourPicker'
import HourPicker2 from '@/components/Form/HourPicker2'
-
import CustomPicker from '@/components/Form/CustomPicker'
import json from '@/assets/json/sensor.json'
const lineChartData = {
newVisitis: {
expectedData: [100, 120, 161, 134, 105, 160, 165],
- actualData: [120, 82, 91, 154, 162, 140, 145]
+ actualData: [120, 82, 91, 154, 162, 140, 145],
},
messages: {
expectedData: [200, 192, 120, 144, 160, 130, 140],
- actualData: [180, 160, 151, 106, 145, 150, 130]
+ actualData: [180, 160, 151, 106, 145, 150, 130],
},
purchases: {
expectedData: [80, 100, 121, 104, 105, 90, 100],
- actualData: [120, 90, 100, 138, 142, 130, 130]
+ actualData: [120, 90, 100, 138, 142, 130, 130],
},
shoppings: {
expectedData: [130, 140, 141, 142, 145, 150, 160],
- actualData: [120, 82, 91, 154, 162, 140, 130]
- }
+ actualData: [120, 82, 91, 154, 162, 140, 130],
+ },
}
export default {
-// import ���������������������������������������������������
+ // import ���������������������������������������������������
components: {
LineChart,
DatePicker,
@@ -75,10 +69,10 @@
CustomPicker,
},
filters: {
- sensorFilter: function(value) {
+ sensorFilter: function (value) {
if (!value) return ''
return json[value]
- }
+ },
},
props: {
// defaultData: Array
@@ -99,17 +93,24 @@
radio1: '������',
unit: 0,
type: 'select',
+ selectyz: '(������:ug/m��)',
+ timevalue: [],
newLineChartData: {
series: [],
xAxis: [],
- title: ''
+ title: '',
},
newData: '',
defaultData: [],
newListData: [],
chartSensorName: '',
middleData: [],
- seriesName: ['���������', '���������', '���������']
+ seriesName: ['���������', '���������', '���������'],
+ pickerOptions: {
+ disabledDate: (time) => {
+ return time.getTime() > new Date()
+ },
+ },
}
},
// ������������ ���������data������
@@ -129,23 +130,60 @@
this.dataType = 'MouthPicker2'
this.unit = 3
}
- }
+ },
+ value(one, two) {
+ if (
+ one === 'a34004' ||
+ one === 'a34002' ||
+ one === 'a21004' ||
+ one === 'a21026' ||
+ one === 'a05024' ||
+ one === 'a21001'
+ ) {
+ this.selectyz = '(������:ug/m��)'
+ } else if (
+ one === 'a21005' ||
+ one === 'a99054' ||
+ one === 'a31001' ||
+ one === 'a24088'
+ ) {
+ this.selectyz = '(������:mg/m��)'
+ } else if (one === 'a01001') {
+ this.selectyz = '(������:���)'
+ } else if (one === 'a01002') {
+ this.selectyz = '(������:%)'
+ } else if (one === 'a01007') {
+ this.selectyz = '(������:m/s)'
+ } else if (one === 'a01008') {
+ this.selectyz = '(������:���)'
+ } else if (one === 'a01006') {
+ this.selectyz = '(������:hpa)'
+ } else if (one === 'a00e12') {
+ this.selectyz = '(������:lux)'
+ } else if (one === 'a19002') {
+ this.selectyz = '(������:���)'
+ } else if (one === 'a00e03' || one === 'a00e04') {
+ this.selectyz = '(������:pcs/0.1L)'
+ } else if (one === 'a00e13') {
+ this.selectyz = '(������:db)'
+ } else if (one === 'a21028') {
+ this.selectyz = '(������:ppm)'
+ }
+ },
},
// ������������ - ��������������������������������� this ���������
created() {
this.getData()
},
// ������������ - ��������������������������� DOM ���������
- mounted() {
-
- },
- beforeCreate() {}, // ������������ - ������������
- beforeMount() {}, // ������������ - ������������
- beforeUpdate() {}, // ������������ - ������������
- updated() {}, // ������������ - ������������
- beforeDestroy() {}, // ������������ - ������������
- destroyed() {}, // ������������ - ������������
- activated() {},
+ mounted() { },
+ beforeCreate() { }, // ������������ - ������������
+ beforeMount() { }, // ������������ - ������������
+ beforeUpdate() { }, // ������������ - ������������
+ updated() { }, // ������������ - ������������
+ beforeDestroy() { }, // ������������ - ������������
+ destroyed() { }, // ������������ - ������������
+ activated() { },
// ������������
methods: {
// ������������������������
@@ -154,19 +192,28 @@
url: '/monitorPoint/queryMonitorPoints',
method: 'get',
params: {
- organizationId: this.$store.state.orgId
- }
+ organizationId: this.$store.state.orgId,
+ },
})
.then((res) => {
// console.log('������index������������������������')
// console.log(res)
this.defaultData = res.data.monitorPoints
for (let i = 0; i < this.defaultData.length; i++) {
- this.options.push({ value: this.defaultData[i].name, label: this.defaultData[i].name })
+ this.options.push({
+ value: this.defaultData[i].name,
+ label: this.defaultData[i].name,
+ })
this.options[i].children = []
if (this.defaultData[i].devices) {
for (let j = 0; j < this.defaultData[i].devices.length; j++) {
- this.options[i].children.push({ value: [this.defaultData[i].devices[j].name, this.defaultData[i].devices[j].mac], label: this.defaultData[i].devices[j].name })
+ this.options[i].children.push({
+ value: [
+ this.defaultData[i].devices[j].name,
+ this.defaultData[i].devices[j].mac,
+ ],
+ label: this.defaultData[i].devices[j].name,
+ })
}
}
}
@@ -181,25 +228,27 @@
url: '/deviceInfo/getMacSensors',
method: 'post',
data: {
- macs: this.newMac1
- }
- }).then((res) => {
- // console.log(res)
- this.newSensor = []
- var sensor = res.data
- for (var i in sensor) {
- this.newSensor.push({ value: i, label: sensor[i] })
- }
- }).catch((err) => {
- console.log(err)
+ macs: this.newMac1,
+ },
})
+ .then((res) => {
+ // console.log(res)
+ this.newSensor = []
+ var sensor = res.data
+ for (var i in sensor) {
+ this.newSensor.push({ value: i, label: sensor[i] })
+ }
+ })
+ .catch((err) => {
+ console.log(err)
+ })
},
// ������
selectData() {
var newLineChartData = {
series: [],
xAxis: [],
- title: []
+ title: [],
}
this.newXData = []
this.$request({
@@ -208,37 +257,45 @@
params: {
mac: this.newMac1[0],
sensor_code: this.value,
- date: this.newData
- }
- }).then((res) => {
- // console.log('������������������������������')
- // console.log(res)
- const data = res.data
- const lockLength = 0
- // for (let i = 0; i < data.length; i++) {
- // for (let j = 0; j < data[i].values.length; j++) {
- // if (lockLength < data[i].values.length) {
- // newLineChartData.series.push({ data: [], name: '', type: 'line' })
- // newLineChartData.series[j].name = data[i].values[j].name
- // newLineChartData.title.push(data[i].values[j].name)
- // }
- // lockLength++
- // newLineChartData.series[j].data.push(data[i].values[j].sensorValue)
- // }
- // }
- for (let i = 0; i < 3; i++) {
- newLineChartData.series.push({ data: [], name: '', type: 'line' })
- for (let j = 0; j < data.length; j++) {
- newLineChartData.series[i].data.push(data[j].values[i])
- newLineChartData.series[i].name = this.seriesName[i]
- newLineChartData.xAxis.push(data[j].time)
- }
- newLineChartData.title = this.seriesName
- }
- this.lineChartData = newLineChartData
- }).catch((err) => {
- console.log(err);
+ startTime: this.timevalue[0],
+ endTime: this.timevalue[1],
+ },
})
+ .then((res) => {
+ // console.log('������������������������������')
+ // console.log(res)
+ const data = res.data
+ const lockLength = 0
+ // for (let i = 0; i < data.length; i++) {
+ // for (let j = 0; j < data[i].values.length; j++) {
+ // if (lockLength < data[i].values.length) {
+ // newLineChartData.series.push({ data: [], name: '', type: 'line' })
+ // newLineChartData.series[j].name = data[i].values[j].name
+ // newLineChartData.title.push(data[i].values[j].name)
+ // }
+ // lockLength++
+ // newLineChartData.series[j].data.push(data[i].values[j].sensorValue)
+ // }
+ // }
+ for (let i = 0; i < 3; i++) {
+ newLineChartData.series.push({
+ data: [], name: '', type: 'line', triggerLineEvent: true,
+ emphasis: { focus: 'series' }
+ })
+ for (let j = 0; j < data.length; j++) {
+ newLineChartData.series[i].data.push(data[j].values[i])
+ newLineChartData.series[i].name = this.seriesName[i]
+ }
+ newLineChartData.title = this.seriesName
+ }
+ for (let y = 0; y < data.length; y++) {
+ newLineChartData.xAxis.push(data[y].time)
+ }
+ this.lineChartData = newLineChartData
+ })
+ .catch((err) => {
+ console.log(err)
+ })
},
// ���������������������������������������������
showPickerChild(data) {
@@ -303,36 +360,41 @@
return value2 - value1
}
}
-
},
// ������������������������
filterSensorName() {
- this.chartSensorName = this.$options.filters.sensorFilter(this.chartSensorKey[0].sensorCode)
- }
- } // ���������������keep-alive������������������������������������
+ this.chartSensorName = this.$options.filters.sensorFilter(
+ this.chartSensorKey[0].sensorCode
+ )
+ },
+ }, // ���������������keep-alive������������������������������������
}
</script>
<style scoped lang="scss">
-.topSelect{
- display: flex;
- margin-bottom: 20px;
- padding: 20px 15px 0 15px;
- span:first-child{
- flex: 1;
- }
- div:last-child{
- width: 300px;
- line-height: 40px;
- padding-left: 6px;
- }
+.topSelect {
+ display: flex;
+ margin-bottom: 20px;
+ padding: 20px 15px 0 15px;
+
+ span:first-child {
+ flex: 1;
+ }
+
+ div:last-child {
+ width: 300px;
+ line-height: 40px;
+ padding-left: 6px;
+ }
}
-.topTitle{
- display: flex;
- justify-content: space-between;
- margin-bottom: 20px;
- padding: 0 15px;
+
+.topTitle {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 20px;
+ padding: 0 15px;
}
-.btn1{
+
+.btn1 {
margin-left: 1%;
height: 40px;
}
--
Gitblit v1.8.0