fix: BSC分类树多选过滤 — 支持多维度/多分类复选,数量准确

This commit is contained in:
Hermes CI Fix
2026-07-14 11:02:39 +08:00
parent d3edd71e60
commit c35228563d
2 changed files with 52 additions and 17 deletions
+17 -12
View File
@@ -94,6 +94,12 @@
<el-table-column prop="data_source_type" label="数据源" width="70">
<template #default="{ row }">{{ sourceLabel(row.data_source_type) }}</template>
</el-table-column>
<el-table-column label="所属地图" width="120">
<template #default="{ row }">
<span v-if="row.map_title" style="color:#409eff;font-size:12px;">{{ row.map_title }}</span>
<span v-else style="color:#ccc">-</span>
</template>
</el-table-column>
<el-table-column label="当前值" width="100">
<template #default="{ row }">
<span v-if="row.actual_value !== null" :class="'status-' + (row.alert_level || 'none')">
@@ -427,21 +433,20 @@ async function loadCategories() {
}
}
// ── 树节点勾选 ──
// ── 树节点勾选(支持多选)──
function onTreeCheck(data: any, { checkedKeys }: any) {
// 简单模式:只支持单选过滤
if (data.key === '_all') {
// 从checkedKeys中分离出维度和分类
const dimKeys = ['finance', 'customer', 'process', 'learning']
const checkedDims = checkedKeys.filter((k: string) => dimKeys.includes(k))
const checkedCats = checkedKeys.filter((k: string) => !dimKeys.includes(k) && k !== '_all')
if (data.key === '_all' || checkedKeys.includes('_all')) {
// 勾选全部=清空过滤
treeFilterDims.value = []
treeFilterCats.value = []
} else if (data.children) {
// 维度节点
treeFilterDims.value = checkedKeys.includes(data.key) ? [data.key] : []
treeFilterCats.value = []
} else {
// 类别节点
treeFilterCats.value = checkedKeys.includes(data.key) ? [data.key] : []
treeFilterDims.value = []
treeFilterDims.value = checkedDims
treeFilterCats.value = checkedCats
}
loadKpis()
}
@@ -454,8 +459,8 @@ async function loadKpis() {
if (searchKeyword.value) params.keyword = searchKeyword.value
if (searchDimension.value) params.dimension = searchDimension.value
if (searchCategory.value) params.category = searchCategory.value
if (treeFilterDims.value.length > 0 && !params.dimension) params.dimension = treeFilterDims.value[0]
if (treeFilterCats.value.length > 0 && !params.category) params.category = treeFilterCats.value[0]
if (treeFilterDims.value.length > 0 && !params.dimension) params.dimension = treeFilterDims.value.join(',')
if (treeFilterCats.value.length > 0 && !params.category) params.category = treeFilterCats.value.join(',')
const r: any = await kpiApi.list(params)
kpis.value = r.data || []