From 479d2fbf4dca85eadda72b886a24422ba64b6e46 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期二, 08 九月 2026 13:51:55 +0800
Subject: [PATCH] 修正控制台详情保存与字段读回
---
src/components/ConsoleChartPanel.vue | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/src/components/ConsoleChartPanel.vue b/src/components/ConsoleChartPanel.vue
index dca28c8..c005c64 100644
--- a/src/components/ConsoleChartPanel.vue
+++ b/src/components/ConsoleChartPanel.vue
@@ -172,8 +172,9 @@
ensureDetailFieldValues()
+// 测试名称只用于初始占位;详情已读回后不能覆盖用户保存的实验名称。
watch(() => props.testName, value => {
- if (value) experimentName.value = value
+ if (value && !props.consoleDetail && !experimentName.value) experimentName.value = value
})
watch(() => props.consoleDetail, value => applyConsoleDetail(value), { immediate: true, deep: true })
@@ -234,6 +235,13 @@
delete detailFieldValues[field]
}
+function pruneDetailValues() {
+ const allowed = new Set(detailFields.value)
+ Object.keys(detailFieldValues).forEach(field => {
+ if (!allowed.has(field)) delete detailFieldValues[field]
+ })
+}
+
async function saveConsoleDetail() {
detailSaving.value = true
try {
@@ -241,7 +249,9 @@
experimentName: experimentName.value.trim() || null,
batteryFields: [...batteryFields.value],
specialFields: [...specialFields.value],
- fieldValues: JSON.parse(JSON.stringify(detailFieldValues)) as Record<string, Record<string, string>>,
+ fieldValues: Object.fromEntries(detailFields.value
+ .filter(field => detailFieldValues[field] != null)
+ .map(field => [field, { ...detailFieldValues[field] }])) as Record<string, Record<string, string>>,
}
const saved = await saveTestConsoleDetail(props.testId, detail)
applyConsoleDetail(saved.consoleDetail)
@@ -264,6 +274,7 @@
} else {
specialFields.value = [...specialTemplates[selectedSpecialTemplate.value]].filter(field => !batteryFields.value.includes(field))
}
+ pruneDetailValues()
ensureDetailFieldValues()
templateDialogVisible.value = false
ElMessage.success('字段模板已应用')
--
Gitblit v1.7.1