From 54ed7e745b82f1273699473fb933264a45f5956a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E5=BF=B5?= Date: Fri, 4 Sep 2026 22:24:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(analytics):=20=E6=B5=81=E5=A4=B1=E9=A1=B5?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=88=90=E5=8A=9F=E6=8F=90=E7=A4=BA=E4=B8=8E?= =?UTF-8?q?=E7=A9=BA=E6=A3=80+=E6=8E=92=E5=BA=8F=E4=BB=85=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E9=A1=B5=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Code --- yunkes/src/views/analytics/ChurnView.vue | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/yunkes/src/views/analytics/ChurnView.vue b/yunkes/src/views/analytics/ChurnView.vue index d0c2b8a..b76d555 100644 --- a/yunkes/src/views/analytics/ChurnView.vue +++ b/yunkes/src/views/analytics/ChurnView.vue @@ -20,7 +20,7 @@ -
{{ kindHint }}
+
{{ kindHint }}(列排序仅当前页)
@@ -150,9 +150,14 @@ function goChat(row: ChurnRow) { // CSV 平铺带「归属员工」列 = v1 简化:spec 的「按员工分组」语义由表格列承担 // (spec §3.3 注)。exportListToCsv 自带全量翻页 + BOM + 10000 行安全上限。 async function exportCsv() { + // 空检 + 成功条数提示:项目所有 exportListToCsv 调用点的统一 UX(CustomerList 等) + if (!total.value) { + ElMessage.warning('当前列表为空,无数据可导出') + return + } exporting.value = true try { - await exportListToCsv({ + const result = await exportListToCsv({ fetchPage: (p, size) => getChurn({ channel: channel.value, @@ -176,6 +181,7 @@ async function exportCsv() { ], filename: `流失预警_${kind.value}_${channel.value}`, }) + ElMessage.success(`已导出 ${result.rows} 条`) } catch (e) { ElMessage.error(`导出失败:${e instanceof Error ? e.message : String(e)}`) } finally {