feat(pickup): 新增线下提号列表与详情页

This commit is contained in:
yml2213
2026-10-30 16:45:25 +08:00
parent c0c9f161ae
commit 030cedb6fd
9 changed files with 1643 additions and 14 deletions
+159
View File
@@ -102,6 +102,14 @@ import type {
AdminPaymentQuery,
AdminWalletLedgerPage,
AdminWalletLedgerQuery,
AdminPickup,
AdminPickupAvailableListing,
AdminPickupCreatePayload,
AdminPickupFinancialAdjustment,
AdminPickupPage,
AdminPickupProcessEvent,
AdminPickupQuery,
AdminPickupShop,
ManualDisbursementPayload,
OperatingExpensePage,
OperatingExpensePayload,
@@ -1396,3 +1404,154 @@ export async function fetchAdminWalletLedger(query: AdminWalletLedgerQuery = {})
}
}
export async function fetchAdminPickups(query: AdminPickupQuery = {}) {
const { data } = await adminClient.get<ApiResponse<Partial<AdminPickupPage>>>('/admin/pickups', {
params: compactParams(query),
})
return {
items: data.data.items ?? [],
total: data.data.total ?? 0,
page: data.data.page ?? query.page ?? 1,
page_size: data.data.page_size ?? query.page_size ?? 20,
}
}
export async function fetchAdminPickup(id: number | string) {
const { data } = await adminClient.get<ApiResponse<AdminPickup>>(`/admin/pickups/${id}`)
return data.data
}
export async function createAdminPickup(payload: AdminPickupCreatePayload) {
const { data } = await adminClient.post<ApiResponse<AdminPickup>>('/admin/pickups', payload)
return data.data
}
export async function completeAdminPickup(
id: number | string,
payload: { settle_amount_cent: number; profit_amount_cent?: number; complete_remark?: string }
) {
const { data } = await adminClient.post<ApiResponse<AdminPickup>>(
`/admin/pickups/${id}/complete`,
payload
)
return data.data
}
export async function cancelAdminPickup(id: number | string, reason: string) {
const { data } = await adminClient.post<ApiResponse<AdminPickup>>(
`/admin/pickups/${id}/cancel`,
{ reason }
)
return data.data
}
export async function markAdminPickupOfflineSettlement(id: number | string, remark: string) {
const { data } = await adminClient.post<ApiResponse<AdminPickup>>(
`/admin/pickups/${id}/offline-settlement`,
{ remark }
)
return data.data
}
export async function updateAdminPickupProfit(
id: number | string,
payload: { profit_amount_cent: number; reason?: string }
) {
const { data } = await adminClient.put<ApiResponse<AdminPickup>>(
`/admin/pickups/${id}/profit`,
payload
)
return data.data
}
export async function updateAdminPickupThirdPartyOrderNo(id: number | string, value: string) {
const { data } = await adminClient.put<ApiResponse<AdminPickup>>(
`/admin/pickups/${id}/third-party-order-no`,
{ third_party_order_no: value }
)
return data.data
}
export async function fetchAdminPickupShops(platform = '') {
const { data } = await adminClient.get<ApiResponse<AdminPickupShop[]>>('/admin/pickups/shops', {
params: platform ? { platform } : undefined,
})
return data.data ?? []
}
export async function createAdminPickupShop(payload: {
name: string
platform?: string
sort_order?: number
remark?: string
}) {
const { data } = await adminClient.post<ApiResponse<AdminPickupShop>>(
'/admin/pickups/shops',
payload
)
return data.data
}
export async function deleteAdminPickupShop(id: number) {
await adminClient.delete(`/admin/pickups/shops/${id}`)
}
export async function fetchAdminPickupShopOptions(platform = '') {
const { data } = await adminClient.get<ApiResponse<string[]>>('/admin/pickups/shop-options', {
params: platform ? { platform } : undefined,
})
return data.data ?? []
}
export async function fetchAdminPickupAvailableListings(query: {
keyword?: string
source_type?: string
page?: number
page_size?: number
}) {
const { data } = await adminClient.get<
ApiResponse<{ items?: AdminPickupAvailableListing[]; total?: number }>
>('/admin/pickups/available-listings', { params: compactParams(query) })
return {
items: data.data.items ?? [],
total: data.data.total ?? 0,
}
}
export async function fetchAdminPickupProcessEvents(id: number | string) {
const { data } = await adminClient.get<ApiResponse<{ items: AdminPickupProcessEvent[] }>>(
`/admin/pickups/${id}/process-events`
)
return data.data.items ?? []
}
export async function fetchAdminPickupFinancialAdjustments(id: number | string) {
const { data } = await adminClient.get<ApiResponse<AdminPickupFinancialAdjustment[]>>(
`/admin/pickups/${id}/financial-adjustments`
)
return data.data ?? []
}
export async function createAdminPickupFinancialAdjustment(
id: number | string,
payload: { profit_amount_cent?: number; settle_amount_cent?: number; reason: string }
) {
const { data } = await adminClient.post<ApiResponse<AdminPickupFinancialAdjustment>>(
`/admin/pickups/${id}/financial-adjustments`,
payload
)
return data.data
}
export async function settleAdminPickupFinancialAdjustment(
adjustmentId: number,
remark: string
) {
const { data } = await adminClient.post<ApiResponse<AdminPickupFinancialAdjustment>>(
`/admin/pickup-financial-adjustments/${adjustmentId}/settle`,
{ remark }
)
return data.data
}