update:数据查询界面,对比功能优化,多个接口的前缀类型删除测试
This commit is contained in:
@@ -78,14 +78,14 @@ export const updateUserFilePermissionApi = (params: any) => {
|
||||
};
|
||||
|
||||
export const getSimulationTaskFilesApi = (params: any) => {
|
||||
return post(`${PREFIX}data/dataAnalysis/getSimulationTaskFile`, params);
|
||||
return post(`${PREFIX}dataAnalysis/getSimulationTaskFile`, params);
|
||||
};
|
||||
export const getCSVDataApi = (params: any) => {
|
||||
return get(`${PREFIX}data/dataAnalysis/getCSVData`, params);
|
||||
return get(`${PREFIX}dataAnalysis/getCSVData`, params);
|
||||
};
|
||||
// 获取文件预览地址
|
||||
export const getKKFileViewURLFromMinioApi = (params: any) => {
|
||||
return get(`${PREFIX}data/getKKFileViewURLFromMinio`, params);
|
||||
return get(`${PREFIX}getKKFileViewURLFromMinio`, params);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -141,3 +141,4 @@ export const addLibraryCategoryObjectApi = (params: any) => {
|
||||
export const deleteSimulationParameterApi = (params: any) => {
|
||||
return get(`${PREFIX}simulationParameterLibrary/deleteSimulationParameter`, params);
|
||||
};
|
||||
|
||||
|
||||
@@ -14,3 +14,12 @@ export const getPerformanceListApi = (params: any) => {
|
||||
export const getRunListApi = (params: any) => {
|
||||
return get(`${PREFIX}analysis/runList`, params);
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取任务下的算例指标信息
|
||||
* @param params taskId
|
||||
* @returns
|
||||
*/
|
||||
export const getAllRunResultByTaskIdApi = (params: any) => {
|
||||
return get(`${PREFIX}analysis/getAllRunResultByTaskId`, params);
|
||||
};
|
||||
|
||||
@@ -40,7 +40,7 @@ export const getTaskPoolPerformanceApi = (params: any) => {
|
||||
};
|
||||
|
||||
export const getTaskPerformanceApi = (params: any) => {
|
||||
return get(`${PREFIX}task/taskPerformance/getTaskPerformance`, params);
|
||||
return get(`${PREFIX}taskPerformance/getTaskPerformance`, params);
|
||||
};
|
||||
|
||||
export const getTaskPoolLoadcasesApi = (params: any) => {
|
||||
@@ -48,9 +48,9 @@ export const getTaskPoolLoadcasesApi = (params: any) => {
|
||||
};
|
||||
|
||||
export const batchAddTaskPerformanceApi = (params: any) => {
|
||||
return post(`${PREFIX}task/taskPerformance/batchAddTaskPerformance`, params);
|
||||
return post(`${PREFIX}taskPerformance/batchAddTaskPerformance`, params);
|
||||
};
|
||||
|
||||
export const batchDeleteTaskPerformanceApi = (params: any) => {
|
||||
return post(`${PREFIX}task/taskPerformance/batchDeleteTaskPerformance`, params);
|
||||
return post(`${PREFIX}taskPerformance/batchDeleteTaskPerformance`, params);
|
||||
};
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { createRouter, createWebHistory } from 'vue-router';
|
||||
import { CommonStore } from '@/stores/common';
|
||||
import EmptyLayout from '@/layouts/empty.vue';
|
||||
// import DefaultLayout from '@/layouts/default.vue';
|
||||
import CidLayout from '@/layouts/cid.vue';
|
||||
import DefaultLayout from '@/layouts/default.vue';
|
||||
// import CidLayout from '@/layouts/cid.vue';
|
||||
import routerData from '@/router/routerData';
|
||||
|
||||
const router = createRouter({
|
||||
@@ -21,7 +21,7 @@ const router = createRouter({
|
||||
},
|
||||
{
|
||||
path: '/',
|
||||
component: CidLayout,
|
||||
component: DefaultLayout,
|
||||
children: routerData,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<Dialog v-model="diaVisible" diaTitle="数据分析" width="90%" height="90%" @close="closeFun">
|
||||
<div class="content" >
|
||||
<div class="content">
|
||||
<div class="filter-analysis-content">
|
||||
<el-checkbox class="check-all" v-model="checkAll" label="全选" value="all" @change="checkAllChangeFn" />
|
||||
<el-checkbox-group class="check-all" v-model="checkAnalysisList">
|
||||
@@ -15,10 +15,11 @@
|
||||
</el-checkbox-group>
|
||||
<el-button @click="exportPdfFn">导出PDF</el-button>
|
||||
</div>
|
||||
<div class="check-table-content" id="compare-content" ref="contentToConvertRef">
|
||||
<div class="check-table-content" id="compare-content" ref="contentToConvertRef" v-loading="isLoading">
|
||||
<div class="loadcase-table-content">
|
||||
<BaseTable
|
||||
v-if="checkTableName"
|
||||
@checkbox-all="changeChceckFn"
|
||||
@checkbox-change="changeChceckFn"
|
||||
ref="checkTableRef"
|
||||
:tableName="checkTableName"
|
||||
@@ -33,43 +34,34 @@
|
||||
</div>
|
||||
<div class="analysis-type-content-item" v-if="checktableData.length">
|
||||
<template v-if="item.value === 'model'">
|
||||
<modelFileResult v-if="showComponents" :check-task-info="checktableData" :cloumn-width="cloumnWidth">
|
||||
<modelFileResult v-if="showComponents" :check-task-info="modelData" :cloumn-width="cloumnWidth">
|
||||
</modelFileResult>
|
||||
</template>
|
||||
<template v-if="item.value === 'calculationFile'">
|
||||
<calculationFileResult
|
||||
v-if="showComponents"
|
||||
:check-task-info="checktableData"
|
||||
:check-task-info="calculationFileData"
|
||||
:cloumn-width="cloumnWidth"
|
||||
></calculationFileResult>
|
||||
</template>
|
||||
<template v-if="item.value === 'numericalResult'">
|
||||
<performanceAnalysis
|
||||
v-if="showComponents"
|
||||
:check-task-info="checktableData"
|
||||
:check-task-info="performanceData"
|
||||
:cloumn-width="cloumnWidth"
|
||||
></performanceAnalysis>
|
||||
</template>
|
||||
<template v-if="item.value === 'result'">
|
||||
<cloudImage
|
||||
v-if="showComponents"
|
||||
:check-task-info="checktableData"
|
||||
:cloumn-width="cloumnWidth"
|
||||
></cloudImage>
|
||||
<cloudImage v-if="showComponents" :check-task-info="resultData" :cloumn-width="cloumnWidth">
|
||||
</cloudImage>
|
||||
</template>
|
||||
<template v-if="item.value === 'curve'">
|
||||
<curveResult
|
||||
v-if="showComponents"
|
||||
:check-task-info="checktableData"
|
||||
:cloumn-width="cloumnWidth"
|
||||
></curveResult>
|
||||
<curveResult v-if="showComponents" :check-task-info="curveData" :cloumn-width="cloumnWidth">
|
||||
</curveResult>
|
||||
</template>
|
||||
<template v-if="item.value === 'report'">
|
||||
<reportComparison
|
||||
v-if="showComponents"
|
||||
:check-task-info="checktableData"
|
||||
:cloumn-width="cloumnWidth"
|
||||
></reportComparison>
|
||||
<reportComparison v-if="showComponents" :check-task-info="reportData" :cloumn-width="cloumnWidth">
|
||||
</reportComparison>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
@@ -97,6 +89,9 @@ import reportComparison from './reportComparison.vue';
|
||||
import jsPDF from 'jspdf';
|
||||
import html2canvas from 'html2canvas';
|
||||
import moment from 'moment';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { getAllRunResultByTaskIdApi } from '@/api/project/analysis';
|
||||
import { getSimulationTaskFileApi } from '@/api/data/dataAnalysis';
|
||||
|
||||
const props = defineProps({
|
||||
analysisData: {
|
||||
@@ -112,6 +107,7 @@ const checkTableRef = ref();
|
||||
const diaVisible = ref(true);
|
||||
|
||||
const checkAnalysisList = ref<any>([]);
|
||||
const checktableData = ref<any>([]);
|
||||
|
||||
const emits = defineEmits(['close']);
|
||||
|
||||
@@ -122,22 +118,204 @@ const closeFun = () => {
|
||||
const analysisType = ref<any>('');
|
||||
const analysisTableData = ref<any>([]);
|
||||
const showComponents = ref(true);
|
||||
const changeChceckFn = (data: any) => {
|
||||
const performanceData = ref<any>([]);
|
||||
const modelData = ref<any>([]);
|
||||
const calculationFileData = ref<any>([]);
|
||||
const resultData = ref<any>([]);
|
||||
const curveData = ref<any>([]);
|
||||
const reportData = ref<any>([]);
|
||||
const isLoading = ref(false);
|
||||
const changeChceckFn = async () => {
|
||||
isLoading.value = true;
|
||||
showComponents.value = false;
|
||||
if (data.checked) {
|
||||
checktableData.value.push(data.row);
|
||||
} else {
|
||||
checktableData.value = checktableData.value.filter((item: any) => {
|
||||
return item.id != data.row.id;
|
||||
});
|
||||
checktableData.value = checkTableRef.value.tableRef.getCheckboxRecords();
|
||||
console.log(checktableData.value);
|
||||
|
||||
const fileType = analysisType.value;
|
||||
|
||||
for (let i = 0; i < checkAnalysisList.value.length; i++) {
|
||||
await getConvertData(checkAnalysisList.value[i], fileType);
|
||||
}
|
||||
isLoading.value = false;
|
||||
|
||||
setTimeout(() => {
|
||||
showComponents.value = true;
|
||||
|
||||
}, 50);
|
||||
console.log(showComponents.value, 'showComponents');
|
||||
};
|
||||
|
||||
const getConvertData = async (flag: any, type: any) => {
|
||||
let data: any = [];
|
||||
// const tasklist = [
|
||||
// {
|
||||
// id: 'simu_dc3a8eeb-9108-4058-b9a8-eb8427fb175a13657',
|
||||
// },
|
||||
// {
|
||||
// id: 'simu_a308aaba-db9e-40fd-9870-062a177f6faf78765',
|
||||
// },
|
||||
// ];
|
||||
|
||||
const tasklist = checktableData.value;
|
||||
|
||||
if (flag === 'numericalResult') {
|
||||
|
||||
if (type === '仿真工况' || type === '仿真算例') {
|
||||
if (type === '仿真工况') {
|
||||
for (let i = 0; i < tasklist.length; i++) {
|
||||
const list = (await getAllRunResultByTaskIdFn(tasklist[i].uuid))?.performances;
|
||||
data = data.concat(list);
|
||||
}
|
||||
} else {
|
||||
data = [];
|
||||
}
|
||||
|
||||
performanceData.value = data;
|
||||
} else {
|
||||
performanceData.value = checktableData.value;
|
||||
}
|
||||
|
||||
} else if (flag === 'model') {
|
||||
modelData.value = [];
|
||||
if (type === '仿真工况' || type === '仿真算例') {
|
||||
if (type === '仿真工况') {
|
||||
for (let i = 0; i < tasklist.length; i++) {
|
||||
const list = (await getAllRunResultByTaskIdFn(tasklist[i].uuid))?.runs;
|
||||
data = data.concat(list);
|
||||
}
|
||||
} else {
|
||||
data = checktableData.value;
|
||||
}
|
||||
|
||||
const runs = data || [];
|
||||
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;
|
||||
}
|
||||
|
||||
} else if (flag === 'calculationFile') {
|
||||
calculationFileData.value = [];
|
||||
if (type === '仿真工况' || type === '仿真算例') {
|
||||
if (type === '仿真工况') {
|
||||
for (let i = 0; i < tasklist.length; i++) {
|
||||
const list = (await getAllRunResultByTaskIdFn(tasklist[i].uuid))?.runs;
|
||||
data = data.concat(list);
|
||||
}
|
||||
} else {
|
||||
data = checktableData.value;
|
||||
}
|
||||
const runs = data || [];
|
||||
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;
|
||||
}
|
||||
|
||||
} else if (flag === 'result') {
|
||||
resultData.value = [];
|
||||
|
||||
if (type === '仿真工况' || type === '仿真算例') {
|
||||
if (type === '仿真工况') {
|
||||
for (let i = 0; i < tasklist.length; i++) {
|
||||
const list = (await getAllRunResultByTaskIdFn(tasklist[i].uuid))?.runs;
|
||||
data = data.concat(list);
|
||||
}
|
||||
} else {
|
||||
data = checktableData.value;
|
||||
}
|
||||
const runs = data || [];
|
||||
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;
|
||||
}
|
||||
|
||||
} else if (flag === 'curve') {
|
||||
curveData.value = [];
|
||||
if (type === '仿真工况' || type === '仿真算例') {
|
||||
if (type === '仿真工况') {
|
||||
for (let i = 0; i < tasklist.length; i++) {
|
||||
const list = (await getAllRunResultByTaskIdFn(tasklist[i].uuid))?.runs;
|
||||
data = data.concat(list);
|
||||
}
|
||||
} else {
|
||||
data = checktableData.value;
|
||||
}
|
||||
const runs = data || [];
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
} else if (flag === 'report') {
|
||||
reportData.value = [];
|
||||
if (type === '仿真工况' || type === '仿真算例') {
|
||||
|
||||
if (type === '仿真工况') {
|
||||
for (let i = 0; i < tasklist.length; i++) {
|
||||
const list = (await getAllRunResultByTaskIdFn(tasklist[i].uuid))?.runs;
|
||||
data = data.concat(list);
|
||||
}
|
||||
} else {
|
||||
data = checktableData.value;
|
||||
}
|
||||
const runs = data || [];
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return data || [];
|
||||
|
||||
};
|
||||
|
||||
const getAllRunResultByTaskIdFn = async (id: any) => {
|
||||
const param = {
|
||||
taskId: id,
|
||||
};
|
||||
try {
|
||||
const res: any = await getAllRunResultByTaskIdApi(param);
|
||||
if (res && res.code === 200) {
|
||||
|
||||
let performanceList: any = [];
|
||||
|
||||
const runs: any = [];
|
||||
|
||||
for (let i = 0; i < res.data.runResultResp.length; i++) {
|
||||
performanceList = performanceList.concat(res.data.runResultResp[i].simulationPerformance);
|
||||
|
||||
const obj: any = {
|
||||
...res.data.runResultResp[i].simulationRun,
|
||||
taskName: res.data.runResultResp[i]?.simulationPerformance[0]?.taskName,
|
||||
};
|
||||
|
||||
runs.push(obj);
|
||||
}
|
||||
|
||||
return {
|
||||
performances: performanceList,
|
||||
runs,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
const analysisTypeList = ref<any>([
|
||||
@@ -176,7 +354,34 @@ const analysisTypeList = ref<any>([
|
||||
|
||||
const checkTableName = ref<any>('');
|
||||
|
||||
const checktableData = ref<any>([]);
|
||||
const getFileInfo = async (data: any, fileType: any) => {
|
||||
const res: any = await getSimulationTaskFileApi({
|
||||
taskId: '',
|
||||
runId: data.uuid,
|
||||
fileType: fileType,
|
||||
fileName: '',
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
current: 1,
|
||||
size: 1000,
|
||||
});
|
||||
|
||||
if (res && res.code === 200) {
|
||||
const list = res.data.data.map((item: any) => {
|
||||
return {
|
||||
...item,
|
||||
runName: data.runName,
|
||||
taskName: data.taskName,
|
||||
taskId: data.taskId,
|
||||
uuid: data.uuid,
|
||||
};
|
||||
});
|
||||
|
||||
return list;
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
watch(() => props.analysisData, async (newVal) => {
|
||||
if (newVal) {
|
||||
@@ -244,7 +449,7 @@ const getTitleFn = (flag: any) => {
|
||||
|
||||
const contentToConvertRef = ref();
|
||||
const exportPdfFn = async () => {
|
||||
|
||||
ElMessage.success('文件正在导出,请稍后');
|
||||
const content = contentToConvertRef.value;
|
||||
const canvas = await html2canvas(content);
|
||||
const imgData = canvas.toDataURL('image/png');
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, defineProps, nextTick, watch } from 'vue';
|
||||
import BaseTable from '@/components/common/table/baseTable.vue';
|
||||
import { objectTypeArrayRemovesDuplicates } from '@/components/loadCaseTable/utils/funTools';
|
||||
|
||||
const props = defineProps({
|
||||
checkTaskInfo: {
|
||||
@@ -33,73 +34,94 @@ const tableData = ref<any>([
|
||||
|
||||
]);
|
||||
|
||||
const modelAttribute = ref([
|
||||
const modelAttribute = ref<any>([
|
||||
{
|
||||
name: '文件名称',
|
||||
value: 'fileName',
|
||||
value: 'originalName',
|
||||
},
|
||||
{
|
||||
name: '所属项目',
|
||||
value: 'project',
|
||||
},
|
||||
{
|
||||
name: '所属阶段',
|
||||
value: 'phase',
|
||||
}, {
|
||||
name: '所属学科',
|
||||
value: 'discipline',
|
||||
}, {
|
||||
name: '所属任务',
|
||||
value: 'task',
|
||||
value: 'taskName',
|
||||
}, {
|
||||
name: '所属算例',
|
||||
value: 'run',
|
||||
}, {
|
||||
value: 'runName',
|
||||
},
|
||||
{
|
||||
name: '文件大小',
|
||||
value: 'formatFileSize',
|
||||
},
|
||||
{
|
||||
name: '日期',
|
||||
value: 'date',
|
||||
}, {
|
||||
name: '创建人',
|
||||
value: 'creator',
|
||||
value: 'createTime',
|
||||
},
|
||||
|
||||
]);
|
||||
|
||||
const getTableColumnFn = (data:any) => {
|
||||
|
||||
console.log(data, 'data');
|
||||
|
||||
const titles = data.map((item:any) => {
|
||||
|
||||
const name = item.taskName && item.runName ? item.taskName + '_' + item.runName : item.originalName;
|
||||
const value = item.taskId && item.uuid ? item.taskId + '_' + item.uuid : item.id;
|
||||
const obj = {
|
||||
name,
|
||||
value,
|
||||
};
|
||||
return obj;
|
||||
});
|
||||
|
||||
const list:any = data || [];
|
||||
|
||||
showTableContent.value = false;
|
||||
tableData.value = [];
|
||||
tableColumns.value = [];
|
||||
|
||||
const list:any = data || [];
|
||||
const defaultColumns = [{
|
||||
title: '属性',
|
||||
key: 'attributes',
|
||||
isShow: true,
|
||||
}];
|
||||
const modelcolumns:any = [];
|
||||
let modelcolumns:any = [];
|
||||
|
||||
for (let i = 0;i < list.length;i++) {
|
||||
for (let i = 0;i < titles.length;i++) {
|
||||
|
||||
for (let j = 0;j < 2;j++) {
|
||||
for (let j = 0;j < list.length;j++) {
|
||||
const names = list[j].taskName && list[j].runName ? list[j].taskName + '_' + list[j].runName : list[j].originalName;
|
||||
|
||||
const obj:any = {
|
||||
title: `${list[i].taskName}_计算文件_${j + 1}`,
|
||||
key: `${list[i].id}_key_${j + 1}`,
|
||||
isShow: true,
|
||||
};
|
||||
|
||||
modelcolumns.push(obj);
|
||||
if (titles[i].name === names) {
|
||||
const obj:any = {
|
||||
title: titles[i].name,
|
||||
key: titles[i].value,
|
||||
isShow: true,
|
||||
};
|
||||
modelcolumns.push(obj);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
modelcolumns = objectTypeArrayRemovesDuplicates(modelcolumns, 2);
|
||||
|
||||
tableColumns.value = defaultColumns.concat(modelcolumns);
|
||||
|
||||
if (props.cloumnWidth) {
|
||||
for (let i = 0;i < tableColumns.value.length;i++) {
|
||||
tableColumns.value[i].width = props.cloumnWidth;
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0;i < modelAttribute.value.length;i++) {
|
||||
|
||||
for (let j = 0;j < list.length;j++) {
|
||||
|
||||
const values = list[j].taskId && list[j].uuid ? list[j].taskId + '_' + list[j].uuid : list[j].id;
|
||||
modelAttribute.value[i][values] = list[j][modelAttribute.value[i].value];
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (let i = 0;i < modelAttribute.value.length;i++) {
|
||||
const obj:any = {
|
||||
|
||||
@@ -107,6 +129,9 @@ const getTableColumnFn = (data:any) => {
|
||||
for (let j = 0;j < tableColumns.value.length;j++) {
|
||||
if (tableColumns.value[j].key === 'attributes') {
|
||||
obj[tableColumns.value[j].key] = modelAttribute.value[i].name;
|
||||
} else {
|
||||
obj[tableColumns.value[j].key] = modelAttribute.value[i][tableColumns.value[j].key];
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
<template>
|
||||
<div class="model-file-page">
|
||||
|
||||
<BaseTable v-if="showTableContent" ref="cloudTableRef" :head="tableColumns" :tableName="checkTableName" hidePagination></BaseTable>
|
||||
<BaseTable v-if="showTableContent" ref="cloudTableRef" :head="tableColumns" :tableName="checkTableName" hidePagination>
|
||||
|
||||
<template v-for="item in tableColumns" :key="item.key" #[item.key]="{row}">
|
||||
|
||||
<div class="img-content">
|
||||
<div class="img-item" v-for="item_2 in row[item.key]?.split('_')" :key="item_2">
|
||||
<img width="100%" :src="getImgPathFn(item_2)" alt="">
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</BaseTable>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
@@ -9,6 +19,7 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, defineProps, nextTick, watch } from 'vue';
|
||||
import BaseTable from '@/components/common/table/baseTable.vue';
|
||||
import { objectTypeArrayRemovesDuplicates } from '@/components/loadCaseTable/utils/funTools';
|
||||
|
||||
const props = defineProps({
|
||||
checkTaskInfo: {
|
||||
@@ -24,6 +35,8 @@ const props = defineProps({
|
||||
default: '',
|
||||
},
|
||||
});
|
||||
const env = import.meta.env;
|
||||
|
||||
const cloudTableRef = ref();
|
||||
const showTableContent = ref(false);
|
||||
|
||||
@@ -36,13 +49,16 @@ const tableData = ref<any>([
|
||||
]);
|
||||
|
||||
const getTableColumnFn = (data:any) => {
|
||||
|
||||
console.log(data, 'data');
|
||||
|
||||
showTableContent.value = false;
|
||||
tableData.value = [];
|
||||
tableColumns.value = [];
|
||||
const list:any = data || [];
|
||||
const defaultColumns:any = [
|
||||
{
|
||||
title: '云图名称',
|
||||
title: '云图信息',
|
||||
key: 'attributes',
|
||||
isShow: true,
|
||||
},
|
||||
@@ -51,21 +67,18 @@ const getTableColumnFn = (data:any) => {
|
||||
|
||||
for (let i = 0;i < list.length;i++) {
|
||||
|
||||
for (let j = 0;j < 2;j++) {
|
||||
const obj:any = {
|
||||
title: `${list[i].taskName}_${list[i].runName}-云图`,
|
||||
key: `${list[i].taskId}_${list[i].uuid}`,
|
||||
isShow: true,
|
||||
};
|
||||
|
||||
const obj:any = {
|
||||
title: `项目-阶段-学科-${list[i].taskName}_算例_${j + 1}-云图`,
|
||||
key: `${list[i].id}_key_${j + 1}`,
|
||||
isShow: true,
|
||||
};
|
||||
|
||||
cloudcolumns.push(obj);
|
||||
|
||||
}
|
||||
cloudcolumns.push(obj);
|
||||
|
||||
}
|
||||
|
||||
tableColumns.value = defaultColumns.concat(cloudcolumns);
|
||||
tableColumns.value = objectTypeArrayRemovesDuplicates(tableColumns.value, 2);
|
||||
|
||||
if (props.cloumnWidth) {
|
||||
for (let i = 0;i < tableColumns.value.length;i++) {
|
||||
@@ -73,6 +86,22 @@ const getTableColumnFn = (data: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;
|
||||
if (str2 === str) {
|
||||
obj[str].push(list[j].id);
|
||||
}
|
||||
}
|
||||
obj[str] = obj[str].join('_');
|
||||
if (obj[str]) {
|
||||
tableData.value.push(obj);
|
||||
}
|
||||
}
|
||||
|
||||
showTableContent.value = true;
|
||||
|
||||
nextTick(() => {
|
||||
@@ -81,6 +110,10 @@ const getTableColumnFn = (data:any) => {
|
||||
|
||||
};
|
||||
|
||||
const getImgPathFn = (id:any) => {
|
||||
return `${env.VITE_API_IMAGE_PREVIEW_URL}/data/previewImage?fileId=${id}`;
|
||||
};
|
||||
|
||||
watch(() => props.checkTaskInfo, (newVal) => {
|
||||
if (newVal) {
|
||||
getTableColumnFn(newVal);
|
||||
@@ -99,5 +132,9 @@ watch(() => props.checkTaskInfo, (newVal) => {
|
||||
.model-file-page{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
.img-content{
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
<template>
|
||||
<div class="model-file-page">
|
||||
|
||||
<BaseTable v-if="showTableContent" ref="curveResultTableRef" :head="tableColumns" :tableName="checkTableName" hidePagination></BaseTable>
|
||||
<BaseTable v-if="showTableContent" ref="curveResultTableRef" :head="tableColumns" :tableName="checkTableName" hidePagination>
|
||||
|
||||
<template v-for="item in tableColumns" :key="item.key" #[item.key]="{row}">
|
||||
|
||||
<div v-if="row[item.key]" class="img-content">
|
||||
|
||||
<div class="chart-item" :id="'curve-chart-' + row[item.key]">
|
||||
{{ row[item.key] }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
</BaseTable>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
@@ -9,6 +21,9 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, defineProps, nextTick, watch } from 'vue';
|
||||
import BaseTable from '@/components/common/table/baseTable.vue';
|
||||
import { objectTypeArrayRemovesDuplicates } from '@/components/loadCaseTable/utils/funTools';
|
||||
import { initEcharts } from '@/components/common/echartCard/echartsOptions';
|
||||
import { getCSVDataApi } from '@/api/data/data';
|
||||
|
||||
const props = defineProps({
|
||||
checkTaskInfo: {
|
||||
@@ -36,6 +51,9 @@ const tableData = ref<any>([
|
||||
]);
|
||||
|
||||
const getTableColumnFn = (data:any) => {
|
||||
|
||||
// console.log(data, 'data');
|
||||
|
||||
showTableContent.value = false;
|
||||
tableData.value = [];
|
||||
tableColumns.value = [];
|
||||
@@ -51,36 +69,123 @@ const getTableColumnFn = (data:any) => {
|
||||
|
||||
for (let i = 0;i < list.length;i++) {
|
||||
|
||||
for (let j = 0;j < 2;j++) {
|
||||
const obj:any = {
|
||||
title: `${list[i].taskName}_${list[i].runName}-曲线`,
|
||||
key: `${list[i].taskId}_${list[i].uuid}`,
|
||||
isShow: true,
|
||||
};
|
||||
|
||||
const obj:any = {
|
||||
title: `项目-阶段-学科-${list[i].taskName}_算例_${j + 1}-曲线`,
|
||||
key: `${list[i].id}_key_${j + 1}`,
|
||||
isShow: true,
|
||||
};
|
||||
|
||||
curveResultcolumns.push(obj);
|
||||
|
||||
}
|
||||
curveResultcolumns.push(obj);
|
||||
|
||||
}
|
||||
|
||||
tableColumns.value = defaultColumns.concat(curveResultcolumns);
|
||||
|
||||
tableColumns.value = objectTypeArrayRemovesDuplicates(tableColumns.value, 2);
|
||||
if (props.cloumnWidth) {
|
||||
for (let i = 0;i < tableColumns.value.length;i++) {
|
||||
tableColumns.value[i].width = props.cloumnWidth;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
if (str2 === str) {
|
||||
obj[str].push(list[j].id);
|
||||
}
|
||||
}
|
||||
obj[str] = obj[str].join(',');
|
||||
if (obj[str]) {
|
||||
tableData.value.push(obj);
|
||||
}
|
||||
}
|
||||
showTableContent.value = true;
|
||||
|
||||
nextTick(() => {
|
||||
nextTick(async () => {
|
||||
curveResultTableRef.value.setDataFun(tableData.value);
|
||||
|
||||
for (let i = 0;i < tableData.value.length;i++) {
|
||||
|
||||
for (const key in tableData.value[i]) {
|
||||
if (tableData.value[i][key]) {
|
||||
await getCSVDataFn(tableData.value[i][key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const getCSVDataFn = async (ids: any) => {
|
||||
|
||||
const res: any = await getCSVDataApi({ fileId: ids });
|
||||
if (res && res.code === 200) {
|
||||
getCsvFormatDataFn(res.data, ids);
|
||||
}
|
||||
};
|
||||
|
||||
// 获取csv数据并转换为图表数据
|
||||
const getCsvFormatDataFn = (data: any, ids: any) => {
|
||||
|
||||
const seriesData: any = [];
|
||||
|
||||
for (let i = 0; i < data.xData.length; i++) {
|
||||
const obj: any = {
|
||||
name: '曲线' + (i + 1),
|
||||
type: 'line',
|
||||
showSymbol: false,
|
||||
smooth: true,
|
||||
clip: true,
|
||||
};
|
||||
const newArr: any = [];
|
||||
for (let j = 0; j < data.xData[i].length; j++) {
|
||||
newArr.push([data.xData[i][j], data.yData[i][j]]);
|
||||
}
|
||||
obj.data = newArr;
|
||||
seriesData.push(obj);
|
||||
}
|
||||
|
||||
const options: any = {
|
||||
series: seriesData,
|
||||
legend: {
|
||||
data: '曲线',
|
||||
top: '5%',
|
||||
},
|
||||
grid: {
|
||||
top: '8%',
|
||||
bottom: '5%',
|
||||
left: '5%',
|
||||
righ: '5%',
|
||||
},
|
||||
xAxis: {
|
||||
name: 'x',
|
||||
minorTick: {
|
||||
show: true,
|
||||
},
|
||||
minorSplitLine: {
|
||||
show: true,
|
||||
},
|
||||
},
|
||||
yAxis: {
|
||||
name: 'y',
|
||||
minorTick: {
|
||||
show: true,
|
||||
},
|
||||
minorSplitLine: {
|
||||
show: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const elementId = 'curve-chart-' + ids;
|
||||
initEcharts(elementId, elementId, 'lineChart', options);
|
||||
|
||||
};
|
||||
|
||||
watch(() => props.checkTaskInfo, (newVal) => {
|
||||
if (newVal) {
|
||||
getTableColumnFn(newVal);
|
||||
@@ -99,5 +204,16 @@ watch(() => props.checkTaskInfo, (newVal) => {
|
||||
.model-file-page{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
.img-content{
|
||||
width: 100%;
|
||||
|
||||
.chart-item{
|
||||
width: 100%;
|
||||
min-width: 300px;
|
||||
min-height: 300px;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
<template>
|
||||
<div class="model-file-page">
|
||||
|
||||
<BaseTable v-if="showTableContent" ref="modelTableRef" :head="tableColumns" :tableName="checkTableName" hidePagination></BaseTable>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, defineProps, nextTick, watch } from 'vue';
|
||||
import BaseTable from '@/components/common/table/baseTable.vue';
|
||||
import { objectTypeArrayRemovesDuplicates } from '@/components/loadCaseTable/utils/funTools';
|
||||
|
||||
const props = defineProps({
|
||||
checkTaskInfo: {
|
||||
@@ -35,64 +34,69 @@ const tableData = ref<any>([
|
||||
|
||||
]);
|
||||
|
||||
const modelAttribute = ref([
|
||||
const modelAttribute = ref<any>([
|
||||
{
|
||||
name: '文件名称',
|
||||
value: 'fileName',
|
||||
value: 'originalName',
|
||||
},
|
||||
{
|
||||
name: '所属项目',
|
||||
value: 'project',
|
||||
},
|
||||
{
|
||||
name: '所属阶段',
|
||||
value: 'phase',
|
||||
}, {
|
||||
name: '所属学科',
|
||||
value: 'discipline',
|
||||
}, {
|
||||
name: '所属任务',
|
||||
value: 'task',
|
||||
value: 'taskName',
|
||||
}, {
|
||||
name: '所属算例',
|
||||
value: 'run',
|
||||
}, {
|
||||
value: 'runName',
|
||||
},
|
||||
{
|
||||
name: '文件大小',
|
||||
value: 'formatFileSize',
|
||||
},
|
||||
{
|
||||
name: '日期',
|
||||
value: 'date',
|
||||
}, {
|
||||
name: '创建人',
|
||||
value: 'creator',
|
||||
value: 'createTime',
|
||||
},
|
||||
|
||||
]);
|
||||
|
||||
const getTableColumnFn = (data:any) => {
|
||||
const titles = data.map((item:any) => {
|
||||
const name = item.taskName && item.runName ? item.taskName + '_' + item.runName : item.originalName;
|
||||
const value = item.taskId && item.uuid ? item.taskId + '_' + item.uuid : item.id;
|
||||
const obj = {
|
||||
name,
|
||||
value,
|
||||
};
|
||||
return obj;
|
||||
});
|
||||
|
||||
const list:any = data || [];
|
||||
|
||||
showTableContent.value = false;
|
||||
tableData.value = [];
|
||||
tableColumns.value = [];
|
||||
const list:any = data || [];
|
||||
const defaultColumns = [{
|
||||
title: '属性',
|
||||
key: 'attributes',
|
||||
isShow: true,
|
||||
}];
|
||||
const modelcolumns:any = [];
|
||||
let modelcolumns:any = [];
|
||||
|
||||
for (let i = 0;i < list.length;i++) {
|
||||
for (let i = 0;i < titles.length;i++) {
|
||||
|
||||
for (let j = 0;j < 2;j++) {
|
||||
|
||||
const obj:any = {
|
||||
title: `${list[i].taskName}_模型文件_${j + 1}`,
|
||||
key: `${list[i].id}_key_${j + 1}`,
|
||||
isShow: true,
|
||||
};
|
||||
|
||||
modelcolumns.push(obj);
|
||||
for (let j = 0;j < list.length;j++) {
|
||||
const names = list[j].taskName && list[j].runName ? list[j].taskName + '_' + list[j].runName : list[j].originalName;
|
||||
if (titles[i].name === names) {
|
||||
const obj:any = {
|
||||
title: titles[i].name,
|
||||
key: titles[i].value,
|
||||
isShow: true,
|
||||
};
|
||||
modelcolumns.push(obj);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
modelcolumns = objectTypeArrayRemovesDuplicates(modelcolumns, 2);
|
||||
|
||||
tableColumns.value = defaultColumns.concat(modelcolumns);
|
||||
|
||||
@@ -102,6 +106,15 @@ const getTableColumnFn = (data:any) => {
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0;i < modelAttribute.value.length;i++) {
|
||||
for (let j = 0;j < list.length;j++) {
|
||||
const values = list[j].taskId && list[j].uuid ? list[j].taskId + '_' + list[j].uuid : list[j].id;
|
||||
modelAttribute.value[i][values] = list[j][modelAttribute.value[i].value];
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (let i = 0;i < modelAttribute.value.length;i++) {
|
||||
const obj:any = {
|
||||
|
||||
@@ -109,6 +122,9 @@ const getTableColumnFn = (data:any) => {
|
||||
for (let j = 0;j < tableColumns.value.length;j++) {
|
||||
if (tableColumns.value[j].key === 'attributes') {
|
||||
obj[tableColumns.value[j].key] = modelAttribute.value[i].name;
|
||||
} else {
|
||||
obj[tableColumns.value[j].key] = modelAttribute.value[i][tableColumns.value[j].key];
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,26 +40,21 @@ const tableColumns = ref<any>([
|
||||
]);
|
||||
|
||||
const modelAttribute = ref<any>([
|
||||
{
|
||||
name: '仿真指标1( > 20mm)',
|
||||
},
|
||||
{
|
||||
name: '仿真指标2( > 5m/s)',
|
||||
},
|
||||
{
|
||||
name: '仿真指标3( < 43 ℃)',
|
||||
},
|
||||
|
||||
]);
|
||||
|
||||
const getTableColumnsFn = (data:any) => {
|
||||
|
||||
const performanceDatas = data || [];
|
||||
const taskNames = Array.from(new Set(performanceDatas?.map((item:any) => {
|
||||
return item.taskName;
|
||||
}))) ;
|
||||
|
||||
const names = performanceDatas?.map((item:any) => {
|
||||
return item.taskName ;
|
||||
});
|
||||
|
||||
const taskNames = Array.from(new Set( names)) ;
|
||||
modelAttribute.value = performanceDatas.map((item:any) => {
|
||||
const obj:any = {
|
||||
name: `${item.performanceName} (${item.method} ${item.targetValue} ${item.unit})`,
|
||||
name: `${item.nodeName} (${item.method} ${item.targetValue} ${item.unit})`,
|
||||
value: item.nodeId,
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
<template>
|
||||
<div class="model-file-page">
|
||||
|
||||
<BaseTable v-if="showTableContent" ref="reportComparisonTableRef" :head="tableColumns" :tableName="checkTableName" hidePagination></BaseTable>
|
||||
<BaseTable v-if="showTableContent" ref="reportComparisonTableRef" :head="tableColumns" :tableName="checkTableName" hidePagination>
|
||||
<template v-for="item in tableColumns" :key="item.key" #[item.key]="{row}">
|
||||
<div v-if="row[item.key]" class="img-content" @click="reviewFileFn(row[item.key])">
|
||||
<el-icon ><Document /></el-icon> <span class="report-style">{{ getFileNameFn(row[item.key]) }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</BaseTable>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
@@ -9,6 +15,7 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, defineProps, nextTick, watch } from 'vue';
|
||||
import BaseTable from '@/components/common/table/baseTable.vue';
|
||||
import { objectTypeArrayRemovesDuplicates } from '@/components/loadCaseTable/utils/funTools';
|
||||
|
||||
const props = defineProps({
|
||||
checkTaskInfo: {
|
||||
@@ -35,7 +42,19 @@ const tableData = ref<any>([
|
||||
|
||||
]);
|
||||
|
||||
const inputDatas = ref<any>([]);
|
||||
|
||||
const getFileNameFn = (ids:any) => {
|
||||
const file = inputDatas.value.find((item:any) => {
|
||||
return item.id === Number(ids) ;
|
||||
}) || '';
|
||||
|
||||
return file.originalName || '';
|
||||
};
|
||||
|
||||
const getTableColumnFn = (data:any) => {
|
||||
// console.log(data, 'data');
|
||||
|
||||
showTableContent.value = false;
|
||||
tableData.value = [];
|
||||
tableColumns.value = [];
|
||||
@@ -50,29 +69,42 @@ const getTableColumnFn = (data:any) => {
|
||||
const reportComparisoncolumns:any = [];
|
||||
|
||||
for (let i = 0;i < list.length;i++) {
|
||||
const names = list[i].taskName && list[i].runName ? list[i].taskName + '_' + list[i].runName : list[i].originalName;
|
||||
|
||||
for (let j = 0;j < 2;j++) {
|
||||
const obj:any = {
|
||||
title: `${names}-报告`,
|
||||
key: `${list[i].taskId}_${list[i].uuid}`,
|
||||
isShow: true,
|
||||
};
|
||||
|
||||
const obj:any = {
|
||||
title: `项目-阶段-学科-${list[i].taskName}_算例_${j + 1}-报告`,
|
||||
key: `${list[i].id}_key_${j + 1}`,
|
||||
isShow: true,
|
||||
};
|
||||
|
||||
reportComparisoncolumns.push(obj);
|
||||
|
||||
}
|
||||
reportComparisoncolumns.push(obj);
|
||||
|
||||
}
|
||||
|
||||
tableColumns.value = defaultColumns.concat(reportComparisoncolumns);
|
||||
|
||||
tableColumns.value = objectTypeArrayRemovesDuplicates(tableColumns.value, 2);
|
||||
if (props.cloumnWidth) {
|
||||
for (let i = 0;i < tableColumns.value.length;i++) {
|
||||
tableColumns.value[i].width = props.cloumnWidth;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
if (str2 === str) {
|
||||
obj[str].push(list[j].id);
|
||||
}
|
||||
}
|
||||
obj[str] = obj[str].join('_');
|
||||
if (obj[str]) {
|
||||
tableData.value.push(obj);
|
||||
}
|
||||
}
|
||||
|
||||
showTableContent.value = true;
|
||||
|
||||
nextTick(() => {
|
||||
@@ -83,6 +115,8 @@ const getTableColumnFn = (data:any) => {
|
||||
|
||||
watch(() => props.checkTaskInfo, (newVal) => {
|
||||
if (newVal) {
|
||||
inputDatas.value = newVal;
|
||||
|
||||
getTableColumnFn(newVal);
|
||||
|
||||
}
|
||||
@@ -92,6 +126,11 @@ watch(() => props.checkTaskInfo, (newVal) => {
|
||||
deep: true,
|
||||
});
|
||||
|
||||
const reviewFileFn = (ids:any) => {
|
||||
console.log(ids, 'ids');
|
||||
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@@ -99,5 +138,19 @@ watch(() => props.checkTaskInfo, (newVal) => {
|
||||
.model-file-page{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
.img-content{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #409eff;
|
||||
|
||||
.report-style{
|
||||
margin-left: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -514,12 +514,17 @@ const diaVisible = ref<boolean>(false);
|
||||
const closeFun = () => {
|
||||
diaVisible.value = false;
|
||||
};
|
||||
const displayCompareFun = () => {
|
||||
const displayCompareFun = (flag:any) => {
|
||||
if (!compareList.value.length) {
|
||||
ElMessage.warning('请先加入对比池');
|
||||
return;
|
||||
}
|
||||
diaVisible.value = true;
|
||||
if (flag === '结果曲线') {
|
||||
diaVisible.value = true;
|
||||
} else {
|
||||
diaPngVisible.value = true;
|
||||
|
||||
}
|
||||
};
|
||||
const columnData = ref<number>(1);
|
||||
const renderFun = (data: any, render: (cbData: any) => void) => {
|
||||
@@ -707,14 +712,14 @@ const compareFn = (flag:any) => {
|
||||
|
||||
}
|
||||
if (flag === '结果曲线') {
|
||||
openDataAnalysisFn( flag, 'RESULT_CURVE');
|
||||
// openDataAnalysisFn( flag, 'RESULT_CURVE');
|
||||
|
||||
// displayCompareFun();
|
||||
displayCompareFun('结果曲线');
|
||||
}
|
||||
if (flag === '结果云图') {
|
||||
openDataAnalysisFn( flag, 'RESULT_PNG');
|
||||
// openDataAnalysisFn( flag, 'RESULT_PNG');
|
||||
|
||||
// displayComparePngFun();
|
||||
displayCompareFun('结果云图');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user