import { useEffect, useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { request } from '../lib/api'; import { isWechatEnv, weixinSdk } from '../lib/weixin'; function formatMoney(n: number) { return n.toLocaleString('zh-CN', { minimumFractionDigits: 0, maximumFractionDigits: 2 }); } export default function HomePage() { const navigate = useNavigate(); const [dash, setDash] = useState | null>(null); const [open, setOpen] = useState(true); useEffect(() => { request('SHOP_H5', '/shop/dashboard').then((d) => { setDash(d); setOpen(String((d.store as Record)?.status) === 'OPEN'); }); }, []); const store = dash?.store as Record | undefined; const recent = (dash?.recentRecords as Array>) || []; const openTime = String(store?.openTime || '10:00'); const closeTime = String(store?.closeTime || '22:00'); async function handleScan() { if (isWechatEnv()) { try { await weixinSdk.init(); const token = await weixinSdk.scanQrCode(); if (token) { navigate(`/redeem?token=${encodeURIComponent(token)}`); return; } } catch { /* fall through to manual redeem page */ } } navigate('/redeem'); } return (

门店管理中心

store

{String(store?.name || '门店')}

今日核销笔数

{Number(dash?.todayCount || 0)}

今日到账金额

¥ {formatMoney(Number(dash?.todayAmount || 0))}

扫码核销

schedule

营业状态

{open ? '当前正在营业中' : '当前已停止营业'}

营业时间: {openTime} - {closeTime}

核销记录

查看全部 chevron_right
{recent.length === 0 && (

暂无核销记录

)} {recent.map((r) => (

核销时间

{new Date(String(r.createdAt)).toLocaleString('zh-CN')}

¥{formatMoney(Number(r.amount))}

))}
); }