From 98022b936fd31980ac8e23269b4e223e05abeec3 Mon Sep 17 00:00:00 2001 From: jacy-dukang Date: Tue, 7 Jul 2026 00:19:11 +0800 Subject: [PATCH] fix(h5-shop): remove redeem debug UI and enforce WeChat scan flow Co-authored-by: Cursor --- apps/h5-shop/src/pages/HomePage.tsx | 4 +-- apps/h5-shop/src/pages/RedeemConfirmPage.tsx | 27 ++++++----------- apps/h5-shop/src/pages/RedeemSuccessPage.tsx | 9 +++--- apps/h5-shop/src/styles.css | 32 -------------------- packages/weixin-sdk/src/scan.ts | 3 +- 5 files changed, 18 insertions(+), 57 deletions(-) diff --git a/apps/h5-shop/src/pages/HomePage.tsx b/apps/h5-shop/src/pages/HomePage.tsx index 517abd7..cc17170 100644 --- a/apps/h5-shop/src/pages/HomePage.tsx +++ b/apps/h5-shop/src/pages/HomePage.tsx @@ -65,7 +65,7 @@ export default function HomePage() { async function runScan() { if (!isWechatEnv()) { - navigate('/redeem'); + setScanMsg('请在微信内打开门店端进行扫码核销'); return; } setScanning(true); @@ -90,7 +90,7 @@ export default function HomePage() { async function handleScan() { setScanMsg(''); if (!isWechatEnv()) { - navigate('/redeem'); + setScanMsg('请在微信内打开门店端进行扫码核销'); return; } try { diff --git a/apps/h5-shop/src/pages/RedeemConfirmPage.tsx b/apps/h5-shop/src/pages/RedeemConfirmPage.tsx index 910dfd3..ae69ed8 100644 --- a/apps/h5-shop/src/pages/RedeemConfirmPage.tsx +++ b/apps/h5-shop/src/pages/RedeemConfirmPage.tsx @@ -34,9 +34,13 @@ export default function RedeemConfirmPage() { }, []); useEffect(() => { - const scanned = searchParams.get('token'); - if (scanned) setToken(scanned); - }, [searchParams]); + const scanned = searchParams.get('token')?.trim(); + if (!scanned) { + navigate('/', { replace: true }); + return; + } + setToken(scanned); + }, [searchParams, navigate]); useEffect(() => { if (!token.trim()) { @@ -71,7 +75,7 @@ export default function RedeemConfirmPage() { body: JSON.stringify({ token }), }); sessionStorage.setItem('lastRedeemResult', JSON.stringify(result)); - navigate('/redeem/success', { state: { result, storeName } }); + navigate('/redeem/success', { state: { result, storeName, user: preview?.user } }); } catch (e) { setMsg(e instanceof Error ? e.message : '核销失败'); } finally { @@ -80,7 +84,7 @@ export default function RedeemConfirmPage() { } const previewAmount = preview?.amount ?? 0; - const userLabel = preview?.user?.nickname || preview?.user?.phone || preview?.user?.userNo || '待扫码确认'; + const userLabel = preview?.user?.nickname || preview?.user?.phone || preview?.user?.userNo || '—'; return (
@@ -161,21 +165,10 @@ export default function RedeemConfirmPage() { {loading ? 'sync' : 'check_circle'} - {loading ? '正在核销...' : preview ? `确认核销 ¥${formatAmount(previewAmount)}` : '等待扫码'} + {loading ? '正在核销...' : preview ? `确认核销 ¥${formatAmount(previewAmount)}` : '加载中…'}

请核对金额后点击确认

- -
- 开发者选项 · 手动输入核销码 -
- setToken(e.target.value)} - placeholder="粘贴用户核销码" - /> -
-
diff --git a/apps/h5-shop/src/pages/RedeemSuccessPage.tsx b/apps/h5-shop/src/pages/RedeemSuccessPage.tsx index 500053a..a05c11c 100644 --- a/apps/h5-shop/src/pages/RedeemSuccessPage.tsx +++ b/apps/h5-shop/src/pages/RedeemSuccessPage.tsx @@ -21,7 +21,9 @@ export default function RedeemSuccessPage() { }, [location.state]); const storeName = (location.state as { storeName?: string })?.storeName || '当前门店'; - const amount = Number(result?.amount || 100); + const user = (location.state as { user?: { nickname?: string; phone?: string; userNo?: string } })?.user; + const userLabel = user?.nickname || user?.phone || user?.userNo || '—'; + const amount = Number(result?.amount ?? 0); const redeemNo = String(result?.redeemNo || '—'); const createdAt = result?.createdAt ? new Date(String(result.createdAt)).toLocaleString('zh-CN') @@ -58,8 +60,7 @@ export default function RedeemSuccessPage() { person
-
杜康用户
-
待完善
+
{userLabel}
@@ -78,7 +79,7 @@ export default function RedeemSuccessPage() {
- diff --git a/apps/h5-shop/src/styles.css b/apps/h5-shop/src/styles.css index 5e4fda1..bc096de 100644 --- a/apps/h5-shop/src/styles.css +++ b/apps/h5-shop/src/styles.css @@ -1116,38 +1116,6 @@ color: var(--color-subtle-gray); } -.shop-redeem-dev { - margin-top: 8px; - border: 1px dashed var(--color-outline-variant); - border-radius: var(--radius-sm); - overflow: hidden; -} - -.shop-redeem-dev summary { - padding: 12px 16px; - font-family: var(--font-label); - font-size: 12px; - color: var(--color-subtle-gray); - cursor: pointer; - list-style: none; -} - -.shop-redeem-dev summary::-webkit-details-marker { - display: none; -} - -.shop-redeem-dev-body { - padding: 0 16px 16px; -} - -.shop-redeem-dev-body input { - width: 100%; - padding: 12px; - border: 1px solid var(--color-outline-variant); - border-radius: var(--radius-sm); - font-size: 14px; -} - .shop-redeem-error { color: var(--color-error); font-size: 13px; diff --git a/packages/weixin-sdk/src/scan.ts b/packages/weixin-sdk/src/scan.ts index 5c9966a..f1e2954 100644 --- a/packages/weixin-sdk/src/scan.ts +++ b/packages/weixin-sdk/src/scan.ts @@ -47,6 +47,5 @@ export async function scanQrCode(config: WeixinSdkConfig): Promise