From afda583d384129e64c3f5240edc1b044b9bcf8d1 Mon Sep 17 00:00:00 2001 From: shenzhouyu Date: Wed, 11 Mar 2026 15:23:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=AB=E6=8F=8F=E6=A0=87=E7=AD=BE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../directIssueNoMaterial.vue | 6 ++++- .../directIssueNoMaterialDetail.vue | 22 +++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/views/modules/production-issue/directIssueNoMaterial.vue b/src/views/modules/production-issue/directIssueNoMaterial.vue index 18a9f88..09b13bc 100644 --- a/src/views/modules/production-issue/directIssueNoMaterial.vue +++ b/src/views/modules/production-issue/directIssueNoMaterial.vue @@ -250,6 +250,11 @@ export default { } else { // 跳转前保存当前页面状态(用于从详情页返回时恢复工单号/列表等) this.savePageStateForDetail() + // materialList 可能很大,放在 query 会导致 PDA WebView URL 过长被截断 + sessionStorage.setItem( + 'directIssueNoMaterial_materialList_forDetail', + JSON.stringify(this.materialList || []) + ) this.$router.push({ name: 'directIssueNoMaterialDetail', query: { @@ -261,7 +266,6 @@ export default { requiredQty: 0, issuedQty: 0, partDesc: '物料详情', - materialList: JSON.stringify(this.materialList), }, }) } diff --git a/src/views/modules/production-issue/directIssueNoMaterialDetail.vue b/src/views/modules/production-issue/directIssueNoMaterialDetail.vue index 8178969..7595031 100644 --- a/src/views/modules/production-issue/directIssueNoMaterialDetail.vue +++ b/src/views/modules/production-issue/directIssueNoMaterialDetail.vue @@ -522,9 +522,27 @@ export default { partDesc: this.$route.query.partDesc || "", }; try { - this.materialList = this.$route.query.materialList ? JSON.parse(this.$route.query.materialList) : []; + // PDA 端 URL 长度可能受限,materialList 不建议走 query;优先从 sessionStorage 读取兜底 + const fromQuery = this.$route.query.materialList + ? JSON.parse(this.$route.query.materialList) + : null; + if (Array.isArray(fromQuery)) { + this.materialList = fromQuery; + } else { + const raw = sessionStorage.getItem('directIssueNoMaterial_materialList_forDetail'); + this.materialList = raw ? JSON.parse(raw) : []; + } } catch (e) { - this.materialList = []; + try { + const raw = sessionStorage.getItem('directIssueNoMaterial_materialList_forDetail'); + this.materialList = raw ? JSON.parse(raw) : []; + } catch (_) { + this.materialList = []; + } + } + + if (!this.workOrderNo) { + this.$message.error("页面参数丢失(可能是PDA端URL过长被截断),请返回重进"); } }, handleBack() {