From 697100257922c7fdd68ce6672ef56fcd9c156a57 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Sat, 10 Oct 2026 18:42:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E5=B1=A5=E7=BA=A6=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E6=88=96=E7=BB=88=E6=80=81=E6=97=B6=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E9=9A=90=E8=97=8F=E6=9A=82=E5=81=9C=E4=B8=8E=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E5=85=91=E6=8D=A2=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 任务详情页(AdminTaskDetailPage):若任务已履约完成(completed/delivered/success)或订单已完成/已退款,自动隐藏【暂停兑换】和【关闭兑换】按钮,避免误操作 - 订单详情页(AdminOrderDetailPage):若订单下任务已全部履约完成或订单终态,同样自动隐藏【暂停兑换】和【关闭兑换】 - 针对已被暂停/关闭的历史订单,始终保留【恢复启用】入口以便误操作时补救 - 验证方式:前端类型检查(0 error)、前端单测 132 项全通及前端 Vite 重新构建成功 --- .../src/pages/admin/AdminOrderDetailPage.tsx | 18 +++++++++++++++--- .../src/pages/admin/AdminTaskDetailPage.tsx | 12 ++++++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/apps/frontend/src/pages/admin/AdminOrderDetailPage.tsx b/apps/frontend/src/pages/admin/AdminOrderDetailPage.tsx index 61df3526..c9b377ed 100644 --- a/apps/frontend/src/pages/admin/AdminOrderDetailPage.tsx +++ b/apps/frontend/src/pages/admin/AdminOrderDetailPage.tsx @@ -147,6 +147,18 @@ export default function AdminOrderDetailPage() { }, ] + const allTasksCompleted = + detail.tasks.length > 0 && + detail.tasks.every( + (t) => + ['completed', 'redeemed', 'delivered', 'success'].includes(t.status) || + t.deliveryStatus === 'delivered', + ) + const isOrderFulfilled = detail.order.orderStatus === 'completed' || allTasksCompleted + const isOrderRefundedOrCancelled = + detail.order.payStatus === 'refunded' || detail.order.orderStatus === 'cancelled' + const canPauseOrClose = !isOrderFulfilled && !isOrderRefundedOrCancelled + return (
恢复启用 - ) : ( + ) : canPauseOrClose ? ( - )} - {detail.order.claimStatus !== 'closed' ? ( + ) : null} + {canPauseOrClose && detail.order.claimStatus !== 'closed' ? ( {orderId ? ( <> - {claimStatus !== 'paused' && ( + {canPauseOrClose && claimStatus !== 'paused' && (