2025-10-30 19:30:06 +08:00
|
|
|
<template>
|
|
|
|
|
<div class="task-performance-page">
|
|
|
|
|
<div class="operate-form">
|
|
|
|
|
<el-form :model="filterForm">
|
2026-01-04 16:17:06 +08:00
|
|
|
<!-- <el-form-item label="算例:">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="filterForm.exampleName"
|
|
|
|
|
class="select-style"
|
|
|
|
|
@change="changeImgTaskOrRunFun"
|
|
|
|
|
>
|
2025-12-16 16:09:20 +08:00
|
|
|
<el-option
|
|
|
|
|
v-for="item in exampleList"
|
|
|
|
|
:label="item.name"
|
|
|
|
|
:value="item.id"
|
|
|
|
|
:key="item.id"
|
|
|
|
|
></el-option>
|
2025-10-30 19:30:06 +08:00
|
|
|
</el-select>
|
2026-01-04 16:17:06 +08:00
|
|
|
</el-form-item> -->
|
2025-10-30 19:30:06 +08:00
|
|
|
<el-form-item label="列数:">
|
2025-12-16 16:09:20 +08:00
|
|
|
<el-input-number
|
|
|
|
|
v-model="filterForm.lineNum"
|
|
|
|
|
:min="1"
|
|
|
|
|
:max="5"
|
|
|
|
|
@change="handleChangeLineFun"
|
|
|
|
|
/>
|
2025-10-30 19:30:06 +08:00
|
|
|
</el-form-item>
|
2026-01-04 16:17:06 +08:00
|
|
|
<el-form-item>
|
|
|
|
|
<el-button>上传文件</el-button>
|
|
|
|
|
<el-button type="primary">下载文件</el-button>
|
|
|
|
|
</el-form-item>
|
2025-10-30 19:30:06 +08:00
|
|
|
</el-form>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="task-img-box">
|
|
|
|
|
<div
|
|
|
|
|
class="img-item"
|
|
|
|
|
:style="{ width: `calc((100% / ${filterForm.lineNum}) - 20px)` }"
|
|
|
|
|
v-for="item in exampleImglist"
|
|
|
|
|
:key="item.id"
|
|
|
|
|
>
|
2025-12-16 16:09:20 +08:00
|
|
|
<img class="task-img" :src="item.url" alt="" />
|
2025-10-30 19:30:06 +08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
2026-01-04 16:17:06 +08:00
|
|
|
import { ref, reactive, onMounted, watch } from 'vue';
|
2025-10-30 19:30:06 +08:00
|
|
|
import { getSimulationTaskFilesApi } from '@/api/data/data';
|
2026-01-04 16:17:06 +08:00
|
|
|
import { queryTaskRunApi } from '@/api/project/run';
|
|
|
|
|
import { NODE_TYPE } from '@/utils/enum/node';
|
|
|
|
|
import { FILE_TYPE } from '@/utils/enum/file';
|
2025-10-30 19:30:06 +08:00
|
|
|
|
|
|
|
|
const props = defineProps(['taskId']);
|
|
|
|
|
const env = import.meta.env;
|
|
|
|
|
|
|
|
|
|
const filterForm = reactive<any>({
|
|
|
|
|
exampleName: props.taskId,
|
|
|
|
|
lineNum: 2,
|
|
|
|
|
});
|
|
|
|
|
|
2026-01-04 16:17:06 +08:00
|
|
|
const exampleList = ref<any>([]);
|
2025-10-30 19:30:06 +08:00
|
|
|
|
2025-12-16 16:09:20 +08:00
|
|
|
const exampleImglist = ref<any>([]);
|
2025-10-30 19:30:06 +08:00
|
|
|
|
2025-11-26 18:49:29 +08:00
|
|
|
const handleChangeLineFun = () => {
|
2025-10-30 19:30:06 +08:00
|
|
|
// ElMessage.success('选择列数' + filterForm.lineNum);
|
|
|
|
|
};
|
|
|
|
|
|
2025-11-26 18:49:29 +08:00
|
|
|
const getTaskResultImageDataFun = async () => {
|
2025-10-30 19:30:06 +08:00
|
|
|
const res: any = await getSimulationTaskFilesApi({
|
2025-12-02 18:59:11 +08:00
|
|
|
uuid: props.taskId,
|
2026-01-04 16:17:06 +08:00
|
|
|
fileBizType: FILE_TYPE.PNG_FILE,
|
2025-10-30 19:30:06 +08:00
|
|
|
fileName: '',
|
|
|
|
|
startTime: '',
|
|
|
|
|
endTime: '',
|
|
|
|
|
current: 1,
|
|
|
|
|
size: 1000,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (res && res.code === 200) {
|
2025-11-25 17:37:02 +08:00
|
|
|
exampleImglist.value = res.data?.data?.map((item: any) => {
|
2025-10-30 19:30:06 +08:00
|
|
|
return {
|
|
|
|
|
...item,
|
|
|
|
|
url: `${env.VITE_API_IMAGE_PREVIEW_URL}/data/previewImage?fileId=${item.id}`,
|
|
|
|
|
};
|
|
|
|
|
});
|
2025-12-16 16:09:20 +08:00
|
|
|
|
|
|
|
|
exampleImglist.value = exampleImglist.value.filter((item: any) => {
|
|
|
|
|
return item.originalName.endsWith('.png') || item.originalName.endsWith('.jpg');
|
|
|
|
|
});
|
2025-10-30 19:30:06 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ElMessage.success('获取任务结果图片数据' + props.taskId);
|
|
|
|
|
};
|
|
|
|
|
|
2026-01-04 16:17:06 +08:00
|
|
|
const changeImgTaskOrRunFun = async () => {
|
|
|
|
|
if (filterForm.exampleName === props.taskId) {
|
|
|
|
|
await getTaskResultImageDataFun();
|
|
|
|
|
} else {
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const queryTaskRunFun = async (id: any) => {
|
|
|
|
|
const res: any = await queryTaskRunApi({ taskId: id });
|
|
|
|
|
if (res && res.code === 200) {
|
|
|
|
|
const list = res.data.map((item: any) => {
|
|
|
|
|
return {
|
|
|
|
|
...item,
|
|
|
|
|
name: item.runName,
|
|
|
|
|
type: NODE_TYPE.RUN,
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
return list;
|
|
|
|
|
} else {
|
|
|
|
|
return [];
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
watch(
|
|
|
|
|
() => props.taskId,
|
|
|
|
|
async (newVal) => {
|
|
|
|
|
const task = [
|
|
|
|
|
{
|
|
|
|
|
name: '当前任务',
|
|
|
|
|
id: newVal,
|
|
|
|
|
uuid: newVal,
|
|
|
|
|
type: NODE_TYPE.TASK,
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const runList = await queryTaskRunFun(newVal);
|
|
|
|
|
exampleList.value = task.concat(runList);
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
immediate: true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
2025-10-30 19:30:06 +08:00
|
|
|
onMounted(() => {
|
2025-11-26 18:49:29 +08:00
|
|
|
getTaskResultImageDataFun();
|
2025-10-30 19:30:06 +08:00
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.task-performance-page {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
// height: 450px;
|
|
|
|
|
|
|
|
|
|
.operate-form {
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
2025-11-28 11:25:35 +08:00
|
|
|
justify-content: flex-end;
|
2025-10-30 19:30:06 +08:00
|
|
|
|
|
|
|
|
.el-form {
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
|
|
.el-form-item {
|
|
|
|
|
margin-right: 20px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.select-style {
|
|
|
|
|
min-width: 180px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.task-img-box {
|
|
|
|
|
width: 100%;
|
2025-11-28 11:25:35 +08:00
|
|
|
height: calc(100% - 60px);
|
2025-10-30 19:30:06 +08:00
|
|
|
margin-top: 10px;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
overflow-y: auto;
|
|
|
|
|
|
|
|
|
|
.img-item {
|
|
|
|
|
margin-right: 10px;
|
|
|
|
|
margin-bottom: 10px;
|
2025-12-02 19:31:45 +08:00
|
|
|
min-height: 100px;
|
2025-10-30 19:30:06 +08:00
|
|
|
|
|
|
|
|
.task-img {
|
|
|
|
|
width: 100%;
|
|
|
|
|
border: 1px solid #ddd;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|