4009214cbc
CI / docker (push) Successful in 7m4s
引入用户端对话/生图与管理端 Provider 配置,统一 invoke 编排、Gateway、请求日志与模型管理;前端按设计规范拆分布局,Go module 更名为 github.com/rose_cat707/Atlas;生图长任务 SSE 推送;管理端登录防爆破;协议与服务类型联动;Replicate 模型同步修复;用户端创作台 UI 重构;管理端创作历史替代请求日志。 Co-authored-by: Cursor <cursoragent@cursor.com>
41 lines
1.1 KiB
Vue
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>
|