修改模型训练

This commit is contained in:
limengnan 2026-03-12 15:03:24 +08:00
parent a2c4e64648
commit dec253c4e1
2 changed files with 77 additions and 64 deletions

View File

@ -1,14 +1,6 @@
import request from '@/utils/request';
//获取所有项目列表
export function searchAlgorithmsPage(queryParams:any){
return request({
url: '/train/list' ,
method: 'get',
params:queryParams
});
}
export function trainAlgorithmsPage(queryParams:any){
return request({
url: '/train/list' ,
@ -24,16 +16,16 @@ export function addAlgorithms(data:any){
data: data
});
}
//更新项目信息
export function updateAlgorithms (queryParams:any){
export function trainPublish(data:any){
return request({
url:'/train' ,
method: 'PUT',
data: queryParams
url:'/train/publish' ,
method: 'Post',
data: data
});
}
//单个删除项目
export function deleteAlgorithms (queryParams:any){
@ -43,13 +35,3 @@ export function deleteAlgorithms (queryParams:any){
// params: queryParams
});
}
//多选删除项目
export function deleteBatchAlgorithms (queryParams:any){
return request({
url:'/train',
method: 'delete',
data: queryParams
});
}

View File

@ -7,7 +7,7 @@ export default {
<script setup lang="ts">
import { onMounted, ref, nextTick,reactive } from "vue";
import { ElForm, ElMessage, ElMessageBox,FormRules } from "element-plus";
import { addAlgorithms,updateAlgorithms,deleteAlgorithms,deleteBatchAlgorithms,trainAlgorithmsPage} from "@/api/algorithml";
import { addAlgorithms,deleteAlgorithms,trainAlgorithmsPage,trainPublish} from "@/api/algorithml";
import { searchAlgorithmsPage } from "@/api/business/algorithm";
import { getDictItemById } from '@/api/dict';
@ -162,11 +162,20 @@ function confirmClick(formEl: any) {
isSwitch.value = true
const data = new FormData()
info.value.trainParams = JSON.stringify(trainParamsData.value)
if(trainParamsData.value.length != 0){
let template:any = {}
trainParamsData.value.forEach((element:any) => {
template[element.key] = element.value
});
info.value.trainParams = JSON.stringify(template)
}
data.append('task', JSON.stringify(info.value))
// Add file if exists
if (fileList.value.length > 0) {
data.append('file', fileList.value[0].raw)
}
@ -200,13 +209,25 @@ function handleClosed(){
function viewClick(row: any) {
title.value = "查看详情";
info.value = JSON.parse(JSON.stringify(row));
trainParamsData.value = []
if(row.trainParams != null && row.trainParams != ""){
let trainParams = JSON.parse(row.trainParams)
for (const key in trainParams) {
if (!Object.hasOwn(trainParams, key)) continue;
const element = trainParams[key];
trainParamsData.value.push({
key:key,
value:element
})
}
}
dialogViewVisible.value = true;
}
//
function delAloneClick(row: any) {
ElMessageBox.confirm("确定删除此训练任务吗?", "删除提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
@ -227,22 +248,6 @@ function delAloneClick(row: any) {
}
//
function delClick(row:any) {
ElMessageBox.confirm("确定删除已选择训练任务吗?", "删除提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
deleteBatchAlgorithms(row.id).then(() => {
gettableData();
ElMessage({
message: "删除成功",
type: "success",
});
});
});
}
function dateFormat(row: any) {
const daterc = row;
if (daterc != null) {
@ -283,6 +288,7 @@ function changeStatus(row: any) {
function releaseClick(row: any) {
title.value = "发布模型";
textarea.value = ''
info.value = JSON.parse(JSON.stringify(row));
modelVisible.value = true;
@ -319,8 +325,7 @@ const trainParamsData:any = ref([])
function addTrainParams(){
trainParamsData.value.push({
key:"",
value:" "
value:" "
})
}
@ -340,6 +345,24 @@ function dellTrainParams(index:any){
trainParamsData.value.splice(index,1)
}
function confirmsClick(){
if(textarea.value == ''){
ElMessage({
type: "warning",
message: "请输入版本号",
});
return
}
let data= {
taskId: info.value.taskId,
versionTag: textarea.value,
}
trainPublish(data).then((res) => {
gettableData();
ElMessage({
type: "success",
message: "发布成功",
});
})
modelVisible.value=false
}
</script>
@ -372,10 +395,10 @@ function confirmsClick(){
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }">
<el-table-column type="selection" width="50" align="center" prop="id"></el-table-column>
<el-table-column type="index" label="序号" width="70" align="center" prop="taskId"></el-table-column>
<el-table-column prop="taskName" label="任务名称" width="180" ></el-table-column>
<el-table-column prop="algorithmType" label="算法类型" width="100" ></el-table-column>
<el-table-column prop="deviceType" label="设备类型" min-width="100" ></el-table-column>
<el-table-column prop="status" label="任务状态" min-width="100">
<el-table-column prop="taskName" label="任务名称" min-width="180" ></el-table-column>
<el-table-column prop="algorithmType" label="算法类型" width="160" ></el-table-column>
<el-table-column prop="deviceType" label="设备类型" width="160" ></el-table-column>
<el-table-column prop="status" label="任务状态" width="100">
<template #default="scope">
{{statusName(scope.row.status)}}
</template>
@ -411,7 +434,8 @@ function confirmsClick(){
append-to-body width="1145px" height="600px">
<el-form ref="infoForm" :model="info" :rules="rules" label-width="100px"
style="margin-top: 20px;">
<el-form-item label="任务名称" prop="taskName" style="width: 100%;" >
<div style="height: calc(100vh - 260px);overflow: auto;">
<el-form-item label="任务名称" prop="taskName" style="width: 100%;" >
<el-input v-model="info.taskName" style="width: 100%" placeholder="输入任务名称"></el-input>
</el-form-item>
<el-form-item label="设备类型" prop="deviceType" style="width: 100%;" >
@ -426,21 +450,23 @@ function confirmsClick(){
</el-form-item>
<el-form-item label="数据源类型" style="width: 100%;" >
<el-upload accept=".xlsx" ref="upload" class="upload-demo" action="" :on-change="handlefilechange" :on-remove="handlefileremove" :auto-upload="false" :file-list="fileList" style="width: calc(100% - 70px);position:relative">
<template #trigger>
<el-button type="primary">点击上传</el-button>
</template>
</el-upload>
<template #trigger>
<el-button type="primary">点击上传</el-button>
</template>
</el-upload>
</el-form-item>
<el-form-item label="参数配置" style="width: 100%;" >
<div style="display: flex;justify-content:space-between;">
<el-button type="primary" @click="addTrainParams">添加</el-button>
<div style="display: flex;" v-for="(item,index) in trainParamsData" :key="index">
<el-input v-model="item.key" style="width: 300px;margin-left: 10px;" placeholder="输入算法名称"></el-input>
<el-input v-model="item.value" style="width: 300px;margin: 0px 10px;" placeholder="输入算法名称"></el-input>
<div >
<el-button type="primary" @click="addTrainParams" style="margin-bottom: 10px;">添加</el-button>
<div style="display: flex;margin-bottom: 10px;" v-for="(item,index) in trainParamsData" :key="index">
<el-input v-model="item.key" style="width: 300px;margin-left: 10px;" placeholder=""></el-input>
<el-input v-model="item.value" style="width: 300px;margin: 0px 10px;" placeholder=""></el-input>
<el-button type="primary" @click="dellTrainParams(index)" text="删除">删除</el-button>
</div>
</div>
</el-form-item>
</div>
<span class="dialog-footer"
style="display: flex;display: -webkit-flex; justify-content: flex-end;-webkit-justify-content: flex-end;">
<el-button @click="handleClose"> </el-button>
@ -474,7 +500,12 @@ function confirmsClick(){
</el-select>
</el-form-item>
<el-form-item label="训练参数" style="width: 100%;">
<el-input v-model="info.trainParams" style="width: 100%" :disabled="true"></el-input>
<div v-for="item in trainParamsData" :key="item" style="margin-bottom: 10px;">
<el-input v-model="item.key" style="width: 300px" :disabled="true"></el-input>
<el-input v-model="item.value" style="width: 300px" :disabled="true"></el-input>
</div>
</el-form-item>
<el-form-item label="创建时间" style="width: 100%;" >
<el-input v-model="info.createdAt" style="width: 100%" :disabled="true" ></el-input>
@ -516,7 +547,7 @@ function confirmsClick(){
</el-select>
</el-form-item>
<el-form-item label="版本号" >
<el-input v-model="textarea" style="width: 100%" :rows="2" type="textarea" disabled />
<el-input v-model="textarea" style="width: 100%" />
</el-form-item>
<el-button type="primary" style="margin-left: 60px;" @click="confirmsClick">确定</el-button>
</el-form>