From 8dcaa457f916944269545530c1e26fa31fb3df8c Mon Sep 17 00:00:00 2001 From: MaysWind Date: Thu, 31 Jul 2025 22:53:37 +0800 Subject: [PATCH] set the default date based on the current date time filter range when adding a new transaction in the transaction list page --- src/views/desktop/transactions/ListPage.vue | 19 ++++++++- src/views/mobile/transactions/ListPage.vue | 44 ++++++++++++++++++++- 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/views/desktop/transactions/ListPage.vue b/src/views/desktop/transactions/ListPage.vue index a2bc0445..80c1763e 100644 --- a/src/views/desktop/transactions/ListPage.vue +++ b/src/views/desktop/transactions/ListPage.vue @@ -1578,12 +1578,29 @@ function changeAmountFilter(filterType: string): void { } function add(template?: TransactionTemplate): void { + const currentUnixTime = getCurrentUnixTime(); + + let setTransactionTime = false; + let newTransactionTime: number | undefined = undefined; + + if (query.value.maxTime && query.value.minTime) { + if (query.value.maxTime < currentUnixTime) { + setTransactionTime = true; + newTransactionTime = query.value.maxTime; + } else if (currentUnixTime < query.value.minTime) { + setTransactionTime = true; + newTransactionTime = query.value.minTime; + } + } + editDialog.value?.open({ + time: newTransactionTime, type: query.value.type, categoryId: queryAllFilterCategoryIdsCount.value === 1 ? query.value.categoryIds : '', accountId: queryAllFilterAccountIdsCount.value === 1 ? query.value.accountIds : '', tagIds: query.value.tagIds || '', - template: template + template: template, + setTransactionTime: setTransactionTime }).then(result => { if (result && result.message) { snackbar.value?.showMessage(result.message); diff --git a/src/views/mobile/transactions/ListPage.vue b/src/views/mobile/transactions/ListPage.vue index 094182d0..f90082bb 100644 --- a/src/views/mobile/transactions/ListPage.vue +++ b/src/views/mobile/transactions/ListPage.vue @@ -16,7 +16,7 @@ - + @@ -1374,6 +1374,48 @@ function changeAmountFilter(filterType: string): void { } } +function add(): void { + const currentUnixTime = getCurrentUnixTime(); + + let setTransactionTime = false; + let newTransactionTime: number | undefined = undefined; + + if (query.value.maxTime && query.value.minTime) { + if (query.value.maxTime < currentUnixTime) { + setTransactionTime = true; + newTransactionTime = query.value.maxTime; + } else if (currentUnixTime < query.value.minTime) { + setTransactionTime = true; + newTransactionTime = query.value.minTime; + } + } + + const params: string[] = []; + + if (setTransactionTime) { + params.push(`time=${newTransactionTime}`); + params.push('withTime=true'); + } + + if (query.value.type !== TransactionType.ModifyBalance) { + params.push(`type=${query.value.type}`); + } + + if (queryAllFilterCategoryIdsCount.value === 1) { + params.push(`categoryId=${query.value.categoryIds}`); + } + + if (queryAllFilterAccountIdsCount.value === 1) { + params.push(`accountId=${query.value.accountIds}`); + } + + if (query.value.tagIds) { + params.push(`tagIds=${query.value.tagIds}`); + } + + props.f7router.navigate(`/transaction/add?${params.join('&')}`); +} + function duplicate(transaction: Transaction): void { props.f7router.navigate(`/transaction/add?id=${transaction.id}&type=${transaction.type}`); }