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}`
|
|
|
|
|
}
|
2026-10-15 19:39:35 +08:00
|
|
|
|
|
|
|
|
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
|
|
|
|
|
}
|