|
|
@ -484,7 +484,7 @@ export default {
|
|
|
|
const markPoints = []
|
|
|
|
const markPoints = []
|
|
|
|
const markAreas = []
|
|
|
|
const markAreas = []
|
|
|
|
const powerOutages = []
|
|
|
|
const powerOutages = []
|
|
|
|
const oneHourMs = 60 * 60 * 1000 // 1小时的毫秒数
|
|
|
|
const oneHourMs = 2 * 60 * 60 * 1000 // 1小时的毫秒数
|
|
|
|
|
|
|
|
|
|
|
|
// 遍历并处理数据
|
|
|
|
// 遍历并处理数据
|
|
|
|
for (let i = 0; i < sortedData.length; i++) {
|
|
|
|
for (let i = 0; i < sortedData.length; i++) {
|
|
|
@ -497,7 +497,7 @@ export default {
|
|
|
|
const nextTime = new Date(sortedData[i + 1].recordTime).getTime()
|
|
|
|
const nextTime = new Date(sortedData[i + 1].recordTime).getTime()
|
|
|
|
const timeDiff = nextTime - currentTime
|
|
|
|
const timeDiff = nextTime - currentTime
|
|
|
|
|
|
|
|
|
|
|
|
// 如果时间间隔大于1小时,插入断点
|
|
|
|
// 如果时间间隔大于2小时,插入断点
|
|
|
|
if (timeDiff > oneHourMs) {
|
|
|
|
if (timeDiff > oneHourMs) {
|
|
|
|
// 创建断点 - 使用null值强制图表线断开
|
|
|
|
// 创建断点 - 使用null值强制图表线断开
|
|
|
|
// 当前点之后的断点
|
|
|
|
// 当前点之后的断点
|
|
|
@ -567,7 +567,13 @@ export default {
|
|
|
|
|
|
|
|
|
|
|
|
// 计算平均值时排除中断点和无效值
|
|
|
|
// 计算平均值时排除中断点和无效值
|
|
|
|
const validData = processedData.filter(item => !item.isBreakPoint)
|
|
|
|
const validData = processedData.filter(item => !item.isBreakPoint)
|
|
|
|
const validValues = validData.map(e => parseFloat(e[valueField]))
|
|
|
|
let validValues = validData.map(e => parseFloat(e[valueField]))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 针对特定字段,如果业务上它们不应为负,则过滤掉负值 (在 NaN 过滤之前)
|
|
|
|
|
|
|
|
if (valueField === 'fluxFlow' || valueField === 'press' || valueField === 'temperature') {
|
|
|
|
|
|
|
|
validValues = validValues.filter(v => typeof v === 'number' && v >= 0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 进一步过滤掉 NaN 值
|
|
|
|
// 进一步过滤掉 NaN 值
|
|
|
|
const validNumericValues = validValues.filter(v => !isNaN(v));
|
|
|
|
const validNumericValues = validValues.filter(v => !isNaN(v));
|
|
|
|
const average = validNumericValues.length > 0 ?
|
|
|
|
const average = validNumericValues.length > 0 ?
|
|
|
@ -655,6 +661,20 @@ export default {
|
|
|
|
color: '#000000'
|
|
|
|
color: '#000000'
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 针对特定字段,如果业务上它们不应为负,则强制Y轴从0开始
|
|
|
|
|
|
|
|
if (name === '瞬时流量' || name === '压力' || name === '温度') {
|
|
|
|
|
|
|
|
option.yAxis.min = 0;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 保留之前的逻辑或让Echarts自动计算 (如果其他图表需要不同处理)
|
|
|
|
|
|
|
|
if (dataResult.processedData.some(item => item.isBreakPoint)) {
|
|
|
|
|
|
|
|
option.yAxis.min = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 若希望Echarts自动计算其他图表的min,可以不设置,或显式提供回调
|
|
|
|
|
|
|
|
// else {
|
|
|
|
|
|
|
|
// option.yAxis.min = function(value) { return value.min; };
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 设置提示格式化
|
|
|
|
// 设置提示格式化
|
|
|
|
option.tooltip.formatter = tooltipFormatter || function(params) {
|
|
|
|
option.tooltip.formatter = tooltipFormatter || function(params) {
|
|
|
|
const dataIndex = params[0].dataIndex;
|
|
|
|
const dataIndex = params[0].dataIndex;
|
|
|
@ -718,17 +738,6 @@ export default {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}];
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
|
|
// 确保y轴包含0点
|
|
|
|
|
|
|
|
if (!option.yAxis.min) {
|
|
|
|
|
|
|
|
option.yAxis.min = function(value) {
|
|
|
|
|
|
|
|
// 数据中有停电断点,确保图表显示到0
|
|
|
|
|
|
|
|
if (dataResult.processedData.some(item => item.isBreakPoint)) {
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return value.min;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return option;
|
|
|
|
return option;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|