114 lines
3.9 KiB
TypeScript
114 lines
3.9 KiB
TypeScript
import { overseasHttp } from '@/shared/api/overseasHttp'
|
|
import { unwrapApiResponse, type ApiEnvelope } from '@/shared/api/http'
|
|
import { normalizeOverseasPage, type OverseasPagePayload } from './lastMileOrders'
|
|
|
|
export interface InboundOrderQuery {
|
|
page: number
|
|
size: number
|
|
planNo?: string
|
|
inboundCode?: string
|
|
lxCode?: string
|
|
status?: string
|
|
warehouse?: string
|
|
fbaWarehouseCode?: string
|
|
appointmentStatus?: string
|
|
dispatchStatus?: string
|
|
createdFrom?: string
|
|
createdTo?: string
|
|
}
|
|
|
|
export interface InboundOrderSummaryDto {
|
|
lineId: string
|
|
planId: string
|
|
planNo: string
|
|
customerId: string
|
|
orderId: string
|
|
inboundCode?: string | null
|
|
lxCode?: string | null
|
|
orderType?: string | null
|
|
overseasWarehouseCode?: string | null
|
|
overseasWarehouseName?: string | null
|
|
warehouseId?: string | null
|
|
warehouseCode?: string | null
|
|
warehouseName?: string | null
|
|
fbaWarehouseCode?: string | null
|
|
customerName?: string | null
|
|
packageCount?: number | null
|
|
pickedPackageCount?: number | null
|
|
volumeCbm?: number | null
|
|
palletCount?: number | null
|
|
assigned?: boolean | null
|
|
mergeAllowed?: boolean | null
|
|
urgent?: boolean | null
|
|
status?: string | null
|
|
appointmentNo?: string | null
|
|
appointmentStatus?: string | null
|
|
appointmentAt?: string | null
|
|
expectedLoadingAt?: string | null
|
|
dispatchStatus?: string | null
|
|
createdAt?: string | null
|
|
version?: number | null
|
|
}
|
|
|
|
export interface BatchFbaAppointmentPayload {
|
|
customerId: string
|
|
lineIds: string[]
|
|
appointmentNo: string
|
|
appointmentAt: string
|
|
expectedLoadingAt: string
|
|
appointmentStatus: 'PENDING' | 'SUCCESS' | 'FAILED' | 'CANCELLED'
|
|
appointmentRemark?: string
|
|
}
|
|
|
|
export interface FbaAppointmentDto {
|
|
id: string
|
|
customerId: string
|
|
appointmentNo: string
|
|
appointmentAt: string
|
|
expectedLoadingAt: string
|
|
appointmentStatus: string
|
|
appointmentRemark?: string | null
|
|
selectedCount: number
|
|
fbaWarehouseCode: string
|
|
items: Array<{ id: string; planId: string; lineId: string; orderId: string; inboundCode: string; fbaWarehouseCode: string }>
|
|
}
|
|
|
|
export type UpdateFbaAppointmentPayload = Omit<BatchFbaAppointmentPayload, 'lineIds' | 'appointmentNo'>
|
|
|
|
export async function listInboundOrders(query: InboundOrderQuery) {
|
|
const response = await overseasHttp.get<ApiEnvelope<OverseasPagePayload<InboundOrderSummaryDto>>, ApiEnvelope<OverseasPagePayload<InboundOrderSummaryDto>>>(
|
|
'/platform/v1/last-leg/inbound-plans', { params: query },
|
|
)
|
|
return normalizeOverseasPage(unwrapApiResponse(response))
|
|
}
|
|
|
|
export async function createFbaAppointment(payload: BatchFbaAppointmentPayload) {
|
|
const response = await overseasHttp.post<ApiEnvelope<FbaAppointmentDto>, ApiEnvelope<FbaAppointmentDto>>(
|
|
'/platform/v1/last-leg/inbound-plans/fba-appointments/batch', payload,
|
|
)
|
|
return unwrapApiResponse(response)
|
|
}
|
|
|
|
export async function getFbaAppointment(customerId: string, appointmentNo: string) {
|
|
const response = await overseasHttp.get<ApiEnvelope<FbaAppointmentDto>, ApiEnvelope<FbaAppointmentDto>>(
|
|
`/platform/v1/last-leg/inbound-plans/fba-appointments/${encodeURIComponent(appointmentNo)}`,
|
|
{ params: { customerId } },
|
|
)
|
|
return unwrapApiResponse(response)
|
|
}
|
|
|
|
export async function updateFbaAppointment(appointmentNo: string, payload: UpdateFbaAppointmentPayload) {
|
|
const response = await overseasHttp.put<ApiEnvelope<FbaAppointmentDto>, ApiEnvelope<FbaAppointmentDto>>(
|
|
`/platform/v1/last-leg/inbound-plans/fba-appointments/${encodeURIComponent(appointmentNo)}`,
|
|
payload,
|
|
)
|
|
return unwrapApiResponse(response)
|
|
}
|
|
|
|
export async function updateInboundPlan(planNo: string, payload: { customerId: string; overseasWarehouseId: string; warehouseCode?: string; warehouseName?: string; version: number }) {
|
|
const response = await overseasHttp.put<ApiEnvelope<InboundOrderSummaryDto>, ApiEnvelope<InboundOrderSummaryDto>>(
|
|
`/platform/v1/last-leg/inbound-plans/${encodeURIComponent(planNo)}`, payload,
|
|
)
|
|
return unwrapApiResponse(response)
|
|
}
|