From 39dbbaa3a1cf8f56c25ac03888fe28ee553ecd0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B9=9B=E5=85=AE?= Date: Fri, 12 Jun 2026 01:16:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A1=A5=E9=BD=90=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E9=87=8D=E8=AF=95=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ReleaseCenterView.vue | 8 ++++++-- src/views/RunsView.vue | 28 +++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/views/ReleaseCenterView.vue b/src/views/ReleaseCenterView.vue index 7b88aec..614f724 100644 --- a/src/views/ReleaseCenterView.vue +++ b/src/views/ReleaseCenterView.vue @@ -93,6 +93,10 @@ const canSyncJenkins = computed(() => { return shownRun.value?.status === 'queued' || shownRun.value?.status === 'running' }) +const canCancelShownRun = computed(() => shownRun.value?.status === 'queued' || shownRun.value?.status === 'running') + +const canRetryShownRun = computed(() => shownRun.value?.status === 'failed' || shownRun.value?.status === 'canceled') + async function triggerRelease() { submitting.value = true try { @@ -285,10 +289,10 @@ watch(refOptions, (options) => { > 触发发布 - + 取消 - + 重试 diff --git a/src/views/RunsView.vue b/src/views/RunsView.vue index 2c86ee4..36bc5c2 100644 --- a/src/views/RunsView.vue +++ b/src/views/RunsView.vue @@ -2,7 +2,7 @@ /** * 运行记录页展示历史发布单、Jenkins 同步入口和后端步骤流转图。 */ -import { RefreshRight } from '@element-plus/icons-vue' +import { CircleClose, RefreshRight } from '@element-plus/icons-vue' import { ElMessage } from 'element-plus' import { computed, ref } from 'vue' import BpmnStatusViewer from '../components/BpmnStatusViewer.vue' @@ -23,6 +23,10 @@ const canSyncSelectedRun = computed(() => { return canSyncRun(selectedRun.value) }) +const canRetrySelectedRun = computed(() => { + return canRetryRun(selectedRun.value) +}) + const canSyncAnyRun = computed(() => platform.runs.some((run) => canSyncRun(run))) function canSyncRun(run?: ReleaseRun): boolean { @@ -32,6 +36,10 @@ function canSyncRun(run?: ReleaseRun): boolean { ) } +function canRetryRun(run?: ReleaseRun): boolean { + return run?.status === 'failed' || run?.status === 'canceled' +} + async function syncSelectedRun() { if (!selectedRun.value) { return @@ -42,6 +50,16 @@ async function syncSelectedRun() { ElMessage.success('已同步 Jenkins 状态') } +async function retrySelectedRun() { + if (!selectedRun.value) { + return + } + + const run = await platform.retryDeployRun(selectedRun.value) + selectedRunId.value = run.id + ElMessage.success('已提交重试发布单') +} + async function syncAllJenkinsRuns() { syncingAll.value = true try { @@ -125,6 +143,14 @@ async function syncAllJenkinsRuns() { > 同步 Jenkins + + 重试 +