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