Files
client-web/src/modules/first-leg/utils/orderProgress.ts
T

30 lines
1.3 KiB
TypeScript
Raw Normal View History

2026-10-09 17:36:34 +08:00
import type { MerchantOrderProgress, OrderQueue } from '../api/unifiedOrders'
export const ORDER_QUEUES: ReadonlyArray<{ key: OrderQueue; label: string; todo?: boolean }> = [
{ key: 'all', label: '全部' },
{ key: 'fee', label: '确认计费重', todo: true },
{ key: 'loaded', label: '装柜完成' },
{ key: 'declared', label: '已报关' },
{ key: 'cleared', label: '已清关' },
{ key: 'scheduled', label: '已排车' },
{ key: 'delivering', label: '派送中' },
{ key: 'delivered', label: '派送完成' },
{ key: 'customs', label: '上传资料', todo: true },
{ key: 'draft', label: '草稿' },
]
export function orderProgressLabel(progress?: MerchantOrderProgress) {
if (!progress || progress.stage === 'none') return '—'
const label = ORDER_QUEUES.find(q => q.key === progress.stage)?.label ?? '—'
return `${progress.partial ? '部分' : ''}${label}`
}
export function requireOrderProgress(orderId: string, progress: MerchantOrderProgress) {
if (!progress || String(progress.orderId) !== orderId
|| !['none', 'loaded', 'declared', 'cleared', 'scheduled', 'delivering', 'delivered'].includes(progress.stage)
|| typeof progress.partial !== 'boolean') {
throw new Error('订单履约进度不完整,请重新加载')
}
return progress
}