import request from '@/utils/http' type PageList = { list: T[] total: number page: number pageSize: number totalPages: number } /** 采集协议单列表项(camelCase,与后端一致) */ export type CollectionProtocolRow = Record export function fetchCollectionProtocolList(params?: { page?: number pageSize?: number projectId?: string teamId?: string keyword?: string protocolStatus?: string createTimeStart?: string createTimeEnd?: string sampleCollectTimeStart?: string sampleCollectTimeEnd?: string }) { return request.get>({ url: '/web/admin/collection-protocols', params }) } export type ProtocolRegionManager = { id: string; nickName: string; regionIds: string[] } export function fetchProtocolRegionManagers() { return request.get<{ list: ProtocolRegionManager[] }>({ url: '/web/admin/collection-protocols/region-managers' }) } export function fetchCollectionProtocolDetail(id: string) { return request.get<{ protocol: Record partyCustomer: Record | null collectionInfo: Record | null samples: Array> | null payment: Record | null paymentDetails: Array> | null samplePayments?: Array> | null attachments?: Array> storageCert?: Record | null }>({ url: `/web/admin/collection-protocols/${id}` }) } export function fetchCollectionProtocolStatusChanges(protocolId: string) { return request.get<{ list: Array> }>({ url: `/web/admin/collection-protocols/${protocolId}/status-changes` }) } export function fetchCollectionProtocolOperationLogs(protocolId: string) { return request.get<{ list: Array> }>({ url: `/web/admin/collection-protocols/${protocolId}/operation-logs` }) } export function fetchCollectionProtocolAuditList(params?: { page?: number pageSize?: number keyword?: string auditStatus?: string collectionProtocolId?: string }) { return request.get>>({ url: '/web/admin/collection-protocol-audits', params }) } export function fetchSubmitProtocolAudit( protocolId: string, data: { auditStatus: string; auditRemark?: string }, options?: { showSuccessMessage?: boolean } ) { return request.post({ url: `/web/admin/collection-protocols/${protocolId}/audit`, data, showSuccessMessage: options?.showSuccessMessage ?? true }) } export function fetchReceiptConfirmList(params?: { page?: number pageSize?: number keyword?: string installmentDueDateStart?: string installmentDueDateEnd?: string }) { return request.get>>({ url: '/web/admin/protocol-payment-details/receipt-confirm', params }) } export function fetchReceiptConfirmedList(params?: { page?: number pageSize?: number keyword?: string installmentDueDateStart?: string installmentDueDateEnd?: string }) { return request.get>>({ url: '/web/admin/protocol-payment-details/receipt-confirmed', params }) } export function fetchReceiptConfirmSubmit( detailId: string, data?: { financeConfirmAttachments?: string; financeRemark?: string } ) { return request.post({ url: `/web/admin/protocol-payment-details/${detailId}/receipt-confirm`, data: data || {}, showSuccessMessage: true }) } export function fetchReceiptConfirmReject(detailId: string) { return request.post({ url: `/web/admin/protocol-payment-details/${detailId}/receipt-reject`, showSuccessMessage: true }) } export function fetchRefundConfirmList(params?: { page?: number pageSize?: number keyword?: string installmentDueDateStart?: string installmentDueDateEnd?: string }) { return request.get>>({ url: '/web/admin/protocol-payment-details/refund-confirm', params }) } export function fetchRefundConfirmedList(params?: { page?: number pageSize?: number keyword?: string installmentDueDateStart?: string installmentDueDateEnd?: string }) { return request.get>>({ url: '/web/admin/protocol-payment-details/refund-confirmed', params }) } export function fetchRefundConfirmSubmit( detailId: string, data?: { refundFinanceConfirmAttachments?: string; refundFinanceRemark?: string } ) { return request.post({ url: `/web/admin/protocol-payment-details/${detailId}/refund-confirm`, data: data || {}, showSuccessMessage: true }) } export function fetchRefundConfirmReject(detailId: string) { return request.post({ url: `/web/admin/protocol-payment-details/${detailId}/refund-reject`, showSuccessMessage: true }) } export type PaymentDetailDraftPayload = { transferType?: string transferAmount?: number | null transferTime?: string | null transferAttachments?: string remark?: string } export function fetchUpdatePaymentDetailDraft( detailId: string, data: PaymentDetailDraftPayload, options?: { showSuccessMessage?: boolean } ) { return request.put({ url: `/web/admin/protocol-payment-details/${detailId}`, data, showSuccessMessage: options?.showSuccessMessage ?? true }) } export function fetchSubmitReceiptFinance( detailId: string, data?: PaymentDetailDraftPayload, options?: { showSuccessMessage?: boolean } ) { return request.post({ url: `/web/admin/protocol-payment-details/${detailId}/submit-receipt-finance`, data: data || {}, showSuccessMessage: options?.showSuccessMessage !== false }) } export function fetchSubmitReceiptFinanceBatch(detailIds: string[]) { return request.post({ url: '/web/admin/protocol-payment-details/submit-receipt-finance-batch', data: { detailIds }, showSuccessMessage: true }) } export function fetchSubmitRefundFinance( detailId: string, data: { refundAmount: number refundRemark?: string refundAttachments?: string } ) { return request.post({ url: `/web/admin/protocol-payment-details/${detailId}/submit-refund-finance`, data, showSuccessMessage: true }) } export function fetchSubmitRefundFinanceBatch(data: { detailIds: string[] refundAmount: number refundRemark?: string refundAttachments?: string }) { return request.post({ url: '/web/admin/protocol-payment-details/submit-refund-finance-batch', data, showSuccessMessage: true }) } export function fetchPaymentDetailList(params?: { page?: number pageSize?: number payStatus?: string keyword?: string transferType?: string installmentDueDateStart?: string installmentDueDateEnd?: string }) { return request.get>>({ url: '/web/admin/protocol-payment-details', params }) } export function fetchCreateCollectionProtocol(data: Record) { return request.post({ url: '/web/admin/collection-protocols', data, showSuccessMessage: true }) } export function fetchUpdateCollectionProtocol(id: string, data: Record) { return request.put({ url: `/web/admin/collection-protocols/${id}`, data, showSuccessMessage: true }) } export function fetchDeleteCollectionProtocol(id: string) { return request.del({ url: `/web/admin/collection-protocols/${id}`, showSuccessMessage: true }) } export function fetchInvoiceEligiblePayments(protocolId: string) { return request.get<{ list: Record[]; total: number }>({ url: `/web/admin/collection-protocols/${protocolId}/invoice-eligible-payments` }) } export function fetchProtocolInvoiceRequests(protocolId: string) { return request.get<{ list: Record[]; total: number }>({ url: `/web/admin/collection-protocols/${protocolId}/invoice-requests` }) } export function fetchCreateProtocolInvoiceRequest( protocolId: string, data: { paymentDetailIds: string[] invoiceTitle?: string taxNo?: string companyAddress?: string companyPhone?: string bankName?: string bankAccount?: string applyRemark?: string } ) { return request.post({ url: `/web/admin/collection-protocols/${protocolId}/invoice-requests`, data, showSuccessMessage: true }) } export function fetchProtocolInvoiceRequestList(params: { status: 'dkp' | 'ykp' page?: number pageSize?: number keyword?: string }) { return request.get>>({ url: '/web/admin/protocol-invoice-requests', params }) } export function fetchProtocolInvoicePendingCount() { return request.get<{ count: number }>({ url: '/web/admin/protocol-invoice-requests/pending-count' }) } export function fetchCompleteProtocolInvoiceRequest( requestId: string, data: { invoiceAttachments: string; financeRemark?: string } ) { return request.put({ url: `/web/admin/protocol-invoice-requests/${requestId}/complete`, data, showSuccessMessage: true }) }