From 619edfb57526c359149b1c02521828d4fbae51bd Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Tue, 1 Sep 2026 11:38:45 +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 --- pages/picking/picking.vue | 12 +++++++----- tests/picking-evidence-stage.test.mjs | 4 +++- tests/seal-save-idempotency.test.mjs | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/pages/picking/picking.vue b/pages/picking/picking.vue index 59d54a4..a5acb27 100644 --- a/pages/picking/picking.vue +++ b/pages/picking/picking.vue @@ -139,13 +139,15 @@ {{ evidenceUploadState(slot.type) }} - 本地暂存,待自动上传 + + {{ slot.type === 'SEAL' ? '请填写封签号,保存后上传' : '照片待自动上传' }} + - + {{ remoteError }} @@ -1243,7 +1245,7 @@ this.evidenceFiles = { ...this.evidenceFiles, [slot.type]: [...(this.evidenceFiles[slot.type] || []), next] } this.rememberEvidenceDraft(identity) if (slot.type === 'SEAL') { - this.showToast('带锁码照已拍摄,请输入封签号并保存', 'success') + this.showToast('照片已拍摄,请输入封签号并保存上传', 'success') return } this.queueEvidenceUpload(slot.type, path) @@ -1280,7 +1282,7 @@ this.debugSubmit('evidence.queue.result', { evidenceType: type, queueId: entry.id, status: latest?.status || 'missing', fileId: latest?.result?.fileId || null, error: latest?.error || '' }) if (latest?.status !== 'SUCCEEDED') { this.remoteError = latest?.error || '文件上传失败'; return } this.applyEvidenceResponse(latest.result, type, path, identity) - this.showToast(`${type === 'SEAL' ? '封签' : '照片'}已上传并保存`, 'success') + this.showToast(type === 'SEAL' ? '带锁码照上传成功,封签号已保存' : '照片已上传并保存', 'success') }, async flushPendingEvidence() { if (!this.evidenceIdentity?.taskId || !this.evidenceIdentity?.warehouseId) return @@ -1304,7 +1306,7 @@ const latest = queue.latest(type) if (latest?.status !== 'SUCCEEDED') { this.remoteError = latest?.error || '文件上传失败'; return } this.applyEvidenceResponse(latest.result, type, item.localPath, identity) - this.showToast(`${type === 'SEAL' ? '封签' : '照片'}重试成功`, 'success') + this.showToast(type === 'SEAL' ? '带锁码照上传成功,封签号已保存' : '照片重试上传成功', 'success') }, async saveSealNo() { if (this.sealSaving) return diff --git a/tests/picking-evidence-stage.test.mjs b/tests/picking-evidence-stage.test.mjs index 90a807b..77d5450 100644 --- a/tests/picking-evidence-stage.test.mjs +++ b/tests/picking-evidence-stage.test.mjs @@ -123,11 +123,13 @@ test('final completion preserves backend gate errors and refreshes after an atom test('seal photo upload waits for an explicit seal-number save without waiting for picking completion', () => { const chooser = page.match(/chooseEvidence\(slot\) \{[\s\S]*?\n\t\t\t\},/)?.[0] || '' - assert.match(chooser, /slot\.type === 'SEAL'[\s\S]*?带锁码照已拍摄,请输入封签号并保存[\s\S]*?return/) + assert.match(chooser, /slot\.type === 'SEAL'[\s\S]*?照片已拍摄,请输入封签号并保存上传[\s\S]*?return/) assert.match(page, /async saveSealNo\(\)[\s\S]*?await this\.queueEvidenceUpload\('SEAL', current\.localPath, String\(this\.sealNo\)\.trim\(\)\)/) const saver = page.match(/async saveSealNo\(\) \{[\s\S]*?\n\t\t\t\},/)?.[0] || '' assert.doesNotMatch(saver, /if \(!this\.loadingStageReady\)/) assert.match(page, /sealReadyToSave\(\)[\s\S]*?hasPendingLocalEvidence\('SEAL'\)/) + assert.match(page, /slot\.type === 'SEAL' \? '请填写封签号,保存后上传' : '照片待自动上传'/) + assert.match(page, /带锁码照上传成功,封签号已保存/) }) test('cabinet evidence identity is task-scoped and never selects an inbound owner', () => { diff --git a/tests/seal-save-idempotency.test.mjs b/tests/seal-save-idempotency.test.mjs index 86a3b79..1dba9ae 100644 --- a/tests/seal-save-idempotency.test.mjs +++ b/tests/seal-save-idempotency.test.mjs @@ -6,7 +6,7 @@ const page = await readFile(new URL('../pages/picking/picking.vue', import.meta. test('saving a seal is single-flight and submits the pending photo through the atomic evidence command', () => { assert.match(page, /:disabled="sealSaving \|\| !sealReadyToSave"/) - assert.match(page, /sealSaving \? '保存中…' : '保存封签'/) + assert.match(page, /sealSaving \? '上传中…' : '保存并上传'/) assert.match(page, /async saveSealNo\(\) \{[\s\S]*?if \(this\.sealSaving\) return/) assert.match(page, /find\(\(item\) => item\.localPath && !item\.id\)/) assert.match(page, /await this\.queueEvidenceUpload\('SEAL', current\.localPath, String\(this\.sealNo\)\.trim\(\)\)/)