From d3bba9d1a28f54fd24f8a6f6e47331e59a7d720b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Mon, 9 Mar 2026 18:04:43 +0800 Subject: [PATCH] Add emitter.off cleanup in onBeforeUnmount for 10 components Co-Authored-By: Claude Opus 4.6 --- .../Discover/Conformance/ConformanceResults.vue | 11 ++++++++--- .../Discover/Conformance/ConformanceSidebar.vue | 8 ++++++++ .../Conformance/ConformanceSidebar/ActList.vue | 6 +++++- .../Conformance/ConformanceSidebar/ActRadio.vue | 6 +++++- .../Conformance/ConformanceSidebar/ActSeqDrag.vue | 6 +++++- .../ConformanceSidebar/ConformanceShowBar.vue | 11 ++++++++++- .../ConformanceSidebar/ConformanceTimeRange.vue | 11 ++++++++++- .../Conformance/ConformanceSidebar/ResultCheck.vue | 6 +++++- .../Conformance/ConformanceSidebar/ResultDot.vue | 6 +++++- src/components/DurationInput.vue | 6 +++++- 10 files changed, 66 insertions(+), 11 deletions(-) diff --git a/src/components/Discover/Conformance/ConformanceResults.vue b/src/components/Discover/Conformance/ConformanceResults.vue index 9aa14bd..e85e5fd 100644 --- a/src/components/Discover/Conformance/ConformanceResults.vue +++ b/src/components/Discover/Conformance/ConformanceResults.vue @@ -392,7 +392,7 @@ * check outcomes in a data table with status indicators. */ -import { ref, watch } from "vue"; +import { ref, watch, onBeforeUnmount } from "vue"; import { storeToRefs } from "pinia"; import { useConformanceStore } from "@/stores/conformance"; import iconNA from "@/components/icons/IconNA.vue"; @@ -504,7 +504,7 @@ const progressWidth = (value) => { * @returns {string} The formatted percentage string. */ const getPercentLabel = (val) => { - if ((val * 100).toFixed(1) >= 100) return 100; + if (Number((val * 100).toFixed(1)) >= 100) return 100; else return parseFloat((val * 100).toFixed(1)); }; @@ -562,7 +562,7 @@ const setConformanceTempReportData = (newData) => { Object.values(newData.counts).reduce((acc, val) => acc + val, 0), ); const sum = newData.counts.conforming + newData.counts.not_conforming; - const rate = ((newData.counts.conforming / sum) * 100).toFixed(1); + const rate = sum === 0 ? "0.0" : ((newData.counts.conforming / sum) * 100).toFixed(1); const isNullTime = (value) => value === null ? null : getNumberLabel((value / 86400).toFixed(1)); const isNullCase = (value) => @@ -974,6 +974,11 @@ emitter.on( "timeRangeMaxMin", (newData) => (selectDurationTime.value = newData), ); + +onBeforeUnmount(() => { + emitter.off("coverPlate"); + emitter.off("timeRangeMaxMin"); +});