import { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { useStoreSession } from '../contexts/StoreSessionContext'; import { request } from '../lib/api'; export default function StatusPage() { const navigate = useNavigate(); const { resetSession } = useStoreSession(); const [open, setOpen] = useState(true); const [store, setStore] = useState | null>(null); const [lastUpdate, setLastUpdate] = useState(''); const [showModal, setShowModal] = useState(false); const [pendingOpen, setPendingOpen] = useState(null); useEffect(() => { request('SHOP_H5', '/shop/dashboard').then((d) => { const s = d.store as Record; setStore(s); setOpen(String(s?.status) === 'OPEN'); if (s?.updatedAt) { setLastUpdate(new Date(String(s.updatedAt)).toLocaleString('zh-CN')); } }); }, []); function requestToggle(next: boolean) { if (next === open) return; setPendingOpen(next); setShowModal(true); } async function confirmToggle() { if (pendingOpen === null) return; const next = pendingOpen ? 'OPEN' : 'PAUSED'; try { await request('SHOP_H5', '/shop/store/status', { method: 'PUT', body: JSON.stringify({ status: next }), }); setOpen(pendingOpen); setLastUpdate(new Date().toLocaleString('zh-CN')); } catch { /* keep current state */ } finally { setShowModal(false); setPendingOpen(null); } } const openTime = String(store?.openTime || '09:30'); const closeTime = String(store?.closeTime || '22:00'); return (

门店管理

storefront
{open ? 'check_circle' : 'cancel'}

{open ? '营业中' : '临时闭店'}

营业时间

{openTime} - {closeTime}

{lastUpdate &&

最后修改于 {lastUpdate}

}
info

{open ? '当前处于营业状态,用户可在您的门店核销餐券。' : '当前处于休息状态,用户将无法看到您的门店或进行核销。'}

{showModal && (

确认切换状态?

{pendingOpen ? '切换至“营业中”后,用户可正常选择本店核销餐券。' : '切换至“临时闭店”后,用户将无法选择本店核销餐券。'}

)}
); }