|
|
@ -1,41 +1,30 @@ |
|
|
|
<script lang="ts" setup> |
|
|
|
import * as echarts from 'echarts' |
|
|
|
import { onMounted, ref, watchEffect } from 'vue' |
|
|
|
import { onMounted, ref, watch } from 'vue' |
|
|
|
|
|
|
|
const props = defineProps<{ |
|
|
|
title: string |
|
|
|
chartId: string |
|
|
|
envData: Home.DisplayrelyMgrParams |
|
|
|
}>() |
|
|
|
|
|
|
|
const temperatureData = ref<(number)[]>([0]) |
|
|
|
const humidityData = ref<(number)[]>([0]) |
|
|
|
const h2o2ConcentrationData = ref<(number)[]>([0]) |
|
|
|
const h2o2SaturationData = ref<(number)[]>([0]) |
|
|
|
const dataLength = ref(10) |
|
|
|
|
|
|
|
watchEffect(() => { |
|
|
|
temperatureData.value.push(props.envData.temp) |
|
|
|
humidityData.value.push(props.envData.rh) |
|
|
|
h2o2ConcentrationData.value.push(props.envData.rs) |
|
|
|
h2o2SaturationData.value.push(props.envData.h2o2) |
|
|
|
dataLength.value = temperatureData.value.length |
|
|
|
}) |
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
const chartDom = document.getElementById(props.chartId) |
|
|
|
if (chartDom) { |
|
|
|
const myChart = echarts.init(chartDom, null, { renderer: 'svg' }) |
|
|
|
|
|
|
|
const dataLength = ref(30) |
|
|
|
watch( |
|
|
|
() => props.envData, |
|
|
|
(newValue) => { |
|
|
|
if (!chartRef.value) { |
|
|
|
return |
|
|
|
} |
|
|
|
let myChart = echarts.getInstanceByDom(chartRef.value) |
|
|
|
if (!myChart) { |
|
|
|
myChart = echarts.init(chartRef.value, null, { renderer: 'svg' }) |
|
|
|
} |
|
|
|
const option = { |
|
|
|
title: { |
|
|
|
text: props.title, |
|
|
|
text: '哈哈哈', |
|
|
|
}, |
|
|
|
tooltip: { |
|
|
|
trigger: 'axis', |
|
|
|
}, |
|
|
|
legend: { |
|
|
|
// data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'], |
|
|
|
data: ['温度', '湿度', 'H2O2浓度', 'H2O2饱和度'], |
|
|
|
orient: 'horizontal', // 水平布局 |
|
|
|
itemWidth: 10, // 图例图形宽度 |
|
|
@ -56,7 +45,7 @@ onMounted(() => { |
|
|
|
{ |
|
|
|
name: '温度', |
|
|
|
type: 'line', |
|
|
|
data: temperatureData.value.sort((a, b) => a - b), |
|
|
|
data: newValue.map(item => item.temp), |
|
|
|
symbol: 'circle', |
|
|
|
symbolSize: 2, |
|
|
|
lineStyle: { |
|
|
@ -67,7 +56,7 @@ onMounted(() => { |
|
|
|
{ |
|
|
|
name: '湿度', |
|
|
|
type: 'line', |
|
|
|
data: humidityData.value.sort((a, b) => a - b), |
|
|
|
data: newValue.map(item => item.rh), |
|
|
|
symbol: 'circle', |
|
|
|
symbolSize: 2, |
|
|
|
lineStyle: { |
|
|
@ -78,7 +67,7 @@ onMounted(() => { |
|
|
|
{ |
|
|
|
name: 'H2O2浓度', |
|
|
|
type: 'line', |
|
|
|
data: h2o2ConcentrationData.value.sort((a, b) => a - b), |
|
|
|
data: newValue.map(item => item.h2o2), |
|
|
|
symbol: 'circle', |
|
|
|
symbolSize: 2, |
|
|
|
lineStyle: { |
|
|
@ -89,7 +78,7 @@ onMounted(() => { |
|
|
|
{ |
|
|
|
name: 'H2O2饱和度', |
|
|
|
type: 'line', |
|
|
|
data: h2o2SaturationData.value.sort((a, b) => a - b), |
|
|
|
data: newValue.map(item => item.rs), |
|
|
|
symbol: 'circle', |
|
|
|
symbolSize: 2, |
|
|
|
lineStyle: { |
|
|
@ -100,15 +89,23 @@ onMounted(() => { |
|
|
|
], |
|
|
|
} |
|
|
|
myChart.setOption(option) |
|
|
|
} |
|
|
|
}, |
|
|
|
{ |
|
|
|
deep: true, |
|
|
|
}, |
|
|
|
) |
|
|
|
|
|
|
|
const chartRef = ref<HTMLElement | null>(null) |
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
echarts.init(chartRef.value, null, { renderer: 'svg' }) |
|
|
|
}) |
|
|
|
</script> |
|
|
|
|
|
|
|
<template> |
|
|
|
<div class="line-chart"> |
|
|
|
<div :id="chartId" style="height: 50vh;" /> |
|
|
|
<div ref="chartRef" style="height: 50vh" /> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<style scoped> |
|
|
|
</style> |
|
|
|
<style scoped></style> |