You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.2 KiB
126 lines
3.2 KiB
<template>
|
|
<el-card class="box-card">
|
|
<el-empty description="暂无数据" v-if="noData"></el-empty>
|
|
<div id="realtimeContainer" v-show="!noData"></div>
|
|
</el-card>
|
|
</template>
|
|
|
|
<script setup>
|
|
import { onMounted, ref, defineExpose } from 'vue';
|
|
import { Line } from '@antv/g2plot';
|
|
import { formatChartTime } from 'utils/time';
|
|
|
|
const show = ref(false);
|
|
const noData = ref(true);
|
|
let bar = null;
|
|
|
|
// 设置图表
|
|
onMounted(() => {
|
|
show.value = true;
|
|
});
|
|
|
|
// 设置图表
|
|
const setDate = data => {
|
|
if (bar) {
|
|
console.log('change data');
|
|
bar.changeData(data);
|
|
return;
|
|
}
|
|
|
|
bar = new Line('realtimeContainer', {
|
|
data,
|
|
padding: 'auto',
|
|
xField: 'time',
|
|
yField: 'value',
|
|
seriesField: 'category',
|
|
slider: {
|
|
start: 0.5,
|
|
end: 1,
|
|
},
|
|
height: 700,
|
|
// smooth: true,
|
|
point: {
|
|
size: 2,
|
|
shape: 'circular',
|
|
style: {
|
|
fill: 'white',
|
|
lineWidth: 2,
|
|
},
|
|
},
|
|
});
|
|
|
|
// bar.on('slider:drag', function (event) {
|
|
// console.log('event: ', event);
|
|
// });
|
|
|
|
bar.render();
|
|
};
|
|
|
|
// 处理数据
|
|
const changeDate = value => {
|
|
if (!value || !value.length) {
|
|
noData.value = true;
|
|
return;
|
|
}
|
|
noData.value = false;
|
|
|
|
const arr = [];
|
|
value.forEach(element => {
|
|
const item = { ...element };
|
|
|
|
const so2Item = { category: 'SO2' };
|
|
const saltItem = { category: '盐分' };
|
|
const environmentTemperatureItem = { category: '环温' };
|
|
const environmentHumidityItem = { category: '环湿' };
|
|
const deviceTemperatureItem = { category: '机温' };
|
|
const deviceHumidityItem = { category: '机湿' };
|
|
const corrosion1Item = { category: '腐流1' };
|
|
const corrosion2Item = { category: '腐流2' };
|
|
const corrosion3Item = { category: '腐流3' };
|
|
const corrosion4Item = { category: '腐流4' };
|
|
|
|
so2Item.time = formatChartTime(item.time);
|
|
so2Item.value = item.so2;
|
|
arr.push(so2Item);
|
|
|
|
saltItem.time = formatChartTime(item.time);
|
|
saltItem.value = item.salt;
|
|
arr.push(saltItem);
|
|
|
|
environmentTemperatureItem.time = formatChartTime(item.time);
|
|
environmentTemperatureItem.value = item.environmentTemperature;
|
|
arr.push(environmentTemperatureItem);
|
|
|
|
environmentHumidityItem.time = formatChartTime(item.time);
|
|
environmentHumidityItem.value = item.environmentHumidity;
|
|
arr.push(environmentHumidityItem);
|
|
|
|
deviceTemperatureItem.time = formatChartTime(item.time);
|
|
deviceTemperatureItem.value = item.deviceTemperature;
|
|
arr.push(deviceTemperatureItem);
|
|
|
|
deviceHumidityItem.time = formatChartTime(item.time);
|
|
deviceHumidityItem.value = item.deviceHumidity;
|
|
arr.push(deviceHumidityItem);
|
|
|
|
corrosion1Item.time = formatChartTime(item.time);
|
|
corrosion1Item.value = item.corrosion1;
|
|
arr.push(corrosion1Item);
|
|
|
|
corrosion2Item.time = formatChartTime(item.time);
|
|
corrosion2Item.value = item.corrosion2;
|
|
arr.push(corrosion2Item);
|
|
|
|
corrosion3Item.time = formatChartTime(item.time);
|
|
corrosion3Item.value = item.corrosion3;
|
|
arr.push(corrosion3Item);
|
|
|
|
corrosion4Item.time = formatChartTime(item.time);
|
|
corrosion4Item.value = item.corrosion4;
|
|
arr.push(corrosion4Item);
|
|
});
|
|
setDate(arr);
|
|
};
|
|
|
|
defineExpose({ changeDate });
|
|
</script>
|
|
|