From 53cb68a8bcffc7877ada6af1b4388b5616a00090 Mon Sep 17 00:00:00 2001 From: liuyihe <2513762445@qq.com> Date: Mon, 19 Oct 2026 16:40:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 + api/pda-dropship.js | 8 ++ .../dropship-palletization.vue | 85 ++++++++++++++----- pages/dropship-tasks/dropship-tasks.vue | 6 +- tests/dropship-palletization.test.mjs | 5 +- tests/dropship-palletizing-page.test.mjs | 2 +- tests/dropship-workspace.test.mjs | 72 ++++++++++++++++ 7 files changed, 152 insertions(+), 28 deletions(-) create mode 100644 tests/dropship-workspace.test.mjs diff --git a/README.md b/README.md index d741926..c14c98b 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ 一件代发清点组托只调用 Firstleg 的 `/first-leg/pda-dropship` 正式接口。正式入口沿用 `pages/dropship-tasks/dropship-tasks` 和 `pages/dropship-palletization/dropship-palletization`。箱码先经 `cartons/resolve` 只读识别,确认后才调用 `cartons/count`;先扫托盘时确认箱码直接绑定当前托盘,先扫多箱时箱码进入待绑托区,后扫系统托盘码通过 `pallets/bind-pending` 批量绑定。所有写操作要求在线并携带稳定幂等标识,冲突后刷新权威任务;封托后的托盘只读并作为后续分柜、装柜的不可拆单元。 +混托作业保持当前实物托盘,允许连续扫描不同客户的箱码。仓库级 `cartons/resolve` 只读返回原任务与箱内 SKU;确认清点时重新读取并领取原任务,再按原 taskId 写入,不将货物改归当前页客户。`pallets/resolve` 返回真实托盘状态和逐客户、逐票组成;未知托盘不能默认开放。切换入仓单携带已校验开放托盘,托内移箱使用箱的原任务;封托前显示各客户入仓码及箱数供核对。混托要求同作业仓、同渠道、同目的仓,封托和解封继续遵守正式后端门禁。合同及行为测试:`node --test tests/dropship*.test.mjs`。 + 登录会话集中在 `stores/session.js` 并持久化到设备,拣货会话集中在 `stores/picking.js`。认证请求由 `api/http.js` 统一处理:Access Token 临近过期时使用 Refresh Token 轮换;并发请求共享一次刷新;401 刷新成功后只重放一次;Refresh Token 明确失效时清理会话和作业草稿并返回登录页,网络或服务异常不会误清会话。产品契约要求未提交拣货草稿持久化到设备,并绑定作业员、任务和柜次,其他账号不能继承;成功提交或明确放弃后才清理。页面头部与底部主导航位于 `components/`,演示账号、模块和任务数据位于 `data/demo-data.js`,跨页面 PDA 视觉规则位于 `styles/pda.scss`。 拣货页会在设备端保留当前任务草稿和最近扫码结果,但正式作业以服务端事实为准:进入任务后由后端标记“拣货中”,每次有效箱码/托盘码扫描及“确认拣出、部分拣货、跳拣”操作立即写入服务端,后台智能装柜据此锁定已发生实物拣货的明细。底部提交只负责收尾当前仍未处理的明细并进入装柜取证;网络失败时页面不得先显示成功。允许部分拣货或跳拣,但每个未完成项必须填写异常原因,并挂起任务、阻断完成和 `LOADED`。 diff --git a/api/pda-dropship.js b/api/pda-dropship.js index 775a970..7dd9446 100644 --- a/api/pda-dropship.js +++ b/api/pda-dropship.js @@ -4,6 +4,14 @@ import { session } from '@/stores/session.js' const ROOT = '/first-leg/pda-dropship' +export function resolveDropshipWorkspaceCarton(warehouseId, boxCode) { + return apiRequest({ url: `${ROOT}/cartons/resolve?warehouseId=${encodeURIComponent(warehouseId)}&boxCode=${encodeURIComponent(String(boxCode || '').trim())}`, method: 'GET' }) +} + +export function resolveDropshipWorkspacePallet(warehouseId, palletNo) { + return apiRequest({ url: `${ROOT}/pallets/resolve?warehouseId=${encodeURIComponent(warehouseId)}&palletNo=${encodeURIComponent(String(palletNo || '').trim().toUpperCase())}`, method: 'GET' }) +} + function stableId(value) { return String(value ?? '').trim() } diff --git a/pages/dropship-palletization/dropship-palletization.vue b/pages/dropship-palletization/dropship-palletization.vue index 403194c..12c35cb 100644 --- a/pages/dropship-palletization/dropship-palletization.vue +++ b/pages/dropship-palletization/dropship-palletization.vue @@ -9,6 +9,7 @@ {{ task.inboundCode || '—' }}{{ statusLabel }} {{ task.warehouseName || '仓库未关联' }} + 当前票 · {{ task.customerName || '客户未关联' }} {{ task.totalCartons || 0 }}总箱 {{ task.countedCartons || 0 }}清点 @@ -20,7 +21,7 @@ - + 1. 扫箱清点