From f87d16021e54a582dec1b21562c58fe1da05eaca Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Wed, 22 Apr 2026 20:18:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=A7=BB=E5=8A=A8=E7=AB=AF=E5=A5=96?= =?UTF-8?q?=E5=93=81=E5=8D=A1=E7=89=87=E6=81=A2=E5=A4=8D=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=B8=8E=E5=A5=96=E5=93=81=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- packages/web/src/components/RedeemModal.tsx | 21 +++++++++++++++++---- packages/web/src/components/StampPopup.tsx | 17 +++++++++++++++-- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/packages/web/src/components/RedeemModal.tsx b/packages/web/src/components/RedeemModal.tsx index 29bc1e0..31e1b03 100644 --- a/packages/web/src/components/RedeemModal.tsx +++ b/packages/web/src/components/RedeemModal.tsx @@ -151,11 +151,20 @@ export default function RedeemModal({ stamp, onRedeem, onClose }: RedeemModalPro {prize ? (

Reward

- {prize.description ? ( -

{prize.description}

- ) : ( -

暂未填写权益说明

+

{prize.name}

+ {prize.description && ( +

{prize.description}

)} +
+ 剩余库存 + 0 ? "var(--jade)" : "var(--terracotta)" }} + > + {prize.stock} + + +
) : (
@@ -171,6 +180,9 @@ export default function RedeemModal({ stamp, onRedeem, onClose }: RedeemModalPro {mode === "redeemed" && (

你已经兑换过这枚图章对应的奖品

)} + {mode === "sold-out" && ( +

该奖品库存已耗尽,暂无法兑换

+ )} {error &&

{error}

} @@ -227,6 +239,7 @@ export default function RedeemModal({ stamp, onRedeem, onClose }: RedeemModalPro

Reward

+

{prize.name}

{prize.description && (

{prize.description}

)} diff --git a/packages/web/src/components/StampPopup.tsx b/packages/web/src/components/StampPopup.tsx index fc482ce..7a7bc53 100644 --- a/packages/web/src/components/StampPopup.tsx +++ b/packages/web/src/components/StampPopup.tsx @@ -49,10 +49,23 @@ export default function StampPopup({ name, imageColor, note, prize, status, onCo {note &&

{note}

} {/* Prize rule (preview only) */} - {status === "preview" && prize?.description && ( + {status === "preview" && prize && (

Reward

-

{prize.description}

+

{prize.name}

+ {prize.description && ( +

{prize.description}

+ )} +
+ 剩余库存 + 0 ? "var(--jade)" : "var(--terracotta)" }} + > + {prize.stock} + + +
)}