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();