feat: add dropship palletization workflow
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
import { apiRequest } from '@/api/http.js'
|
||||
|
||||
const ROOT = '/first-leg/pda-dropship'
|
||||
|
||||
function requireValue(value, message) {
|
||||
if (value === null || value === undefined || value === '') throw new Error(message)
|
||||
}
|
||||
|
||||
function operationHeader(operationId) {
|
||||
return operationId ? { 'Idempotency-Key': String(operationId) } : {}
|
||||
}
|
||||
|
||||
export function listDropshipPalletizingTasks(keyword = '') {
|
||||
const query = keyword ? `?keyword=${encodeURIComponent(String(keyword).trim())}` : ''
|
||||
return apiRequest({ url: `${ROOT}/tasks/pending${query}`, method: 'GET' })
|
||||
}
|
||||
|
||||
export function getDropshipPalletizingTask(taskId, warehouseId) {
|
||||
requireValue(taskId, '缺少清点组托任务标识')
|
||||
requireValue(warehouseId, '缺少作业仓库标识')
|
||||
return apiRequest({ url: `${ROOT}/tasks/${encodeURIComponent(taskId)}?warehouseId=${encodeURIComponent(warehouseId)}`, method: 'GET' })
|
||||
}
|
||||
|
||||
export function resolveDropshipCarton(taskId, warehouseId, boxCode) {
|
||||
requireValue(taskId, '缺少清点组托任务标识')
|
||||
requireValue(warehouseId, '缺少作业仓库标识')
|
||||
requireValue(boxCode, '缺少箱码')
|
||||
return apiRequest({ url: `${ROOT}/tasks/${encodeURIComponent(taskId)}/cartons/resolve?warehouseId=${encodeURIComponent(warehouseId)}&boxCode=${encodeURIComponent(String(boxCode).trim())}`, method: 'GET' })
|
||||
}
|
||||
|
||||
export function claimDropshipPalletizingTask(taskId, warehouseId) {
|
||||
requireValue(taskId, '缺少清点组托任务标识')
|
||||
requireValue(warehouseId, '缺少作业仓库标识')
|
||||
return apiRequest({ url: `${ROOT}/tasks/${encodeURIComponent(taskId)}/claim`, method: 'POST', data: { warehouseId } })
|
||||
}
|
||||
|
||||
export function countDropshipCarton(taskId, payload = {}) {
|
||||
requireValue(taskId, '缺少清点组托任务标识')
|
||||
for (const [field, message] of [['warehouseId', '缺少作业仓库标识'], ['boxCode', '缺少箱码'], ['actualSkuQuantity', '缺少 SKU 实收数量'], ['discrepancyAction', '缺少差异处理动作'], ['operationId', '缺少操作幂等标识']]) requireValue(payload[field], message)
|
||||
return apiRequest({
|
||||
url: `${ROOT}/tasks/${encodeURIComponent(taskId)}/cartons/count`,
|
||||
method: 'POST',
|
||||
header: operationHeader(payload.operationId),
|
||||
data: {
|
||||
warehouseId: payload.warehouseId,
|
||||
boxCode: payload.boxCode,
|
||||
actualSkuQuantity: payload.actualSkuQuantity,
|
||||
discrepancyAction: payload.discrepancyAction,
|
||||
discrepancyRemark: payload.discrepancyRemark || null,
|
||||
palletNo: payload.palletNo || null,
|
||||
operationId: payload.operationId
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export function bindPendingDropshipCartons(taskId, payload = {}) {
|
||||
for (const [field, message] of [['warehouseId', '缺少作业仓库标识'], ['palletNo', '缺少托盘码'], ['operationId', '缺少操作幂等标识']]) requireValue(payload[field], message)
|
||||
return apiRequest({ url: `${ROOT}/tasks/${encodeURIComponent(taskId)}/pallets/bind-pending`, method: 'POST', header: operationHeader(payload.operationId), data: payload })
|
||||
}
|
||||
|
||||
export function moveDropshipCarton(taskId, cartonId, payload = {}) {
|
||||
requireValue(cartonId, '缺少箱明细标识')
|
||||
for (const [field, message] of [['warehouseId', '缺少作业仓库标识'], ['operationId', '缺少操作幂等标识']]) requireValue(payload[field], message)
|
||||
return apiRequest({
|
||||
url: `${ROOT}/tasks/${encodeURIComponent(taskId)}/cartons/${encodeURIComponent(cartonId)}/move`,
|
||||
method: 'POST',
|
||||
header: operationHeader(payload.operationId),
|
||||
data: { warehouseId: payload.warehouseId, targetPalletNo: payload.targetPalletNo || null, operationId: payload.operationId }
|
||||
})
|
||||
}
|
||||
|
||||
export function sealDropshipPallet(taskId, palletId, payload = {}) {
|
||||
requireValue(palletId, '缺少托盘标识')
|
||||
for (const [field, message] of [['warehouseId', '缺少作业仓库标识'], ['operationId', '缺少操作幂等标识'], ['expectedVersion', '缺少托盘版本']]) requireValue(payload[field], message)
|
||||
return apiRequest({ url: `${ROOT}/tasks/${encodeURIComponent(taskId)}/pallets/${encodeURIComponent(palletId)}/seal`, method: 'POST', header: operationHeader(payload.operationId), data: payload })
|
||||
}
|
||||
Reference in New Issue
Block a user