优化
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { http, unwrapApiResponse, type ApiEnvelope } from '@/shared/api/http'
|
||||
import type { OceanBookingDetail, OceanBookingPage, OceanBookingQuery, OceanBookingResource, OceanBookingSaveRequest, OceanBookingStatus, OceanBookingReleaseRequest } from '../types'
|
||||
import type { OceanBookingDetail, OceanBookingLinkCandidatePage, OceanBookingLinkCandidateQuery, OceanBookingPage, OceanBookingQuery, OceanBookingResource, OceanBookingSaveRequest, OceanBookingStatus, OceanBookingReleaseRequest } from '../types'
|
||||
|
||||
const basePath = '/platform/v1/ocean-bookings'
|
||||
|
||||
@@ -59,6 +59,27 @@ export async function listOceanBookings(query: OceanBookingQuery) {
|
||||
const result = unwrapApiResponse(response)
|
||||
return { ...result, records: (result.records || []).map(booking), page: pageNumber(result.page, query.page), size: pageNumber(result.size, query.size), total: pageNumber(result.total, 0), pages: pageNumber(result.pages, 0) } satisfies OceanBookingPage
|
||||
}
|
||||
export async function listOceanBookingLinkCandidates(query: OceanBookingLinkCandidateQuery) {
|
||||
const response = await http.get<ApiEnvelope<OceanBookingLinkCandidatePage>, ApiEnvelope<OceanBookingLinkCandidatePage>>(`${basePath}/link-candidates`, { params: query })
|
||||
const result = unwrapApiResponse(response)
|
||||
return {
|
||||
...result,
|
||||
records: (result.records || []).map((candidate) => ({
|
||||
...candidate,
|
||||
oceanBookingId: String(candidate.oceanBookingId),
|
||||
requirementId: String(candidate.requirementId),
|
||||
capacityCbm: Number(candidate.capacityCbm),
|
||||
maxWeightKg: Number(candidate.maxWeightKg),
|
||||
requiredQuantity: Number(candidate.requiredQuantity),
|
||||
allocatedQuantity: Number(candidate.allocatedQuantity),
|
||||
remainingQuantity: Number(candidate.remainingQuantity),
|
||||
})),
|
||||
page: pageNumber(result.page, query.page),
|
||||
size: pageNumber(result.size, query.size),
|
||||
total: pageNumber(result.total, 0),
|
||||
pages: pageNumber(result.pages, 0),
|
||||
} satisfies OceanBookingLinkCandidatePage
|
||||
}
|
||||
export async function getOceanBooking(id: string) { const response = await http.get<ApiEnvelope<OceanBookingDetail>, ApiEnvelope<OceanBookingDetail>>(`${basePath}/${encodeURIComponent(id)}`); return detail(unwrapApiResponse(response)) }
|
||||
function idempotencyKey() { return `ocean-booking-${Date.now()}-${Math.random().toString(36).slice(2)}` }
|
||||
export async function createOceanBooking(payload: OceanBookingSaveRequest) { const response = await http.post<ApiEnvelope<OceanBookingDetail>, ApiEnvelope<OceanBookingDetail>>(basePath, payload, { headers: { 'Idempotency-Key': idempotencyKey() } }); return detail(unwrapApiResponse(response)) }
|
||||
|
||||
Reference in New Issue
Block a user