pc端
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

<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>