77 lines
3.9 KiB
JavaScript
77 lines
3.9 KiB
JavaScript
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 })
|
|
}
|