task 1: 自动保存(30s) — 新增autoSaveTimer每30秒静默保存草稿

This commit is contained in:
Hermes CI Fix
2026-07-14 17:21:50 +08:00
parent 1a08e801f4
commit 4cfada967f
+8 -2
View File
@@ -708,6 +708,7 @@ async function deleteNode(dimKey: string, oi: number) {
// ── 保存 ──
let saveTimer: ReturnType<typeof setTimeout> | null = null
let autoSaveTimer: ReturnType<typeof setInterval> | null = null
let isSaving = false
function debouncedSaveCanvas() {
@@ -716,7 +717,7 @@ function debouncedSaveCanvas() {
saveTimer = setTimeout(() => { saveCanvas() }, 500)
}
async function saveCanvas() {
async function saveCanvas(silent?: boolean) {
if (!selectedMap.value) return
if (isSaving) return
isSaving = true
@@ -730,7 +731,7 @@ async function saveCanvas() {
canvas_data: { connections: connections.value },
version_num: currentMap.value?.version_num,
})
ElMessage.success("已保存")
if (!silent) ElMessage.success("已保存")
} catch (e: any) {
if (e?.response?.status === 409) {
ElMessage.warning("地图已被修改刷新后重试")
@@ -927,12 +928,17 @@ onMounted(async () => {
for (const kpi of allKpis.value) {
if (kpi.kpi_code) kpiNameMap[kpi.kpi_code] = kpi.kpi_name || kpi.kpi_code
}
// 自动保存:每30秒自动保存草稿
autoSaveTimer = setInterval(() => {
if (currentMap?.status === 'draft') saveCanvas(true)
}, 30000)
window.addEventListener('resize', triggerRecalc)
})
onUnmounted(() => {
window.removeEventListener('resize', triggerRecalc)
if (saveTimer) clearTimeout(saveTimer)
if (autoSaveTimer) clearInterval(autoSaveTimer)
})
</script>