import { useQuery } from "@tanstack/react-query"; import { fetchApOperations } from "../api/apOperations"; import { PageHeader } from "../components/common/PageHeader"; import { RiskFlagsCard } from "../components/common/RiskFlagsCard"; export function ApOperationsPage() { const summaryQuery = useQuery({ queryKey: ["ap-operations"], queryFn: () => fetchApOperations(), }); if (summaryQuery.isLoading) { return
加载 AP 运营视图...
; } if (summaryQuery.isError || !summaryQuery.data) { return
AP 运营视图加载失败。
; } const data = summaryQuery.data; return (
待付款
{data.summary.pendingPaymentCount}
部分匹配
{data.summary.partialMatchCount}
异常
{data.summary.exceptionCount}
预算超支
{data.summary.budgetOverspendCount}

待付款批次

{data.pendingPaymentBatches.length ? data.pendingPaymentBatches.map((item) => (
{item.batchNo}
{item.name}
{item.entityType} · {item.status} · {item.totalAmount}{item.highRisk ? " · 高风险" : ""}
)) :
暂无待付款批次
}

异常付款项

{data.failedPaymentBatchItems.length ? data.failedPaymentBatchItems.map((item) => (
{item.entityCode}
{item.failureMessage ?? item.failureCode ?? "执行失败"}
{item.amount} {item.currencyCode}
)) :
暂无失败项
}

部分匹配与对账异常

{data.partialMatchItems.length ? data.partialMatchItems.map((item) => (
{item.anomalyCode ?? item.matchStatus}
订单 {item.orderAmount ?? "-"} / 交易 {item.transactionAmount ?? "-"} {item.currency}
)) :
暂无异常
}
); }