From c928d59f607e0034eb4512f99f9a17a509c7293f Mon Sep 17 00:00:00 2001 From: Hermes CI Fix Date: Fri, 11 Sep 2026 19:15:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(maps):=20KR=20=E7=9B=AE=E6=A0=87=E5=80=BC?= =?UTF-8?q?=E9=80=90=E9=94=AE=E8=BE=93=E5=85=A5=E6=B1=A1=E6=9F=93=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E6=A0=B9=E6=B2=BB=20=E2=80=94=20=E7=A7=BB=E9=99=A4=20?= =?UTF-8?q?formatTargetValue=20=E5=9B=9E=E5=86=99=E5=90=8D=E7=A7=B0=20+=20?= =?UTF-8?q?=E5=8F=AA=E8=AF=BB=E9=A2=84=E8=A7=88=E6=8B=BC=E6=8E=A5=20(proje?= =?UTF-8?q?ct-20260911-kr-name-pollution)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../map-canvas/MapCanvasDialogs.vue | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/frontend/src/components/map-canvas/MapCanvasDialogs.vue b/frontend/src/components/map-canvas/MapCanvasDialogs.vue index a740834c..bca88503 100644 --- a/frontend/src/components/map-canvas/MapCanvasDialogs.vue +++ b/frontend/src/components/map-canvas/MapCanvasDialogs.vue @@ -87,7 +87,7 @@
- +
@@ -103,6 +103,9 @@
+
+ 展示为:{{ kr.name }} {{ opSymbol(kr.operator) }}{{ kr.target_value }} +
⚠️ 权重合计 {{ weightSum }}%,应为100%
@@ -678,16 +681,13 @@ function onKpiChange(ki: number) { ElMessage.success(`已关联KPI: ${kpiName}(方向 ${kr.operator} ${kr.target_value})`) } -function formatTargetValue(idx: number) { - // 数值输入,不需要追加%(weightSum实时校验) - const kr = form.value.krs[idx] - if (!kr) return - if (kr.target_value == null || kr.target_value === "") return - // 自动同步到KR名称:如果名称是纯文字无数字,追加方向+目标值 - if (kr.name && !/\d/.test(kr.name)) { - const opSymbol = kr.operator === ">=" ? "≥" : kr.operator === "<=" ? "≤" : kr.operator - kr.name = kr.name + opSymbol + kr.target_value - } +// ── KR 展示符号(只读展示:名称与目标值解耦,不再回写名称) ── +// project-20260911-kr-name-pollution 根治:原 formatTargetValue 在 @input 逐键触发时 +// 把「方向符号+当时已输入的数字」追加进名称(输入 780 → 名称被改成 "营业收入≥7"), +// 导致名称与 target_value 不一致的存量污染。现删除该写入点——KR 名称的唯一写入点是 +// 用户输入;「名称+值」的展示只在模板里做只读拼接(.mc-kr-preview),不改数据。 +function opSymbol(op: string) { + return op === ">=" ? "≥" : op === "<=" ? "≤" : (op || "") } function checkWeightSum() { @@ -1020,5 +1020,7 @@ function planStatusLabel(s: string): string { .pps-cancelled { background: #fef0f0; color: #f56c6c; } .plan-popup-title { font-size: 13px; font-weight: 500; } .plan-popup-meta { display: flex; gap: 12px; margin-top: 4px; font-size: 12px; color: #909399; } - .mc-kr-warning { color: #e6a23c; font-size: 12px; margin-top: 4px; } +/* KR 名称+目标值 只读预览(名称与值解耦,展示层拼接,不回写数据) */ +.mc-kr-preview { color: #909399; font-size: 12px; margin-top: 4px; } +