From f6d4ed6c3c8e02363898cccc00eefe678c191406 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Mon, 24 Aug 2026 20:47:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96PDA=E8=A3=85=E6=9F=9C?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/picking/picking.vue | 11 ++++++++++- tests/picking-evidence-stage.test.mjs | 9 +++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/pages/picking/picking.vue b/pages/picking/picking.vue index 9ff9360..0ee5978 100644 --- a/pages/picking/picking.vue +++ b/pages/picking/picking.vue @@ -651,6 +651,14 @@ isTaskConflict(error) { return String(error?.code || '') === 'A0409' || Number(error?.statusCode) === 409 }, + remoteFailureMessage(error, fallback = '操作失败') { + const raw = String(error?.message || '').trim() + const message = /^internal server error$/i.test(raw) + ? '服务端处理异常,请联系管理员' + : (raw || fallback) + const reference = String(error?.requestId || error?.traceId || '').trim() + return reference ? `${message}(请求编号:${reference})` : message + }, async refreshAfterTaskConflict(message) { const requestedTaskId = this.remoteTaskId || this.currentBox.taskId this.submitId = '' @@ -1405,7 +1413,8 @@ await this.refreshAfterTaskConflict(error.message || '订舱、装柜关联或证据状态已变化,请刷新后重试') return } - this.remoteError = error.network ? '网络失败,装柜完成未提交' : (error.message || '装柜完成失败') + this.debugSubmit('complete.error', { message: error.message || '', code: error.code || '', statusCode: error.statusCode || '', requestIdFromServer: error.requestId || '', traceId: error.traceId || '' }) + this.remoteError = error.network ? '网络失败,装柜完成未提交' : this.remoteFailureMessage(error, '装柜完成失败') this.showToast('装柜完成失败', 'error') } finally { diff --git a/tests/picking-evidence-stage.test.mjs b/tests/picking-evidence-stage.test.mjs index 313a40a..f04b8b8 100644 --- a/tests/picking-evidence-stage.test.mjs +++ b/tests/picking-evidence-stage.test.mjs @@ -243,3 +243,12 @@ test('picking mutations stay closed until the canonical task has been claimed', assert.match(body, /if \(!this\.requirePickingOperation\(\)\) return/, `${method} should wait for claim`) } }) + +test('completion shows a Chinese server failure with a request correlation id', () => { + assert.match(page, /remoteFailureMessage\(error, fallback = '操作失败'\)/) + assert.match(page, /\^internal server error\$\/i/) + assert.match(page, /服务端处理异常,请联系管理员/) + assert.match(page, /请求编号/) + assert.match(page, /requestIdFromServer: error\.requestId/) + assert.match(page, /this\.remoteFailureMessage\(error, '装柜完成失败'\)/) +})