修复授权分页并补齐追回到账诊断验证(09-17-company-loan-principal-repayment)
这个提交包含在:
@@ -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="公司代表授权范围">
|
||||
|
||||
在新工单中引用
屏蔽一个用户