统一业务列表 Ant Design 风格(05-31-unify-business-list-ant-design)

这个提交包含在:
2026-05-31 11:39:46 +08:00
父节点 59c942da54
当前提交 40c23c5cf3
共修改 19 个文件,包含 905 行新增和 578 行删除
+1 -27
查看文件
@@ -1,4 +1,4 @@
import { useEffect, useMemo, useRef, useState } from "react";
import { useEffect, useRef, useState } from "react";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { useSearchParams } from "react-router-dom";
import { isApiError } from "../api/types";
@@ -454,16 +454,6 @@ export function InvoicePoolPage() {
const totalPages = Math.max(1, Math.ceil((listQuery.data?.total ?? 0) / PAGE_SIZE));
const detail = detailQuery.data;
const invoiceStats = useMemo(() => {
const items = listQuery.data?.items ?? [];
return {
total: listQuery.data?.total ?? 0,
pending: items.filter((item) => item.status === "pending_ocr").length,
failed: items.filter((item) => item.status === "ocr_failed").length,
available: items.filter((item) => item.status === "available").length,
bound: items.filter((item) => item.status === "bound").length,
};
}, [listQuery.data?.items, listQuery.data?.total]);
const canEditDetail = Boolean(
detail &&
(canManageInvoice ||
@@ -568,22 +558,6 @@ export function InvoicePoolPage() {
</div>
) : null}
{!isInvoiceDetailMode ? (
<div className="flex flex-wrap gap-2" data-testid="invoice-pool-summary">
{[
["全部", invoiceStats.total],
["识别中", invoiceStats.pending],
["识别失败", invoiceStats.failed],
["可绑定", invoiceStats.available],
["已绑定", invoiceStats.bound],
].map(([label, value]) => (
<span key={label} className="rounded-full border border-zinc-200 bg-white px-3 py-1 text-sm text-zinc-700">
{label} <span className="font-semibold text-zinc-900">{value}</span>
</span>
))}
</div>
) : null}
{!isInvoiceDetailMode ? (
<InvoiceListCard
listQuery={listQuery}