Files
pda-uniapp/api/pda-dropship.js
T

83 lines
4.5 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 createAndBindDropshipPallet(taskId, payload = {}) {
requireValue(taskId, '缺少清点组托任务标识')
for (const [field, message] of [['warehouseId', '缺少作业仓库标识'], ['operationId', '缺少操作幂等标识']]) requireValue(payload[field], message)
return apiRequest({ url: `${ROOT}/tasks/${encodeURIComponent(taskId)}/pallets/create-and-bind`, method: 'POST', header: operationHeader(payload.operationId), data: { warehouseId: payload.warehouseId, operationId: payload.operationId } })
}
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 })
}