import { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { TICKET_TYPE_LABELS, type TicketTypeDto } from '@dukang/shared-types'; import SubPageHeader from '../components/SubPageHeader'; import { request } from '../lib/api'; import { usePageView } from '../lib/usePageView'; type TicketRow = { id: string; ticketNo: string; ticketType: TicketTypeDto; status: string; orderNo?: string; remark?: string; createdAt: string; }; const STATUS_LABEL: Record = { PENDING: '待处理', OPEN: '处理中', RESOLVED: '已完成', REJECTED: '已驳回', CLOSED: '已关闭', }; export default function AfterSaleListPage() { usePageView('after_sale_list_view'); const navigate = useNavigate(); const [items, setItems] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { request<{ items: TicketRow[] }>('USER_H5', '/trade/after-sale-tickets?pageSize=50') .then((res) => setItems(res.items ?? [])) .catch(() => setItems([])) .finally(() => setLoading(false)); }, []); return (
navigate(-1)} />
{loading ? (

加载中…

) : items.length === 0 ? (

暂无售后工单

) : (
{items.map((t) => (
{TICKET_TYPE_LABELS[t.ticketType] ?? t.ticketType} {STATUS_LABEL[t.status] ?? t.status}

{t.ticketNo}

订单 {t.orderNo ?? '—'} · {new Date(t.createdAt).toLocaleString()}

{t.remark ?

{t.remark}

: null}
))}
)}
); }