// ===== page-lookup.jsx ===== // 用户找回订单:输入订单号 + 访问令牌 → 验证 → 跳转报告页 // 用于用户换设备/清缓存后还能查看已购报告 const { useState: useSL, useEffect: useEL } = React; function LookupPage({ navigate }) { const [orderId, setOrderId] = useSL(''); const [token, setToken] = useSL(''); const [submitting, setSubmitting] = useSL(false); const [error, setError] = useSL(null); const submit = async (e) => { e.preventDefault(); if (!orderId.trim() || !token.trim() || submitting) return; setSubmitting(true); setError(null); try { // 通过获取报告来验证 token 合法 const id = orderId.trim(); const tk = token.trim(); window.API.saveToken(id, tk); await window.API.getReport(id, tk); navigate('report', { id, token: tk }); } catch (err) { console.error('lookup failed', err); const id = orderId.trim(); const tk = token.trim(); if (err?.code === 'report_not_ready') { // 报告未就绪:token 是合法的,保留并跳订单页继续等 navigate('order', { id, token: tk }); } else { window.API.clearToken(id); setError(err?.message || '验证失败:订单号或访问令牌不正确'); } } finally { setSubmitting(false); } }; return (
navigate('home')} className="hover:text-navy-900 cursor-pointer">首页 找回订单

找回我的订单

如果你换了设备或清理了浏览器缓存,输入订单号 + 访问令牌即可重新查看报告。

setOrderId(e.target.value)} placeholder="例如:20260524-1085" className="mt-2 w-full h-11 px-3 rounded-lg ring-1 ring-ink-200 bg-white mono text-[14px] focus:outline-none focus:ring-2 focus:ring-brand-500" required />

格式:YYYYMMDD-NNNN