fix:: 自定义指标数值格式处理,导出表格修复

This commit is contained in:
TsMask
2025-07-23 10:56:59 +08:00
parent 26da73654f
commit ad373961e4

View File

@@ -307,7 +307,21 @@ function fnRecordExport() {
for (const key of keys) { for (const key of keys) {
if (tableColumnsKeyArr[i] === key) { if (tableColumnsKeyArr[i] === key) {
const title = tableColumnsTitleArr[i]; const title = tableColumnsTitleArr[i];
if (key == 'timeGroup') {
kpiData[title] = parseDateToStr(item[key]);
} else if (key === 'neName' || key === 'startIndex') {
kpiData[title] = item[key]; kpiData[title] = item[key];
} else {
const v = parseFloat(item[key]);
let kpiV = v.toFixed(3); // 有小数部分,保留 3 位小数
// 判断数字是否有小数部分
if (Math.abs(v) < 0.001) {
kpiV = '0'; // 如果数字非常小,返回 0
} else if (v % 1 === 0) {
kpiV = v.toFixed(0); // 没有小数部分,保留 0 位小数
}
kpiData[title] = kpiV;
}
} }
} }
} }
@@ -368,8 +382,15 @@ function fnGetListTitle() {
width: 100, width: 100,
minWidth: 150, minWidth: 150,
maxWidth: 300, maxWidth: 300,
customRender: (opt:any) => { customRender: (opt: any) => {
return parseFloat(opt.text).toFixed(3); const num = parseFloat(opt.text);
// 判断数字是否有小数部分
if (Math.abs(num) < 0.001) {
return '0'; // 如果数字非常小,返回 0
} else if (num % 1 === 0) {
return num.toFixed(0); // 没有小数部分,保留 0 位小数
}
return num.toFixed(3); // 有小数部分,保留 3 位小数
}, },
}); });
} }
@@ -388,6 +409,9 @@ function fnGetListTitle() {
key: 'timeGroup', key: 'timeGroup',
sorter: true, sorter: true,
width: 100, width: 100,
customRender: (opt: any) => {
return parseDateToStr(opt.text);
},
}); });
nextTick(() => { nextTick(() => {
@@ -456,20 +480,53 @@ function fnGetList() {
}); });
// 计算总值 // 计算总值
const total = Number( const totalV = values.reduce((sum, val) => sum + val, 0);
values.reduce((sum, val) => sum + val, 0).toFixed(2) let total = totalV.toFixed(3);
); // 判断数字是否有小数部分
if (Math.abs(totalV) < 0.001) {
total = '0'; // 如果数字非常小,返回 0
} else if (totalV % 1 === 0) {
total = totalV.toFixed(0); // 没有小数部分,保留 0 位小数
}
// 计算平均值 // 计算平均值
const avg = const avgV = values.length > 0 ? totalV / values.length : 0;
values.length > 0 ? Number((total / values.length).toFixed(2)) : 0; let avg = avgV.toFixed(3);
// 判断数字是否有小数部分
if (Math.abs(avgV) < 0.001) {
avg = '0'; // 如果数字非常小,返回 0
} else if (avgV % 1 === 0) {
avg = avgV.toFixed(0); // 没有小数部分,保留 0 位小数
}
// 计算最大值
const maxV = values.length > 0 ? Math.max(...values) : 0;
let max = maxV.toFixed(3);
// 判断数字是否有小数部分
if (Math.abs(maxV) < 0.001) {
max = '0'; // 如果数字非常小,返回 0
} else if (maxV % 1 === 0) {
max = maxV.toFixed(0); // 没有小数部分,保留 0 位小数
}
// 计算最小值
const minV = values.length > 0 ? Math.min(...values) : 0;
let min = minV.toFixed(3);
// 判断数字是否有小数部分
if (Math.abs(minV) < 0.001) {
min = '0'; // 如果数字非常小,返回 0
} else if (minV % 1 === 0) {
min = minV.toFixed(0); // 没有小数部分,保留 0 位小数
}
kpiStats.value.push({ kpiStats.value.push({
kpiId: columns.key, kpiId: columns.key,
title: columns.title, title: columns.title,
unit: columns.unit, unit: columns.unit,
max: values.length > 0 ? Math.max(...values).toFixed(3) : 0, max,
min: values.length > 0 ? Math.min(...values).toFixed(3) : 0, min,
avg, avg,
total: total, total,
}); });
} }
} else { } else {
@@ -642,7 +699,16 @@ function fnRanderChartData() {
for (const y of chartDataYSeriesData) { for (const y of chartDataYSeriesData) {
for (const key of keys) { for (const key of keys) {
if (y.key === key) { if (y.key === key) {
y.data.push(parseFloat(item[key]).toFixed(3)); // 计算最小值
const v = parseFloat(item[key]);
let kpiV = v.toFixed(3);
// 判断数字是否有小数部分
if (Math.abs(v) < 0.001) {
kpiV = '0'; // 如果数字非常小,返回 0
} else if (v % 1 === 0) {
kpiV = v.toFixed(0); // 没有小数部分,保留 0 位小数
}
y.data.push(kpiV);
chartDataXAxisData.push(parseDateToStr(item['timeGroup'])); chartDataXAxisData.push(parseDateToStr(item['timeGroup']));
} }
} }