update code
parent
d80cc2b84a
commit
682cf2a917
|
@ -47,6 +47,19 @@ class MenuAPI {
|
||||||
alwaysShow: false,
|
alwaysShow: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "editModel",
|
||||||
|
component: "model/editModel",
|
||||||
|
name: "editModel",
|
||||||
|
meta: {
|
||||||
|
title: "更新模型",
|
||||||
|
icon: "user",
|
||||||
|
hidden: true,
|
||||||
|
roles: ["ADMIN", "GUEST"],
|
||||||
|
keepAlive: true,
|
||||||
|
alwaysShow: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "modelDetail",
|
path: "modelDetail",
|
||||||
component: "model/modelDetail",
|
component: "model/modelDetail",
|
||||||
|
@ -194,6 +207,19 @@ class MenuAPI {
|
||||||
alwaysShow: false,
|
alwaysShow: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "taskDesc",
|
||||||
|
component: "simulationEvaluation/taskDesc",
|
||||||
|
name: "simulationEvaluationTaskDesc",
|
||||||
|
meta: {
|
||||||
|
title: "任务详情",
|
||||||
|
icon: "oper",
|
||||||
|
hidden: true,
|
||||||
|
roles: ["ADMIN", "GUEST"],
|
||||||
|
keepAlive: true,
|
||||||
|
alwaysShow: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "execution",
|
path: "execution",
|
||||||
component: "simulationEvaluation/execution",
|
component: "simulationEvaluation/execution",
|
||||||
|
|
|
@ -62,6 +62,16 @@ const upload = (file) => {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
const updateModel=(data)=>{
|
||||||
|
return request({
|
||||||
|
url: `/models/${data.id}/files`,
|
||||||
|
method: "put",
|
||||||
|
data:{
|
||||||
|
file_name:data.fileName,
|
||||||
|
modl_file_type:data.fileType
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
export default {
|
export default {
|
||||||
list,
|
list,
|
||||||
add,
|
add,
|
||||||
|
@ -69,5 +79,6 @@ export default {
|
||||||
findOne,
|
findOne,
|
||||||
adaptOperators,
|
adaptOperators,
|
||||||
download,
|
download,
|
||||||
upload
|
upload,
|
||||||
|
updateModel
|
||||||
}
|
}
|
|
@ -31,6 +31,15 @@ const addTask = (data) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//创建推理任务
|
||||||
|
const deleteTask = (id) => {
|
||||||
|
return request({
|
||||||
|
url: '/tasks/'+id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//创建推理任务
|
//创建推理任务
|
||||||
const stopTask = (id) => {
|
const stopTask = (id) => {
|
||||||
return request({
|
return request({
|
||||||
|
@ -41,10 +50,33 @@ const stopTask = (id) => {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const taskDetail=id=>{
|
||||||
|
return request({
|
||||||
|
url: '/tasks/'+id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const taskResults=id=>{
|
||||||
|
return request({
|
||||||
|
url: '/tasks/'+id+'/results',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const taskImage=(id,fileName)=>{
|
||||||
|
return request({
|
||||||
|
url: '/tasks/'+id+'/results/'+fileName,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
export default {
|
export default {
|
||||||
tasks,
|
tasks,
|
||||||
availableDevices,
|
availableDevices,
|
||||||
running,
|
running,
|
||||||
addTask,
|
addTask,
|
||||||
stopTask
|
stopTask,
|
||||||
|
taskDetail,
|
||||||
|
taskResults,
|
||||||
|
deleteTask,
|
||||||
|
taskImage
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8029"><path d="M560.697 472.022a23 23 0 0 1 13.27 4.214L820.026 650.05c10.375 7.33 12.844 21.681 5.515 32.056a23 23 0 0 1-5.1 5.215L574.383 869.495c-10.21 7.559-24.613 5.41-32.171-4.799a23 23 0 0 1-4.515-13.686V733.816h-201.16c-143.36 0.815-221.206-70.034-233.537-212.546 12.457 13.043 66.902 90 233.537 90 111.09 0 178.144-1.277 201.16-3.828v-112.42c0-12.703 10.297-23 23-23zM406.788 119.304a23 23 0 0 1 4.515 13.686v117.194h201.16c143.36-0.815 221.206 70.034 233.537 212.546-12.457-13.043-66.902-90-233.537-90-111.09 0-178.144 1.277-201.16 3.828v112.42c0 12.703-10.297 23-23 23a23 23 0 0 1-13.27-4.214L128.974 333.95c-10.375-7.33-12.844-21.681-5.515-32.056a23 23 0 0 1 5.1-5.215l246.058-182.173c10.21-7.559 24.613-5.41 32.171 4.799z" p-id="8030"></path></svg>
|
After Width: | Height: | Size: 950 B |
Binary file not shown.
After Width: | Height: | Size: 677 B |
|
@ -0,0 +1,242 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container edit-model">
|
||||||
|
<el-card>
|
||||||
|
<template #header>
|
||||||
|
<svg-icon icon-class="pause" style="width:20px;height:20px;" />
|
||||||
|
模型基本信息 - 更新模型</template>
|
||||||
|
|
||||||
|
<table style="width:100%" class="tb-base-info">
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">模型名称:</span>
|
||||||
|
<span class="sp-text">{{ data.info.model_name }}</span>
|
||||||
|
</td>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">模型类型:</span>
|
||||||
|
<span class="sp-text">{{ data.info.modl_main_type_name }}
|
||||||
|
/{{ data.info.modl_sub_type_name }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">模型版本:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.info.model_version }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">版本描述:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.info.model_desc }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">模型网络:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.info.model_net_type }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">上传用户:</span>
|
||||||
|
<span class="sp-text"> {{ data.info.user_name }}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">算法框架:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.info.modl_framework }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">上传时间:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.info.create_time }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" style="width: 100%;">
|
||||||
|
<el-form ref="uploadForm" :rules="upRules" :model="upForm" label-width="120">
|
||||||
|
<el-form-item label="网络参数" prop="model_file_list">
|
||||||
|
<el-upload ref="uploadRef1" class="uploadFile1" :action="fileUpload" :data="upModelData"
|
||||||
|
:headers="uploadHeaders" :before-upload="handleBeforeUploadModel"
|
||||||
|
:on-success="handleUploadModelSuccess" :on-error="handleUploadModelFail"
|
||||||
|
:on-remove="handleFileRemove" :on-exceed="handleFileExceed"
|
||||||
|
:auto-upload-demo="false" :limit="1" accept=".onnx,.ts">
|
||||||
|
<el-button type="primary"><el-icon class="el-icon--upload"> <i-ep-upload-filled />
|
||||||
|
</el-icon>选择文件</el-button>
|
||||||
|
<template #tip>
|
||||||
|
<div class="el-upload__tip">
|
||||||
|
请上传大小不超过<span style="color:coral">500M</span>,格式为<span
|
||||||
|
style="color:coral">onnx/ts</span>的文件
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<el-card class="card-footer">
|
||||||
|
<el-button type="primary" @click="doSave">保存</el-button>
|
||||||
|
<el-button @click="doBack">返回</el-button>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import ModelApi from '@/api/models'
|
||||||
|
import { TOKEN_KEY } from "@/enums/CacheEnum";
|
||||||
|
const router = useRouter();
|
||||||
|
const route = useRoute()
|
||||||
|
const data = reactive({
|
||||||
|
info: {}
|
||||||
|
});
|
||||||
|
let listOpt = reactive({
|
||||||
|
upFiles: []
|
||||||
|
});
|
||||||
|
let fileUpload = ref(import.meta.env.VITE_APP_BASE_API + "/models/upload");
|
||||||
|
let uploadHeaders = ref({
|
||||||
|
Authorization: localStorage.getItem(TOKEN_KEY)
|
||||||
|
})
|
||||||
|
let upModelData = reactive({
|
||||||
|
file_name: '',
|
||||||
|
file_content: null
|
||||||
|
});
|
||||||
|
const uploadForm = ref(ElForm)
|
||||||
|
let upForm = reactive({
|
||||||
|
model_file_list: [
|
||||||
|
|
||||||
|
]
|
||||||
|
})
|
||||||
|
function handleFileExceed() {
|
||||||
|
ElMessage.warning("超过上传上限!");
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleBeforeUploadModel(file, b, c) {
|
||||||
|
if (file.size > 500 * 1024 * 1024) {
|
||||||
|
ElMessage.warning("文件大小不能超500M");
|
||||||
|
file.onError("文件大小不能超500M")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
let ext = file.name.split(".").pop().toLowerCase();
|
||||||
|
if (["onnx", "ts"].indexOf(ext) == -1) {
|
||||||
|
ElMessage.warning("请上传onnx/ts格式文件");
|
||||||
|
file.onError("请上传onnx/ts格式文件")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
upModelData.file_name = file.name;
|
||||||
|
upModelData.file_content = file;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleUploadModelSuccess(res) {
|
||||||
|
if (res.code == 0) {
|
||||||
|
listOpt.upFiles.push({
|
||||||
|
name: res.data.file_name,
|
||||||
|
serverName: res.data.file_name
|
||||||
|
})
|
||||||
|
upForm.model_file_list = listOpt.upFiles.map(it => it.serverName);
|
||||||
|
} else {
|
||||||
|
ElMessage.error("上传失败," + res.message);
|
||||||
|
uploadRef1.value.clearFiles();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleFileRemove(a, b, c) {
|
||||||
|
let tmps = listOpt.upFiles.filter(d => d.name == a.name);
|
||||||
|
if (tmps.length > 0) {
|
||||||
|
let idx = listOpt.upFiles.indexOf(tmps[0]);
|
||||||
|
listOpt.upFiles.splice(idx, 1);
|
||||||
|
}
|
||||||
|
upForm.model_file_list = listOpt.upFiles.map(it => it.serverName);
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleUploadModelFail(res) {
|
||||||
|
uploadRef1.value.clearFiles();
|
||||||
|
}
|
||||||
|
|
||||||
|
const upRules = computed(() => {
|
||||||
|
return {
|
||||||
|
model_file_list: [{ required: true, trigger: "blur", message: "请上传网络参数", }],
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const doSave = () => {
|
||||||
|
uploadForm.value?.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
let id = route.query.id;
|
||||||
|
let name=listOpt.upFiles[0].name;
|
||||||
|
let data={
|
||||||
|
id:id,
|
||||||
|
fileName:name,
|
||||||
|
fileType:name.split(".").pop()
|
||||||
|
}
|
||||||
|
ModelApi.updateModel(data).then(d=>{
|
||||||
|
if(d.data?.code==0){
|
||||||
|
ElMessage.success("更新模型成功!");
|
||||||
|
setTimeout(()=>{
|
||||||
|
doBack();
|
||||||
|
},1000);
|
||||||
|
}else{
|
||||||
|
ElMessage.error("更新模型失败!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const doBack = () => {
|
||||||
|
router.push({ path: "/modelMgr/index" })
|
||||||
|
}
|
||||||
|
const initData = () => {
|
||||||
|
let id = route.query.id;
|
||||||
|
ModelApi.findOne(id).then(d => {
|
||||||
|
data.info = d.data.data;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
initData();
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tb-base-info {
|
||||||
|
line-height: 30px;
|
||||||
|
|
||||||
|
:deep(span) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit-model {
|
||||||
|
:deep(.el-card__header) {
|
||||||
|
padding: 8px 4px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-footer {
|
||||||
|
position: fixed;
|
||||||
|
width: calc(100% - 215px);
|
||||||
|
bottom: 0px;
|
||||||
|
|
||||||
|
:deep(.el-card__body) {
|
||||||
|
padding: 10px;
|
||||||
|
|
||||||
|
.el-pagination {
|
||||||
|
justify-content: end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -27,11 +27,12 @@
|
||||||
<el-table-column label="说明" width="300" align="left" prop="model_desc" />
|
<el-table-column label="说明" width="300" align="left" prop="model_desc" />
|
||||||
<el-table-column label="上传时间" width="120" align="left" prop="create_time" />
|
<el-table-column label="上传时间" width="120" align="left" prop="create_time" />
|
||||||
<el-table-column label="上传用户" width="100" align="left" prop="user_name" />
|
<el-table-column label="上传用户" width="100" align="left" prop="user_name" />
|
||||||
<el-table-column label="操作" fixed="right" width="250">
|
<el-table-column label="操作" fixed="right" width="350">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button text type="primary" size="small"
|
<el-button text type="primary" size="small"
|
||||||
@click="doShowModelDetail(scope.row)"><i-ep-edit />查看</el-button>
|
@click="doShowModelDetail(scope.row)"><i-ep-edit />查看</el-button>
|
||||||
<el-button text type="primary" size="small" @click="doconnection()" v-if="!isV2"><i-ep-link />互联</el-button>
|
<el-button text type="primary" size="small" @click="doconnection()" v-if="!isV2"><i-ep-link />互联</el-button>
|
||||||
|
<el-button text type="primary" size="small" @click="updateModel(scope.row)" v-if="!isV2"> <svg-icon icon-class="update" />更新模型</el-button>
|
||||||
<el-button text type="primary" size="small" @click="handleDelete(scope.row)" v-if="!isV2"><i-ep-delete />删除</el-button>
|
<el-button text type="primary" size="small" @click="handleDelete(scope.row)" v-if="!isV2"><i-ep-delete />删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
@ -91,6 +92,10 @@ function doconnection() {
|
||||||
router.push({ path: "/connection/index" });
|
router.push({ path: "/connection/index" });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**更新模型 **/
|
||||||
|
function updateModel(row){
|
||||||
|
router.push({ path: "/modelMgr/editModel",query:{id:row.model_id} });
|
||||||
|
}
|
||||||
/** 重置查询 */
|
/** 重置查询 */
|
||||||
function resetQuery() {
|
function resetQuery() {
|
||||||
queryFormRef.value.resetFields();
|
queryFormRef.value.resetFields();
|
||||||
|
|
|
@ -125,6 +125,7 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import choiceTaskDlg from './components/choiceTaskDlg.vue'
|
import choiceTaskDlg from './components/choiceTaskDlg.vue'
|
||||||
import ReportApi from '@/api/report'
|
import ReportApi from '@/api/report'
|
||||||
|
import OperatorApi from '@/api/operator'
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const info = reactive({
|
const info = reactive({
|
||||||
tableData: [],
|
tableData: [],
|
||||||
|
@ -135,6 +136,7 @@ const info = reactive({
|
||||||
lvl2: [],
|
lvl2: [],
|
||||||
},
|
},
|
||||||
choiceType: '',
|
choiceType: '',
|
||||||
|
opId:null,
|
||||||
})
|
})
|
||||||
|
|
||||||
const loading=ref(false);
|
const loading=ref(false);
|
||||||
|
@ -186,6 +188,9 @@ function doMakeReport(){
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
ReportApi.addReport(postData).then(d=>{
|
ReportApi.addReport(postData).then(d=>{
|
||||||
|
debugger
|
||||||
|
//info.opId=d.data.op_id;
|
||||||
|
//loadOpLog();
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
let reportId=d.data?.data?.report_id||'';
|
let reportId=d.data?.data?.report_id||'';
|
||||||
if(reportId){
|
if(reportId){
|
||||||
|
@ -196,6 +201,11 @@ function doMakeReport(){
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
const loadOpLog=()=>{
|
||||||
|
OperatorApi.findOne(id).then(d=>{
|
||||||
|
debugger
|
||||||
|
})
|
||||||
|
}
|
||||||
//删除已选择
|
//删除已选择
|
||||||
function doDelete(row) {
|
function doDelete(row) {
|
||||||
info.tableData = [];
|
info.tableData = [];
|
||||||
|
|
|
@ -23,10 +23,10 @@
|
||||||
<el-table-column label="模型网络" align="left" prop="modl_net_type" />
|
<el-table-column label="模型网络" align="left" prop="modl_net_type" />
|
||||||
<el-table-column label="创建时间" align="left" prop="create_time" width="160" />
|
<el-table-column label="创建时间" align="left" prop="create_time" width="160" />
|
||||||
<el-table-column label="完成时间" align="left" prop="finish_time" width="160" />
|
<el-table-column label="完成时间" align="left" prop="finish_time" width="160" />
|
||||||
<el-table-column label="操作" fixed="right" align="center" width="200" v-if="1==2">
|
<el-table-column label="操作" fixed="right" align="center" width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button text type="primary" size="small" @click="doShowDetail(scope.row)"><i-ep-view />查看报告</el-button>
|
<el-button text type="primary" size="small" @click="doShowDetail(scope.row)"><i-ep-view />查看任务</el-button>
|
||||||
<el-button text type="primary" v-if="1 == 2" size="small"
|
<el-button text type="primary" size="small"
|
||||||
@click="doDelete(scope.row)"><i-ep-close-bold />删除</el-button>
|
@click="doDelete(scope.row)"><i-ep-close-bold />删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
@ -67,16 +67,18 @@ const doDelete = (row) => {
|
||||||
type: "warning",
|
type: "warning",
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
|
|
||||||
let idx = tableData.indexOf(row);
|
TaskApi.deleteTask(row.task_id).then(d=>{
|
||||||
if (idx >= 0) {
|
if(d.data.code==0){
|
||||||
tableData.splice(idx, 1);
|
|
||||||
ElMessage.success("删除成功");
|
ElMessage.success("删除成功");
|
||||||
|
loadData();
|
||||||
|
}else{
|
||||||
|
ElMessage.error("删除失败!");
|
||||||
}
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
const doShowDetail = row => {
|
const doShowDetail = row => {
|
||||||
router.push({ path: "/simulationEvaluation/taskDesc", query: { ...row } });
|
router.push({ path: "/simulationEvaluation/taskDesc", query: {id:row.task_id } });
|
||||||
}
|
}
|
||||||
const loadData = () => {
|
const loadData = () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
|
|
|
@ -0,0 +1,241 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container task-detail">
|
||||||
|
<el-card>
|
||||||
|
<template #header>
|
||||||
|
<svg-icon icon-class="pause" style="width:20px;height:20px;" />
|
||||||
|
任务详情</template>
|
||||||
|
<table style="width:100%" class="tb-base-info">
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">任务名称:</span>
|
||||||
|
<span class="sp-text">{{ data.taskInfo.task_name }}</span>
|
||||||
|
</td>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">任务说明:</span>
|
||||||
|
<span class="sp-text">{{ data.taskInfo.task_desc }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">互联名称:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.taskInfo.connection_name }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">互联说明:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.taskInfo.connection_desc }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">数据集:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.taskInfo.dataset_name }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">图像数量:</span>
|
||||||
|
<span class="sp-text"> {{ data.taskInfo.image_count }}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">运行模型:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.taskInfo.model_name }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">模型网络:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.taskInfo.modl_net_type }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">设备名称:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.taskInfo.device_name }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">开始时间:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.taskInfo.create_time }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<span class="sp-title">结束时间:</span>
|
||||||
|
<span class="sp-text">
|
||||||
|
{{ data.taskInfo.finish_time }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</el-card>
|
||||||
|
<el-card style="margin-top: 20px;" class="image-list">
|
||||||
|
<template #header>
|
||||||
|
<svg-icon icon-class="pause" style="width:20px;height:20px;" />
|
||||||
|
结果集图像列表({{ data.imageList.length }})</template>
|
||||||
|
<el-upload v-model:file-list="data.imageList" class="upload-demo upload-demo-2"
|
||||||
|
:on-preview="handlePreview" />
|
||||||
|
<el-empty v-if="data.imageList.length == 0" description="暂 无 数 据" />
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="demo-image__preview">
|
||||||
|
<el-image class="imgPreView" :src="imgPreSrc" :zoom-rate="1.2" :max-scale="7" :min-scale="0.2"
|
||||||
|
:preview-src-list="imgPreSrcList" :initial-index="4" style="width: 1px; height: 1px" fit="cover" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<el-card class="card-footer">
|
||||||
|
<el-button type="primary" @click="doDelete">删除</el-button>
|
||||||
|
<el-button @click="doBack">返回</el-button>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import task from '@/api/task';
|
||||||
|
import DataSetApi from "@/api/dataSet";
|
||||||
|
const router = useRouter();
|
||||||
|
const route = useRoute()
|
||||||
|
const imgPreSrcList = ref([]);
|
||||||
|
const imgPreSrc = ref("");
|
||||||
|
const imgViewer = ref(false);
|
||||||
|
const data = reactive({
|
||||||
|
taskInfo: {},
|
||||||
|
imageList: [],
|
||||||
|
elKey: 0
|
||||||
|
})
|
||||||
|
const doDelete = () => {
|
||||||
|
ElMessageBox.confirm("确认删除?", "警告", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
}).then(function () {
|
||||||
|
let id = route.query.id;
|
||||||
|
task.deleteTask(id).then(d => {
|
||||||
|
if (d.data.code == 0) {
|
||||||
|
ElMessage.success("删除成功");
|
||||||
|
setTimeout(() => {
|
||||||
|
doBack();
|
||||||
|
}, 1000);
|
||||||
|
} else {
|
||||||
|
ElMessage.error("删除失败!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const doBack = () => {
|
||||||
|
router.push({ path: "/simulationEvaluation/hisTaskList" })
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 预览图片 */
|
||||||
|
function handlePreview(file) {
|
||||||
|
imgPreSrcList.value = [];
|
||||||
|
let id = route.query.id;
|
||||||
|
task.taskImage(id, file.name).then(res => {
|
||||||
|
if (res.data.code == 0) {
|
||||||
|
imgPreSrc.value = "data:image/gif;base64," + res.data.data.file_content;
|
||||||
|
imgPreSrcList.value.push(imgPreSrc.value);
|
||||||
|
setTimeout(() => {
|
||||||
|
console.log("点击事件===>");
|
||||||
|
imgViewer.value = true;
|
||||||
|
document.getElementsByClassName("imgPreView")[0].children[0].click();
|
||||||
|
}, 50);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const initData = () => {
|
||||||
|
|
||||||
|
let id = route.query.id;
|
||||||
|
task.taskDetail(id).then(d => {
|
||||||
|
data.taskInfo = d.data.data || {};
|
||||||
|
data.elKey++;
|
||||||
|
})
|
||||||
|
task.taskResults(id).then(d => {
|
||||||
|
data.imageList = (d.data.data.image_list || []).map(it => {
|
||||||
|
return {
|
||||||
|
name: it, url: it
|
||||||
|
}
|
||||||
|
});
|
||||||
|
data.elKey++;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
initData();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tb-base-info {
|
||||||
|
line-height: 30px;
|
||||||
|
|
||||||
|
:deep(span) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.svg-icon) {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-footer {
|
||||||
|
position: fixed;
|
||||||
|
width: calc(100% - 215px);
|
||||||
|
bottom: 0px;
|
||||||
|
|
||||||
|
:deep(.el-card__body) {
|
||||||
|
padding: 10px;
|
||||||
|
|
||||||
|
.el-pagination {
|
||||||
|
justify-content: end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<style lang="scss">
|
||||||
|
.app-container.task-detail{
|
||||||
|
.image-list{
|
||||||
|
.el-upload.el-upload--text{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.el-upload-list{
|
||||||
|
margin-top: 0px;
|
||||||
|
|
||||||
|
.el-upload-list__item{
|
||||||
|
display: inline-block;
|
||||||
|
width:23%;
|
||||||
|
.el-icon.el-icon--document{
|
||||||
|
background-image: url("../../assets/img.png");
|
||||||
|
width:18px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
svg{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.el-icon.el-icon--close{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.el-upload-list__item-status-label{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue