import React from 'react'; import { Empty, Tag } from 'antd'; import dayjs from 'dayjs'; import relativeTime from 'dayjs/plugin/relativeTime'; dayjs.extend(relativeTime); /** * RelatedOrders 表格组件 * 用于展示订单详情中的关联数据(订阅/订单),按统一表格样式渲染 * 本组件将订阅与订单统一归一化为五列展示,便于快速浏览 */ const RelatedOrders: React.FC<{ data?: any[] }> = ({ data = [] }) => { const rows = (Array.isArray(data) ? data : []).map((it: any) => { const isSubscription = !!it?.externalSubscriptionId || !!it?.billing_period || !!it?.line_items; const number = isSubscription ? `#${it?.externalSubscriptionId || it?.id}` : `#${it?.externalOrderId || it?.id}`; const relationship = isSubscription ? 'Subscription' : 'Order'; const dateRaw = it?.start_date || it?.date_created || it?.createdAt || it?.updatedAt; const dateText = dateRaw ? dayjs(dateRaw).fromNow() : '-'; const status = (isSubscription ? it?.status : it?.orderStatus) || '-'; const statusLower = String(status).toLowerCase(); const color = statusLower === 'active' ? 'green' : statusLower === 'cancelled' ? 'red' : 'default'; const totalNum = Number(it?.total || 0); const totalText = isSubscription ? `$${totalNum.toFixed(2)} / ${it?.billing_period || 'period'}` : `$${totalNum.toFixed(2)}`; return { key: `${isSubscription ? 'sub' : 'order'}-${it?.id}`, number, relationship, dateText, status, color, totalText }; }); if (rows.length === 0) return ; return (
{/* 表头(英文文案,符合国际化默认英文的要求) */}
订单编号
关系
日期
状态
金额
{rows.map((r) => (
{r.number}
{r.relationship}
{r.dateText}
{r.status}
{r.totalText}
))}
); }; export default RelatedOrders;