From ac503816bc75728f9a79b47e346ea64f18dab1a3 Mon Sep 17 00:00:00 2001 From: yangsy Date: Tue, 16 Sep 2025 10:54:32 +0800 Subject: [PATCH] fix: wrong record loss duration --- .../nvr-record-diag-card.vue | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/components/device-page/device-card/current-diag-card/nvr-record-diag-card.vue b/src/components/device-page/device-card/current-diag-card/nvr-record-diag-card.vue index 23e26d9..fa6a29c 100644 --- a/src/components/device-page/device-card/current-diag-card/nvr-record-diag-card.vue +++ b/src/components/device-page/device-card/current-diag-card/nvr-record-diag-card.vue @@ -99,16 +99,25 @@ const formatTime = (timeStr: string) => { const formatDuration = (startTime: string, endTime: string) => { const start = dayjs(startTime); const end = dayjs(endTime); - const diff = end.diff(start); - const dur = dayjs.duration(diff); + const diffMs = end.diff(start); - if (dur.asHours() >= 1) { - return `${Math.floor(dur.asHours())}小时${dur.minutes()}分钟`; - } else if (dur.asMinutes() >= 1) { - return `${dur.minutes()}分钟${dur.seconds()}秒`; + const isNegative = diffMs < 0; + const durAbs = dayjs.duration(Math.abs(diffMs)); + + const hours = Math.floor(durAbs.asHours()); + const minutes = durAbs.minutes(); + const seconds = durAbs.seconds(); + + let result: string; + if (hours > 0) { + result = `${hours}小时${minutes}分${seconds}秒`; + } else if (minutes > 0) { + result = `${minutes}分${seconds}秒`; } else { - return `${dur.seconds()}秒`; + result = `${seconds}秒`; } + + return isNegative ? `-${result}` : result; }; /**