import { useEffect, useState } from 'react'; import { View, Text } from '@tarojs/components'; import HqHeader from '../../components/HqHeader'; import { request } from '../../lib/api'; import { useHqSession } from '../../lib/session'; import { ORDER_STATUS_LABELS } from '../../lib/constants'; import './index.css'; type Stats = { usersTotal: number; guestUsers: number; verifiedUsers: number; ordersToday: number; storesTotal: number; partnersTotal: number; redeemToday: number; deliveriesTotal: number; mergedUsers: number; ordersByStatus: Array<{ status: string; count: number }>; }; export default function ReportsPage() { useHqSession(); const [stats, setStats] = useState(null); useEffect(() => { request('/admin/dashboard/stats').then(setStats).catch(() => undefined); }, []); const dist = stats?.ordersByStatus ?? []; const max = Math.max(1, ...dist.map((d) => d.count)); return ( 核心指标 有效用户 {stats?.usersTotal ?? 0} 已验手机 {stats?.verifiedUsers ?? 0} 今日下单 {stats?.ordersToday ?? 0} 今日核销 {stats?.redeemToday ?? 0} 门店 / 合伙人 {stats?.storesTotal ?? 0}/{stats?.partnersTotal ?? 0} 配送单 {stats?.deliveriesTotal ?? 0} 访客未验证 {stats?.guestUsers ?? 0} 已合并 {stats?.mergedUsers ?? 0} 订单状态分布 {dist.length === 0 && 暂无数据} {dist.map((d) => ( {ORDER_STATUS_LABELS[d.status] || d.status} {d.count} ))} ); }