"use client"; import { Eye, Lock } from "lucide-react"; import { useTranslation } from "react-i18next"; import type { SettlementPeriodRow } from "@/api/admin-agent-settlement"; import { AdminTableNoResourceRow } from "@/components/admin/admin-no-resource-state"; import { AdminTableLoadingRow } from "@/components/admin/admin-loading-state"; import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu"; import { AdminStatusBadge } from "@/components/admin/admin-status-badge"; import { formatSettlementPeriodSpan } from "@/lib/agent-settlement-period-range"; import { cn } from "@/lib/utils"; import { formatDashboardMoneyMinor } from "@/modules/dashboard/use-dashboard-analytics"; import { signedSettlementMoneyClass } from "@/modules/settlement/settlement-signed-money"; import { settlementPeriodStatusLabel } from "@/modules/settlement/settlement-status-label"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; const COL_SPAN = 9; type SettlementPeriodsTableProps = { periods: SettlementPeriodRow[]; loading?: boolean; canManage: boolean; busy?: boolean; currencyCode?: string; emptyMessage?: string; onViewDetail: (periodId: number) => void; onRequestClose: (row: SettlementPeriodRow) => void; }; export function SettlementPeriodsTable({ periods, loading = false, canManage, busy = false, currencyCode = "NPR", emptyMessage, onViewDetail, onRequestClose, }: SettlementPeriodsTableProps): React.ReactElement { const { t } = useTranslation(["settlementCenter", "agents", "common"]); const billCount = (row: SettlementPeriodRow): number => (row.summary?.player_bills ?? 0) + (row.summary?.agent_bills ?? 0) + (row.summary?.adjustment_bills ?? 0); const winLossScope = periods.find((row) => row.pipeline?.win_loss_scope)?.pipeline?.win_loss_scope ?? "platform"; const winLossLabel = winLossScope === "agent" ? t("periodTable.agentWinLoss", { defaultValue: "代理输赢" }) : t("periodTable.platformWinLoss", { defaultValue: "平台输赢" }); return (