Files
Atlas/web/src/components/studio/TaskProgressList.vue
T
renjue 4009214cbc
CI / docker (push) Successful in 7m4s
实现 Atlas AI 平台一期能力并完成品牌化改造。
引入用户端对话/生图与管理端 Provider 配置,统一 invoke 编排、Gateway、请求日志与模型管理;前端按设计规范拆分布局,Go module 更名为 github.com/rose_cat707/Atlas;生图长任务 SSE 推送;管理端登录防爆破;协议与服务类型联动;Replicate 模型同步修复;用户端创作台 UI 重构;管理端创作历史替代请求日志。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 21:08:57 +08:00

41 lines
1.1 KiB
Vue

<script setup lang="ts">
import type { TaskItem } from '@/composables/useInvoke'
defineProps<{
tasks: TaskItem[]
}>()
function progressOf(task: TaskItem) {
if (task.progress > 0) return task.progress
if (task.status === 'running') return 35
if (task.status === 'pending') return 10
return 0
}
function statusLabel(status: string) {
const map: Record<string, string> = {
pending: '排队中',
running: '生成中',
succeeded: '已完成',
failed: '失败',
canceled: '已取消',
}
return map[status] ?? status
}
</script>
<template>
<div v-if="tasks.length" class="task-progress-list">
<div v-for="task in tasks" :key="task.id" class="task-progress-item">
<div class="task-progress-item__head">
<span class="task-progress-item__id">任务 #{{ task.id }}</span>
<span class="task-progress-item__status" :class="`is-${task.status}`">
{{ statusLabel(task.status) }}
</span>
</div>
<el-progress :percentage="progressOf(task)" :stroke-width="8" :show-text="false" />
<p v-if="task.error" class="task-progress-item__error">{{ task.error }}</p>
</div>
</div>
</template>