From c8224bf5986ae4b34fa6d720a5bb4833ecf02ff4 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Wed, 17 Jun 2026 10:07:32 +0800 Subject: [PATCH] =?UTF-8?q?fix(bugcollect):=20=E4=BF=AE=E5=A4=8D=20undefin?= =?UTF-8?q?ed.length=20=E5=B4=A9=E6=BA=83=20=E2=80=94=20=E6=89=80=E6=9C=89?= =?UTF-8?q?=E8=A7=86=E5=9B=BE=E5=8A=A0=20gateStatus=20=E5=AE=88=E5=8D=AB?= =?UTF-8?q?=E5=92=8C=20null=20safety?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 所有视图 loadData/loadWebhooks:首行加 gateStatus !== 'enabled' 守卫,避免 appKey 为空或服务未开通时发请求 - 所有视图加 watch(gateStatus) 监听,服务开通后自动刷新数据 - 所有响应体数组赋值改为 ?? [],防止后端返回 null/undefined 时 el-table 访问 .length 崩溃 - BugCollectOverview:maxRate computed 改用 crashRateTrend ?? [] 防止 undefined.map 崩溃 Co-Authored-By: Claude Sonnet 4.6 --- .../views/bug-collect/BugCollectEvents.vue | 8 +++-- .../views/bug-collect/BugCollectFunnels.vue | 5 +-- .../views/bug-collect/BugCollectIssues.vue | 8 +++-- .../views/bug-collect/BugCollectOverview.vue | 33 ++++++++++++++----- .../views/bug-collect/BugCollectRankFreq.vue | 12 ++++--- .../views/bug-collect/BugCollectRankRisk.vue | 12 ++++--- .../views/bug-collect/BugCollectWebhooks.vue | 6 ++-- 7 files changed, 58 insertions(+), 26 deletions(-) diff --git a/tenant-platform/src/views/bug-collect/BugCollectEvents.vue b/tenant-platform/src/views/bug-collect/BugCollectEvents.vue index 2faf909..670a1d9 100644 --- a/tenant-platform/src/views/bug-collect/BugCollectEvents.vue +++ b/tenant-platform/src/views/bug-collect/BugCollectEvents.vue @@ -101,7 +101,7 @@ diff --git a/tenant-platform/src/views/bug-collect/BugCollectFunnels.vue b/tenant-platform/src/views/bug-collect/BugCollectFunnels.vue index 381045d..7522f0c 100644 --- a/tenant-platform/src/views/bug-collect/BugCollectFunnels.vue +++ b/tenant-platform/src/views/bug-collect/BugCollectFunnels.vue @@ -96,12 +96,13 @@ function funnelColor(idx: number) { async function analyze() { const validSteps = steps.value.filter((s) => s.trim()) - if (validSteps.length < 2) return + if (validSteps.length < 2 || !appKey.value) return loading.value = true try { const res = await bugCollectApi.funnel(appKey.value, validSteps) - funnelData.value = res.data.data + funnelData.value = res.data.data ?? [] } catch { + funnelData.value = [] } finally { loading.value = false } diff --git a/tenant-platform/src/views/bug-collect/BugCollectIssues.vue b/tenant-platform/src/views/bug-collect/BugCollectIssues.vue index 01f6c6c..b580d25 100644 --- a/tenant-platform/src/views/bug-collect/BugCollectIssues.vue +++ b/tenant-platform/src/views/bug-collect/BugCollectIssues.vue @@ -100,7 +100,7 @@ diff --git a/tenant-platform/src/views/bug-collect/BugCollectOverview.vue b/tenant-platform/src/views/bug-collect/BugCollectOverview.vue index ef300db..3e8a89f 100644 --- a/tenant-platform/src/views/bug-collect/BugCollectOverview.vue +++ b/tenant-platform/src/views/bug-collect/BugCollectOverview.vue @@ -111,24 +111,27 @@