feat(management): 驾驶舱KPI环比(prev_kpis+delta)+异常卡带员工名跳详情+列表进详情带筛选

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-10 12:20:28 +08:00
parent be0d6f844e
commit 422a726ee8
7 changed files with 160 additions and 13 deletions
@@ -83,7 +83,7 @@
<el-table-column type="selection" width="42" reserve-selection />
<el-table-column label="姓名" min-width="150">
<template #default="{ row }">
<!-- 详情路由批次D后续任务上线;当前点击走通配回 /customers(记录在案) -->
<!-- 带窗进详情:goDetail 随行 channel/start/end/compare(D3) -->
<el-link type="primary" underline="never" @click="goDetail(row)">
{{ row.name || row.user_id }}
</el-link>
@@ -535,8 +535,16 @@ function gradeType(g: string | null): 'success' | 'primary' | 'warning' | 'dange
return (g && GRADE_TYPES[g]) || 'info'
}
// 带窗进详情(D3):channel/start/end/compare 随行——列表口径延续到详情页;
// view/keyword/status/sort_by/sort_order/page 是列表态,不带(详情页只认
// channel/start/end/compare/section,其余键即使带上也被白名单忽略)
function goDetail(row: EmployeeRow): void {
router.push(`/management/employees/${row.user_id}`)
const query: Record<string, string> = {}
for (const key of ['channel', 'start', 'end', 'compare'] as const) {
const v = route.query[key]
if (typeof v === 'string' && v !== '') query[key] = v
}
router.push({ name: 'management-employees-detail', params: { userId: row.user_id }, query })
}
// ── 多选 → 对比抽屉(reserve-selection 跨页/重查保留;行是勾选时快照) ──