feat(pickup): 新增线下提号列表与详情页
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user