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}
)) :
暂无异常
}
);
}