This commit is contained in:
2026-08-27 09:02:48 +08:00
parent c323ca9031
commit 566217ce42
6 changed files with 64 additions and 46 deletions
+16 -6
View File
@@ -28,7 +28,7 @@ const coverFile = ref(null) // 新选择的封面文件(el-upload 单文件)
const coverFileList = ref([]) // 封面回显:已有封面(服务端 url)或新选文件(本地预览)
const coverDeleted = ref(false) // 用户删除了已有封面(保存时调删除接口)
const training = ref(false)
const trainingIds = reactive(new Set()) // 训练发起中的数据集 id(请求期间按钮置灰防重复点击)
const statusMap = { building: '建设中', labeled: '已标注', synced: '已同步' }
const statusTag = { building: 'info', labeled: 'success', synced: 'primary' }
@@ -134,16 +134,19 @@ async function submitConfig() {
// ---------- 开始训练(一键发起:任务名自动生成,参数走 config.yml training 节点) ----------
function startTrain(row) {
training.value = true
if (trainingIds.has(row.id)) return
trainingIds.add(row.id)
request
.post('/trainings', { datasetId: row.id })
// 后端已异步化(请求只做校验+落记录),60s 仅作兜底
.post('/trainings', { datasetId: row.id }, { timeout: 60000 })
.then(() => {
ElMessage.success('训练任务已发起,完成后可发布为模型版本')
load()
})
.catch(() => {})
.finally(() => {
training.value = false
trainingIds.delete(row.id)
// 请求失败也可能已落 running 记录(如响应异常),一律刷新拿真实状态
load()
})
}
@@ -251,7 +254,14 @@ onBeforeUnmount(() => {
</div>
</div>
<div class="ds-actions" @click.stop>
<el-button type="primary" size="small" :icon="VideoPlay" :disabled="row.trainingStatus === 'running'" @click="startTrain(row)">
<el-button
type="primary"
size="small"
:icon="VideoPlay"
:loading="trainingIds.has(row.id)"
:disabled="trainingIds.has(row.id) || row.trainingStatus === 'running'"
@click="startTrain(row)"
>
{{ row.trainingStatus === 'running' ? '训练中' : '开始训练' }}
</el-button>
<el-button size="small" :icon="Setting" @click="openConfig(row)">配置</el-button>