feat(reimbursement-small-team-form-validation): 完善付款批次核对与回单预览
这个提交包含在:
@@ -25,6 +25,15 @@ export type PaymentBatchItem = {
|
||||
failureMessage: string | null;
|
||||
createdAt: string | null;
|
||||
openRiskFlags: RiskFlag[];
|
||||
expenseItems?: Array<{
|
||||
id: string;
|
||||
expenseTypeName: string;
|
||||
expenseDate: string | null;
|
||||
description: string;
|
||||
amount: string;
|
||||
}>;
|
||||
expenseItemsTotal?: string;
|
||||
expenseItemsAmountMatches?: boolean;
|
||||
};
|
||||
|
||||
export type PaymentBatch = {
|
||||
@@ -235,6 +244,14 @@ export async function downloadPaymentBatchReceiptAttachment(
|
||||
return apiRequestBlob(buildAttachmentFileUrl(paymentBatchReceiptAttachmentFileUrl(batchId, attachmentId), reason));
|
||||
}
|
||||
|
||||
export async function previewPaymentBatchReceiptAttachment(
|
||||
batchId: string,
|
||||
attachmentId: string,
|
||||
): Promise<ApiBlobResponse> {
|
||||
const params = new URLSearchParams({ mode: "preview" });
|
||||
return apiRequestBlob(`${paymentBatchReceiptAttachmentFileUrl(batchId, attachmentId)}?${params.toString()}`);
|
||||
}
|
||||
|
||||
export async function voidPaymentBatchReceiptAttachment(batchId: string, attachmentId: string, reason: string) {
|
||||
return apiRequestData<{ attachmentId: string; outcome: "voided"; voidedAt: string }>(
|
||||
`/api/payment-batches/${batchId}/receipt-attachments/${attachmentId}/void`,
|
||||
|
||||
在新工单中引用
屏蔽一个用户