Files
SPDM/src/components/taskDetail/resultImage.vue

191 lines
4.1 KiB
Vue
Raw Normal View History

2025-10-30 19:30:06 +08:00
<template>
<div class="task-performance-page">
<div class="operate-form">
<el-form :model="filterForm">
<!-- <el-form-item label="算例:">
<el-select
v-model="filterForm.exampleName"
class="select-style"
@change="changeImgTaskOrRunFun"
>
<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>
</el-form-item> -->
2025-10-30 19:30:06 +08:00
<el-form-item label="列数:">
<el-input-number
v-model="filterForm.lineNum"
:min="1"
:max="5"
@change="handleChangeLineFun"
/>
2025-10-30 19:30:06 +08:00
</el-form-item>
<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"
>
<img class="task-img" :src="item.url" alt="" />
2025-10-30 19:30:06 +08:00
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, reactive, onMounted, watch } from 'vue';
2025-10-30 19:30:06 +08:00
import { getSimulationTaskFilesApi } from '@/api/data/data';
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,
});
const exampleList = ref<any>([]);
2025-10-30 19:30:06 +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({
uuid: props.taskId,
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) {
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}`,
};
});
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);
};
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>