diff --git a/web/delivery-platform-ui/src/views/CallbackInboxDetailView.vue b/web/delivery-platform-ui/src/views/CallbackInboxDetailView.vue index 2bdbed4..17e92d9 100644 --- a/web/delivery-platform-ui/src/views/CallbackInboxDetailView.vue +++ b/web/delivery-platform-ui/src/views/CallbackInboxDetailView.vue @@ -62,6 +62,14 @@
标为已处理 标为失败 + + + + + + + + 忽略
@@ -109,6 +117,7 @@ const loading = ref(false); const patchingStatus = ref(false); const replaying = ref(false); const savingLink = ref(false); +const failureReason = ref(""); const row = ref(null); const webhookDeliveryStatus = ref(null); const webhookDeliveryLoading = ref(false); @@ -238,7 +247,13 @@ async function setStatus(status) { } patchingStatus.value = true; try { - await patchCallbackInboxStatus(id, { status }); + const body = { status }; + if (status === "FAILED" && failureReason.value) { + body.failureReason = failureReason.value; + body.operatorNote = failureReason.value; + } + await patchCallbackInboxStatus(id, body); + failureReason.value = ""; ElMessage.success("状态已更新"); await load(); } catch (e) { diff --git a/web/delivery-platform-ui/src/views/CallbackInboxView.vue b/web/delivery-platform-ui/src/views/CallbackInboxView.vue index 924cba2..11bb81f 100644 --- a/web/delivery-platform-ui/src/views/CallbackInboxView.vue +++ b/web/delivery-platform-ui/src/views/CallbackInboxView.vue @@ -14,11 +14,13 @@ 查询 + 批量重试 - + + @@ -58,7 +60,7 @@ import { ref, onMounted } from "vue"; import { useRouter } from "vue-router"; import { ElMessage } from "element-plus"; import { useAuthStore } from "../stores/auth"; -import { listCallbackInbox } from "../api/platform"; +import { listCallbackInbox, replayCallbackWebhookDelivery } from "../api/platform"; import { apiErrorMessage } from "../utils/apiErrorMessage"; const auth = useAuthStore(); @@ -73,6 +75,26 @@ const filterStatus = ref(""); const filterEventType = ref(""); const filterSnCode = ref(""); const filterProjectId = ref(""); +const selectedCallbacks = ref([]); + +function handleSelectionChange(val) { + selectedCallbacks.value = val; +} + +async function handleBatchRetry() { + let success = 0; + let fail = 0; + for (const cb of selectedCallbacks.value) { + try { + await replayCallbackWebhookDelivery(cb.id); + success++; + } catch { + fail++; + } + } + ElMessage.success(`重试完成: ${success} 成功, ${fail} 失败`); + load(); +} onMounted(async () => { auth.restoreAxiosAuth();