diff --git a/web/src/components/LogContent.vue b/web/src/components/LogContent.vue new file mode 100644 index 0000000..6dd321a --- /dev/null +++ b/web/src/components/LogContent.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/web/src/components/LogDetailCard.vue b/web/src/components/LogDetailCard.vue new file mode 100644 index 0000000..2c89394 --- /dev/null +++ b/web/src/components/LogDetailCard.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/web/src/views/history/History.vue b/web/src/views/history/History.vue index f732ff4..4df790b 100644 --- a/web/src/views/history/History.vue +++ b/web/src/views/history/History.vue @@ -7,13 +7,12 @@ import { Input } from '@/components/ui/input' import Pagination from '@/components/Pagination.vue' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select' import LogViewer from './LogViewer.vue' -import Ansi from 'ansi-to-vue3' import { - RefreshCw, X, Search, Maximize2, GitBranch, Terminal, - CheckCircle2, XCircle, AlertCircle, Ban, Clock, Zap as ZapIcon, Check, Trash2 + RefreshCw, X, Search, GitBranch, Terminal, + AlertCircle, Ban, Clock, Zap as ZapIcon, Check, Trash2 } from 'lucide-vue-next' import { api, type TaskLog } from '@/api' -import { Badge } from '@/components/ui/badge' +import LogDetailCard from '@/components/LogDetailCard.vue' import { AlertDialog, AlertDialogAction, @@ -282,24 +281,7 @@ async function handleDeleteLog() { } } -function getStatusBadgeClass(status: string) { - switch (status) { - case TASK_STATUS.SUCCESS: - return 'bg-green-500/10 text-green-600 border-green-500/20 dark:bg-green-500/20 dark:text-green-400 dark:border-green-500/30 shadow-[0_0_8px_-2px_rgba(34,197,94,0.15)]' - case TASK_STATUS.FAILED: - return 'bg-red-500/10 text-red-600 border-red-500/20 dark:bg-red-500/20 dark:text-red-400 dark:border-red-500/30' - case TASK_STATUS.RUNNING: - return 'bg-blue-500/10 text-blue-600 border-blue-500/20 dark:bg-blue-500/20 dark:text-blue-400 dark:border-blue-500/30' - case TASK_STATUS.PENDING: - return 'bg-amber-500/10 text-amber-600 border-amber-500/20 dark:bg-amber-500/20 dark:text-amber-400 dark:border-amber-500/30' - case TASK_STATUS.TIMEOUT: - return 'bg-orange-500/10 text-orange-600 border-orange-500/20 dark:bg-orange-500/20 dark:text-orange-400 dark:border-orange-500/30' - case TASK_STATUS.CANCELLED: - return 'bg-muted/50 text-muted-foreground border-muted-foreground/10' - default: - return 'bg-secondary text-secondary-foreground border-transparent' - } -} + function getTaskTypeTitle(type: string) { return type === TASK_TYPE.REPO ? '仓库同步' : '普通任务' @@ -505,115 +487,23 @@ watch(() => route.query, (newQuery) => {
-
-
- 日志详情 - -
-
- - -
-
-
-
- 任务名称 - {{ selectedLog.task_name }} -
-
- 状态 - -
- - - - - - - {{ selectedLog.status === TASK_STATUS.SUCCESS ? 'SUCCESS' : selectedLog.status }} -
-
-
-
- 耗时 - {{ formatDuration(selectedLog.duration) }} -
-
- 开始时间 - {{ selectedLog.start_time || '-' }} -
-
- 结束时间 - {{ selectedLog.end_time || '-' }} -
-
- 执行命令 - - {{ selectedLog.command }} - -
-
-
-
-
- - 系统错误 -
- - {{ selectedLog.error }} - -
-
- 日志输出 - -
-
- - - -
-
+
- + diff --git a/web/src/views/history/LogViewer.vue b/web/src/views/history/LogViewer.vue index 1be6162..242f59e 100644 --- a/web/src/views/history/LogViewer.vue +++ b/web/src/views/history/LogViewer.vue @@ -1,56 +1,30 @@