From 9e1bc3c9f519a502f597b3f58c7d33ab14a2bf91 Mon Sep 17 00:00:00 2001 From: xlsea Date: Thu, 13 Jun 2024 10:41:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(sj=5F1.1.0=5Fbeta1):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=8C=83=E5=9B=B4=E6=9F=A5=E8=AF=A2=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E9=BB=98=E8=AE=A4=E5=80=BC=E8=B5=8B=E5=80=BC=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/datetime-range.vue | 59 +++++++++++++++--------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/src/components/common/datetime-range.vue b/src/components/common/datetime-range.vue index 0da5818..cdc111a 100644 --- a/src/components/common/datetime-range.vue +++ b/src/components/common/datetime-range.vue @@ -13,48 +13,63 @@ interface Props { const props = defineProps(); interface Emits { - (e: 'update:beginDate', beginDate: number): void; - (e: 'update:endDate', endDate: number): void; + (e: 'update:beginDate', beginDate: number | null): void; + (e: 'update:endDate', endDate: number | null): void; } const emit = defineEmits(); -const dateRange = ref<[number, number]>(getDefaultDate()); +const dateRange = ref<[number, number] | undefined>(getDefaultDate()); watch( - () => props.beginDate, - beginDate => { - if (typeof beginDate === 'number' && beginDate) { - dateRange.value[0] = beginDate; + () => [props.beginDate, props.endDate], + val => { + if (!val[0] && !val[1]) { + dateRange.value = undefined; } - }, - { immediate: true } + } ); watch( - () => props.endDate, - endDate => { - if (typeof endDate === 'number' && endDate) { - dateRange.value[1] = endDate; - } + () => dateRange.value, + val => { + emit('update:beginDate', val ? val[0] : null); + emit('update:endDate', val ? val[1] : null); }, { immediate: true } ); function getDefaultDate(): [number, number] { - const currentDate = new Date(); - const currentTime = currentDate.getTime(); - currentDate.setMonth(currentDate.getMonth() - 1); - return [currentDate.getTime(), currentTime]; + const today = new Date(); + const endOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 23, 59, 59); + const oneMonthAgo = new Date(today.getFullYear(), today.getMonth() - 1, today.getDate()); + const startOfDayOneMonthAgo = new Date( + oneMonthAgo.getFullYear(), + oneMonthAgo.getMonth(), + oneMonthAgo.getDate(), + 0, + 0, + 0 + ); + return [startOfDayOneMonthAgo.getTime(), endOfDay.getTime()]; } -function onChange(value: [number, number]) { - emit('update:beginDate', value[0]); - emit('update:endDate', value[1]); +function initDefaultDate() { + const beginDate = props.beginDate; + if (typeof beginDate === 'number' && beginDate) { + dateRange.value![0] = beginDate; + } + + const endDate = props.endDate; + if (typeof endDate === 'number' && endDate) { + dateRange.value![1] = endDate; + } } + +initDefaultDate();