Files
client-web/src/modules/order-management/api/deliveryOrders.ts
T

164 lines
3.8 KiB
TypeScript
Raw Normal View History

2026-08-30 16:40:11 +08:00
import { overseasApiRequest } from '@/api/overseasHttp'
2026-09-01 14:24:00 +08:00
export interface PageResult<T> {
records: T[]
page: number
size: number
total: number
pages: number
}
export interface DeliveryRow {
id: string
deliveryNo: string
outboundNo: string | null
dispatchNo: string
overseasWarehouseName: string | null
status: string
waybillNo: string | null
deliveryMethod: string
carrierName: string | null
vehiclePlate: string | null
driverName: string | null
palletCount: number
packageCount: number
totalWeightKg: number | null
totalVolumeCbm: number | null
plannedDeliveryAt: string
expectedArrivalAt: string | null
signedAt: string | null
createdAt: string
}
export interface DeliveryOrderFee {
id?: string
feeType: string
currency: string
amount: number
remark?: string | null
}
export interface DeliveryOrderItem {
id?: string
palletNo?: string | null
inboundCode?: string | null
skuCode?: string | null
productName?: string | null
packageCount?: number | null
weightKg?: number | null
volumeCbm?: number | null
}
export interface DeliveryOrderDetail extends DeliveryRow {
pickupMethod: string
loadingType: string
vehicleType: string | null
vehicleSize: string | null
driverPhone: string | null
appointmentAccount: string | null
sellerName: string | null
remark: string | null
fees: DeliveryOrderFee[]
items?: DeliveryOrderItem[] | PageResult<DeliveryOrderItem>
updatedAt?: string | null
}
2026-09-02 02:39:56 +08:00
interface DeliveryOrderDetailResponse {
order: Omit<DeliveryOrderDetail, 'fees' | 'items' | 'updatedAt'>
skus: DeliveryOrderItem[]
fees: DeliveryOrderFee[]
operations: Array<{
id: string
operatedAt: string
operationNode: string
operatorName: string
result: string
}>
}
export interface DeliveryTransferResult {
dispatchNo: string
outboundNo: string
outboundStatus: string
deliveryNo: string
deliveryStatus: string
palletCount: number
packageCount: number
replayed: boolean
}
2026-09-01 14:24:00 +08:00
export interface DeliveryQuery {
page: number
size: number
documentNo?: string
warehouseId?: string
status?: string
dispatchNo?: string
waybillNo?: string
vehiclePlate?: string
driverName?: string
deliveryMethod?: string
plannedFrom?: string
plannedTo?: string
}
2026-09-03 20:20:29 +08:00
export function normalizeDeliveryPage(data: PageResult<DeliveryRow>): PageResult<DeliveryRow> {
return {
...data,
page: Number(data.page),
size: Number(data.size),
total: Number(data.total),
pages: Number(data.pages),
}
}
2026-09-01 14:24:00 +08:00
export interface DeliveryTransferPayload {
dispatchNo: string
idempotencyKey: string
plannedDeliveryAt: string
deliveryMethod: string
pickupMethod: string
loadingType: string
waybillNo?: string
carrierName?: string
vehicleType?: string
vehicleSize?: string
driverName?: string
driverPhone?: string
vehiclePlate?: string
appointmentAccount?: string
sellerName?: string
remark?: string
fees: DeliveryOrderFee[]
}
2026-08-30 16:40:11 +08:00
export function listDeliveryOrders(params: DeliveryQuery) {
2026-09-01 14:24:00 +08:00
return overseasApiRequest<PageResult<DeliveryRow>>({
method: 'GET',
url: '/merchant/v1/last-leg/delivery-orders',
params,
2026-09-03 20:20:29 +08:00
}).then(normalizeDeliveryPage)
2026-08-30 16:40:11 +08:00
}
2026-09-01 14:24:00 +08:00
2026-08-30 16:40:11 +08:00
export function getDeliveryOrder(deliveryNo: string) {
2026-09-02 02:39:56 +08:00
return overseasApiRequest<DeliveryOrderDetailResponse>({
2026-09-01 14:24:00 +08:00
method: 'GET',
url: `/merchant/v1/last-leg/delivery-orders/${encodeURIComponent(deliveryNo)}`,
params: { page: 1, size: 200 },
2026-09-02 02:39:56 +08:00
}).then(({ order, skus, fees }) => ({
...order,
fees,
items: skus,
}))
2026-08-30 16:40:11 +08:00
}
2026-09-01 14:24:00 +08:00
2026-08-30 16:40:11 +08:00
export function createDeliveryOrder(payload: DeliveryTransferPayload) {
const { dispatchNo, ...request } = payload
2026-09-02 02:39:56 +08:00
return overseasApiRequest<DeliveryTransferResult>({
2026-09-01 14:24:00 +08:00
method: 'POST',
url: '/merchant/v1/last-leg/delivery-orders',
params: { dispatchNo },
data: request,
})
2026-08-30 16:40:11 +08:00
}