fix:数据查询界面,对比功能相关bug修复

This commit is contained in:
2025-11-28 17:32:29 +08:00
parent 367c0b75c7
commit ce8b40791b
6 changed files with 221 additions and 97 deletions

View File

@@ -0,0 +1,14 @@
import { get, post, upload, download } from '@/api/request';
const env = import.meta.env;
const PREFIX = env.VITE_API_PREFIX_TASK;
/**
*导出指标文件
* @param params
* @returns
*/
export const exportPerformanceApi = (params: any, fileName: any) => {
return download(`${PREFIX}taskPerformance/exportPerformance`, params, fileName);
};

View File

@@ -1,6 +1,15 @@
<template>
<div class="task-performance-page">
<BaseTable tableName="TASK_PERFORMANCE" ref="baseTableRef" showCheckbox hidePagination :actionList="actionList">
<BaseTable
tableName="PERFORMANCE_POOL"
ref="baseTableRef"
:export-file-name="'指标列表'"
:export-api="exportPerformanceApi"
showCheckbox
hidePagination
:actionList="actionList"
:export-params="excelParams"
>
<template #leftOptions>
<div class="operate-box">
<el-upload
@@ -14,7 +23,7 @@
>
<el-button icon="">导入Excel</el-button>
</el-upload>
<el-button icon="" @click="exportFileFun">导出Excel</el-button>
<!-- <el-button icon="" @click="exportFileFun">导出Excel</el-button> -->
<el-button type="primary" @click="openAddPerformanceWindFun">新增</el-button>
<el-button v-if="showSaveButton" type="primary" @click="saveFun">保存</el-button>
</div>
@@ -43,10 +52,12 @@
import { ref, onMounted } from 'vue';
import BaseTable from '@/components/common/table/baseTable.vue';
import { ElMessage } from 'element-plus';
import { getTaskPerformanceApi, batchAddTaskPerformanceApi, batchDeleteTaskPerformanceApi, getRunPerformanceApi } from '@/api/task/taskpool';
import { getTaskPerformanceApi, batchAddTaskPerformanceApi, batchDeleteTaskPerformanceApi, getRunPerformanceApi, exportTaskPoolPerformanceApi } from '@/api/task/taskpool';
import { cloneDeep } from 'lodash-es';
import { FileUtil } from '@/utils/file';
import addTaskPerformance from './addTaskPerformance.vue';
import { exportPerformanceApi } from '@/api/task/taskPerformance';
import { getFormConfigureApi } from '@/api/system/systemData';
const props = defineProps({
taskId: {
@@ -55,11 +66,11 @@ const props = defineProps({
},
runInfo: {
type: Object,
default: () => {},
default: () => { },
},
taskInfo: {
type: Object,
default: () => {},
default: () => { },
},
showSaveButton: {
type: Boolean,
@@ -77,7 +88,7 @@ const performanceData = ref<any>([]);
const getTaskPerformanceDataFun = async () => {
console.log(props.taskId);
console.log(props.runInfo);
const res: any = props.paramType === 'task' ? await getTaskPerformanceApi({ taskId: props.taskInfo?.id }) : await getRunPerformanceApi({ runId: props.runInfo?.uuid }) ;
const res: any = props.paramType === 'task' ? await getTaskPerformanceApi({ taskId: props.taskInfo?.id }) : await getRunPerformanceApi({ runId: props.runInfo?.uuid });
if (res && res.code === 200) {
performanceData.value = res.data;
@@ -140,7 +151,7 @@ const batchAddTaskPerformanceFun = async () => {
const performanceList: any = [];
for (let i = 0; i < list.length; i++) {
const obj :any = {
const obj: any = {
uuid: '',
nodeId: '',
performanceName: list[i].performanceName,
@@ -181,7 +192,7 @@ const batchAddTaskPerformanceFun = async () => {
return;
}
const param:any = {
const param: any = {
performanceList: performanceList,
};
@@ -393,45 +404,33 @@ const arraysConvertedToObjects = (arr: any) => {
return newArr;
};
// 导出excel
const exportFileFun = () => {
const statusList = [
{
label: '不合格',
label2: '不合格',
value: 1,
},
{
label: '风险可控',
label2: '风险可控',
value: 2,
},
{
label: '未分析',
label2: '未评估',
value: 3,
},
{
label: '合格',
label2: '合格',
value: 4,
},
];
const newData = cloneDeep(baseTableRef.value.tableRef.getTableData().visibleData);
console.log(1111111111111);
newData.forEach((item: any) => {
item.status = statusList.find((item_2: any) => {
return item_2.value === item.status;
})?.label;
item.risk =
statusList.find((item_2: any) => {
return item_2.value === item.risk;
})?.label2 || '未评估';
const excelHeaders = ref<any>({});
const excelParams = ref<any>({});
const getFormConfigureFun = async () => {
const res:any = await getFormConfigureApi({
formName: 'PERFORMANCE_POOL',
});
FileUtil.exportExcel(newData, '指标', performanceInfoList);
if (res && res.code === 200) {
const cloumn:any = JSON.parse(res.data.formConfig) || [];
excelHeaders.value = cloumn.map((item:any) => {
return {
key: item.key,
title: item.title,
};
});
if (props.paramType === 'run') {
excelParams.value = {
runId: props.runInfo.uuid,
};
} else {
excelParams.value = {
taskId: props.taskInfo.id,
};
}
}
};
defineExpose({
@@ -445,7 +444,7 @@ const actionList = ref([
type: 'danger',
needConfirm: true,
confirmTip: '确认删除吗?',
click: (row:any) => {
click: (row: any) => {
delPerformance(row);
},
},
@@ -453,6 +452,8 @@ const actionList = ref([
onMounted(async () => {
await getTaskPerformanceDataFun();
await getFormConfigureFun();
});
</script>

View File

@@ -92,6 +92,7 @@ import dayjs from 'dayjs';
import { ElMessage } from 'element-plus';
import { getAllRunResultByTaskIdApi } from '@/api/project/analysis';
import { getSimulationTaskFileApi } from '@/api/data/dataAnalysis';
import { getRunPerformanceApi } from '@/api/task/taskpool';
const props = defineProps({
analysisData: {
@@ -165,7 +166,12 @@ const getConvertData = async (flag: any, type: any) => {
data = data.concat(list);
}
} else {
data = [];
for (let i = 0; i < tasklist.length; i++) {
const list = (await getRunPerformanceFn(tasklist[i]));
data = data.concat(list);
}
}
performanceData.value = data;
@@ -186,10 +192,15 @@ const getConvertData = async (flag: any, type: any) => {
}
const runs = data || [];
console.log(runs, 'runsruns');
if (runs.length) {
for (let i = 0; i < runs.length; i++) {
const datas = await getFileInfo(runs[i], 1);
modelData.value = modelData.value.concat(datas);
}
}
} else {
modelData.value = checktableData.value;
}
@@ -206,10 +217,13 @@ const getConvertData = async (flag: any, type: any) => {
data = checktableData.value;
}
const runs = data || [];
if (runs.length) {
for (let i = 0; i < runs.length; i++) {
const datas = await getFileInfo(runs[i], 3);
calculationFileData.value = calculationFileData.value.concat(datas);
}
}
} else {
calculationFileData.value = checktableData.value;
}
@@ -227,10 +241,13 @@ const getConvertData = async (flag: any, type: any) => {
data = checktableData.value;
}
const runs = data || [];
if (runs.length) {
for (let i = 0; i < runs.length; i++) {
const datas = await getFileInfo(runs[i], 5);
resultData.value = resultData.value.concat(datas);
}
}
} else {
resultData.value = checktableData.value;
}
@@ -247,10 +264,13 @@ const getConvertData = async (flag: any, type: any) => {
data = checktableData.value;
}
const runs = data || [];
if (runs.length) {
for (let i = 0; i < runs.length; i++) {
const datas = await getFileInfo(runs[i], 4);
curveData.value = curveData.value.concat(datas);
}
}
} else {
curveData.value = checktableData.value;
@@ -269,10 +289,13 @@ const getConvertData = async (flag: any, type: any) => {
data = checktableData.value;
}
const runs = data || [];
if (runs.length) {
for (let i = 0; i < runs.length; i++) {
const datas = await getFileInfo(runs[i], 2);
reportData.value = reportData.value.concat(datas);
}
}
} else {
reportData.value = checktableData.value;
@@ -295,8 +318,8 @@ const getAllRunResultByTaskIdFun = async (id: any) => {
let performanceList: any = [];
const runs: any = [];
for (let i = 0; i < res.data.runResultResp.length; i++) {
if (res.data?.runResultResp?.length) {
for (let i = 0; i < res.data?.runResultResp.length; i++) {
performanceList = performanceList.concat(res.data.runResultResp[i].simulationPerformance);
const obj: any = {
@@ -306,6 +329,7 @@ const getAllRunResultByTaskIdFun = async (id: any) => {
runs.push(obj);
}
}
return {
performances: performanceList,
@@ -355,6 +379,9 @@ const analysisTypeList = ref<any>([
const checkTableName = ref<any>('');
const getFileInfo = async (data: any, fileType: any) => {
console.log(data, 'datadatadata');
const res: any = await getSimulationTaskFileApi({
taskId: '',
runId: data.uuid,
@@ -367,7 +394,9 @@ const getFileInfo = async (data: any, fileType: any) => {
});
if (res && res.code === 200) {
const list = res.data.data.map((item: any) => {
let list = [];
if (res?.data?.data?.length) {
list = res.data.data.map((item: any) => {
return {
...item,
runName: data.runName,
@@ -376,6 +405,7 @@ const getFileInfo = async (data: any, fileType: any) => {
uuid: data.uuid,
};
});
}
return list;
} else {
@@ -383,6 +413,18 @@ const getFileInfo = async (data: any, fileType: any) => {
}
};
const getRunPerformanceFn = async (data:any) => {
const res:any = await getRunPerformanceApi({
runId: data.uuid,
});
if (res && res.code === 200) {
const list = res.data;
return list;
}
};
watch(() => props.analysisData, async (newVal) => {
if (newVal) {
analysisType.value = newVal.flag;

View File

@@ -1,7 +1,16 @@
<template>
<div class="model-file-page">
<BaseTable v-if="showTableContent" ref="cloudTableRef" :head="tableColumns" :tableName="checkTableName" hidePagination>
<BaseTable
v-if="showTableContent"
:row-config="{
height:400
}"
ref="cloudTableRef"
:head="tableColumns"
:tableName="checkTableName"
hidePagination
>
<template v-for="item in tableColumns" :key="item.key" #[item.key]="{row}">
@@ -68,8 +77,8 @@ const getTableColumnFun = (data:any) => {
for (let i = 0;i < list.length;i++) {
const obj:any = {
title: `${list[i].taskName}_${list[i].runName}-云图`,
key: `${list[i].taskId}_${list[i].uuid}`,
title: `${list[i].runName}-${list[i].originalName}`,
key: `${list[i].taskId}_${list[i].uuid}_${list[i].id}`,
isShow: true,
};
@@ -85,26 +94,38 @@ const getTableColumnFun = (data:any) => {
tableColumns.value[i].width = props.cloumnWidth;
}
}
const listData:any = [];
for (let i = 0;i < tableColumns.value.length;i++) {
const obj:any = {};
const str = tableColumns.value[i].key;
obj[str] = [];
for (let j = 0;j < list.length;j++) {
const str2 = list[j].taskId + '_' + list[j].uuid;
const str2 = list[j].taskId + '_' + list[j].uuid + '_' + list[j].id;
if (str2 === str) {
obj[str].push(list[j].id);
}
}
obj[str] = obj[str].join('_');
if (obj[str]) {
tableData.value.push(obj);
listData.push(obj);
}
}
const pngObj:any = {};
for (let i = 0;i < listData.length;i++) {
for (const key in listData[i]) {
pngObj[key] = listData[i][key];
}
}
showTableContent.value = true;
tableData.value.push(pngObj);
nextTick(() => {
console.log(tableData.value, 'tableData.value');
cloudTableRef.value.setDataFun(tableData.value);
});

View File

@@ -1,7 +1,16 @@
<template>
<div class="model-file-page">
<BaseTable v-if="showTableContent" ref="curveResultTableRef" :head="tableColumns" :tableName="checkTableName" hidePagination>
<BaseTable
v-if="showTableContent"
:row-config="{
height:400
}"
ref="curveResultTableRef"
:head="tableColumns"
:tableName="checkTableName"
hidePagination
>
<template v-for="item in tableColumns" :key="item.key" #[item.key]="{row}">
@@ -70,8 +79,8 @@ const getTableColumnFun = (data:any) => {
for (let i = 0;i < list.length;i++) {
const obj:any = {
title: `${list[i].taskName}_${list[i].runName}-曲线`,
key: `${list[i].taskId}_${list[i].uuid}`,
title: `${list[i].runName}-${list[i].originalName}`,
key: `${list[i].taskId}_${list[i].uuid}_${list[i].id}`,
isShow: true,
};
@@ -86,31 +95,44 @@ const getTableColumnFun = (data:any) => {
tableColumns.value[i].width = props.cloumnWidth;
}
}
const listData:any = [];
for (let i = 0;i < tableColumns.value.length;i++) {
const obj:any = {};
const str = tableColumns.value[i].key;
obj[str] = [];
for (let j = 0;j < list.length;j++) {
const str2 = list[j].taskId + '_' + list[j].uuid;
const str2 = list[j].taskId + '_' + list[j].uuid + '_' + list[j].id;
if (str2 === str) {
obj[str].push(list[j].id);
}
}
obj[str] = obj[str].join(',');
if (obj[str]) {
tableData.value.push(obj);
listData.push(obj);
}
}
const pngObj:any = {};
for (let i = 0;i < listData.length;i++) {
for (const key in listData[i]) {
pngObj[key] = listData[i][key];
}
}
tableData.value.push(pngObj);
showTableContent.value = true;
nextTick(async () => {
curveResultTableRef.value.setDataFun(tableData.value);
console.log(tableData.value, 'tableData.valuetableData.value');
for (let i = 0;i < tableData.value.length;i++) {
for (const key in tableData.value[i]) {
if (tableData.value[i][key]) {
if (tableData.value[i][key] && !key.includes('row_')) {
await getCSVDataFun(tableData.value[i][key]);
}
}
@@ -122,6 +144,9 @@ const getTableColumnFun = (data:any) => {
const getCSVDataFun = async (ids: any) => {
if (ids.includes('row_')) {
return;
}
const res: any = await getCSVDataApi({ fileId: ids });
if (res && res.code === 200) {
getCsvFormatDataFun(res.data, ids);

View File

@@ -230,17 +230,18 @@
:width="'90%'"
:height="'90%'"
:confirm-closable="false"
:zIndex="3000"
:zIndex="100"
>
<div class="compare-container">
<div class="compare-container-left">
<!-- :render="renderFun" -->
<BaseTable
ref="tableCompareRef"
tableName="COMPARE_CURVE"
showIndex
showCheckbox
hidePagination
:render="renderFun"
@checkbox-change="checkBoxChangeFun"
@checkbox-all="checkBoxChangeFun"
@searchChange="searchChangeFun"
@@ -263,6 +264,7 @@
<div
class="chart-container"
:style="{
display:'grid',
gridTemplateColumns: `repeat(${columnData} ,${100 / columnData}%)`
}"
@@ -291,17 +293,18 @@
:width="'90%'"
:height="'90%'"
:confirm-closable="false"
:zIndex="3000"
:zIndex="100"
>
<div class="compare-container">
<div class="compare-container-left">
<!-- :render="renderPngFun" -->
<BaseTable
ref="tableComparePngRef"
tableName="COMPARE_PNG"
showIndex
showCheckbox
hidePagination
:render="renderPngFun"
@checkbox-change="checkBoxPngChangeFun"
>
<template #leftOptions>
@@ -319,6 +322,7 @@
<div
class="chart-container"
:style="{
display:'grid',
gridTemplateColumns: `repeat(${columnPngData} ,${100 / columnPngData}%)`
}"
>
@@ -347,7 +351,7 @@
:width="'50%'"
:height="'50%'"
:confirm-closable="false"
:zIndex="3000"
:zIndex="101"
@close="closeCompareListFun"
>
<div class="compare-content">
@@ -522,11 +526,28 @@ const displayCompareFun = (flag:any) => {
ElMessage.warning('请先加入对比池');
return;
}
const data = compareList.value.map((item:any) => {
return {
...item,
name: item.originalName,
imageNumber: 1,
};
});
if (flag === '结果曲线') {
diaVisible.value = true;
nextTick(() => {
tableCompareRef.value.setDataFun(data);
});
} else {
diaPngVisible.value = true;
nextTick(() => {
tableComparePngRef.value.setDataFun(data);
});
}
};
const columnData = ref<number>(1);