修复授权分页并补齐追回到账诊断验证(09-17-company-loan-principal-repayment)

这个提交包含在:
2026-10-10 21:56:08 +08:00
父节点 db919dc6f6
当前提交 91fe31f0db
共修改 14 个文件,包含 623 行新增和 25 行删除
+2 -2
查看文件
@@ -48,8 +48,8 @@ export type LoanReceiptAttributionState = {
export function fetchCompanyLoans(page: number, lenderId?: string, signal?: AbortSignal) {
return apiRequestData<{ items: CompanyLoan[]; total: number }>(`/api/company-loans?page=${page}&pageSize=30${lenderId ? `&lenderId=${encodeURIComponent(lenderId)}` : ""}`, { signal });
}
export function fetchLoanLenders(page: number, signal?: AbortSignal) {
return apiRequestData<{ items: LoanLender[]; total: number }>(`/api/loan-lenders?page=${page}&pageSize=30`, { signal });
export function fetchLoanLenders(page: number, signal?: AbortSignal, eligible?: "related_authority") {
return apiRequestData<{ items: LoanLender[]; total: number }>(`/api/loan-lenders?page=${page}&pageSize=30${eligible ? `&eligible=${eligible}` : ""}`, { signal });
}
export function fetchLoanRepayments(page: number, signal?: AbortSignal) {
return apiRequestData<{ items: LoanRepayment[]; total: number }>(`/api/loan-repayments?page=${page}&pageSize=30`, { signal });
@@ -20,7 +20,7 @@ export function LoanRelatedAuthorizations({ finance }: { finance: boolean }) {
const [evidence, setEvidence] = useState<{ loanId: string; id: string; name: string } | null>(null);
const [requestKey, setRequestKey] = useState(() => crypto.randomUUID());
const records = useQuery({ queryKey: ["loan-related-authorizations", me?.id, page], queryFn: ({ signal }) => fetchLoanRelatedAuthorizations(page, signal) });
const lenders = useQuery({ queryKey: ["loan-lenders", me?.id, "authorization", lenderPage], queryFn: ({ signal }) => fetchLoanLenders(lenderPage, signal), enabled: finance && action === "propose" });
const lenders = useQuery({ queryKey: ["loan-lenders", me?.id, "authorization", lenderPage], queryFn: ({ signal }) => fetchLoanLenders(lenderPage, signal, "related_authority"), enabled: finance && action === "propose" });
const loans = useQuery({ queryKey: ["company-loans", me?.id, "authorization", lenderId, loanPage], queryFn: ({ signal }) => fetchCompanyLoans(loanPage, lenderId, signal), enabled: finance && action === "propose" && Boolean(lenderId) });
const detail = useQuery({ queryKey: ["loan-related-authorizations", me?.id, selected?.id], queryFn: ({ signal }) => fetchLoanRelatedAuthorization(selected!.id, signal), enabled: Boolean(selected && action && action !== "propose"), staleTime: 0 });
const mutation = useMutation({ mutationFn: async () => {
@@ -34,7 +34,7 @@ export function LoanRelatedAuthorizations({ finance }: { finance: boolean }) {
await Promise.all(["loan-related-authorizations", "payment-batches", "loan-repayments"].map((key) => cache.invalidateQueries({ queryKey: [key] })));
} });
function open(next: Action, record: LoanRelatedAuthorization | null = null) {
mutation.reset(); setAction(next); setSelected(record); setReason(""); setLoanIds([]); setLenderId(""); setLoanPage(1); setRequestKey(crypto.randomUUID());
mutation.reset(); setAction(next); setSelected(record); setReason(""); setLoanIds([]); setLenderId(""); setLenderPage(1); setLoanPage(1); setRequestKey(crypto.randomUUID());
}
const error = mutation.error ?? records.error ?? detail.error ?? lenders.error ?? loans.error;
return <section className="space-y-4" aria-label="公司代表授权范围">