29 lines
2.2 KiB
JavaScript
29 lines
2.2 KiB
JavaScript
import { overseasRequest } from './overseas.js'
|
|
|
|
const text = value => typeof value === 'string' ? value : ''
|
|
const transport = value => ({ vehiclePlate: text(value?.vehiclePlate), driverName: text(value?.driverName), driverPhone: text(value?.driverPhone) })
|
|
export function normalizeHandoverStatus(value) {
|
|
if (!value?.dispatchNo || !value?.tripNo || !Array.isArray(value.deliveries)) throw new Error('交接状态缺少排车或派送依据')
|
|
return {
|
|
dispatchNo: text(value.dispatchNo), tripNo: text(value.tripNo), tripStatus: text(value.tripStatus),
|
|
tripRecordVersion: value.tripRecordVersion == null ? '' : String(value.tripRecordVersion),
|
|
originalDeparture: transport(value.originalDeparture),
|
|
deliveries: value.deliveries.map(row => {
|
|
const packages = Number(row.packages)
|
|
if (!row.deliveryNo || row.packages == null || String(row.packages).trim() === '' || !Number.isSafeInteger(packages) || packages <= 0) throw new Error('交接状态中的派送箱数无效')
|
|
const remainingPackages = Number(row.remainingPackages)
|
|
if (row.remainingPackages == null || String(row.remainingPackages).trim() === '' || !Number.isSafeInteger(remainingPackages) || remainingPackages < 0 || remainingPackages > packages) throw new Error('交接状态中的剩余箱数无效')
|
|
return { deliveryNo: text(row.deliveryNo), status: text(row.status), packages, remainingPackages, terminalAt: text(row.terminalAt), transport: transport(row.transport) }
|
|
}),
|
|
latestHandover: value.latestHandover ? { handoverNo: text(value.latestHandover.handoverNo), handedOverAt: text(value.latestHandover.handedOverAt),
|
|
location: text(value.latestHandover.location), previous: transport(value.latestHandover.previous), replacement: transport(value.latestHandover.replacement) } : null
|
|
}
|
|
}
|
|
export async function getDispatchHandoverStatus(dispatchNo) {
|
|
const number = String(dispatchNo || '').trim()
|
|
if (!number) throw new Error('请先打开排车任务')
|
|
const result = normalizeHandoverStatus(await overseasRequest('GET', `/pda/v1/last-leg/dispatches/${encodeURIComponent(number)}/handover-status`))
|
|
if (result.dispatchNo !== number) throw new Error('返回的交接记录不属于当前排车任务')
|
|
return result
|
|
}
|