fix transaction list not display after expand the month transaction list

This commit is contained in:
MaysWind
2025-05-24 22:25:23 +08:00
parent 5767acb29b
commit 387df07659
2 changed files with 26 additions and 21 deletions
+3 -3
View File
@@ -1274,9 +1274,9 @@ export const useTransactionsStore = defineStore('transactions', () => {
return services.getTransactionPictureUrlWithToken(pictureInfo.originalUrl, disableBrowserCache); return services.getTransactionPictureUrlWithToken(pictureInfo.originalUrl, disableBrowserCache);
} }
function collapseMonthInTransactionList({ month, collapse }: { month: TransactionMonthList, collapse: boolean }): void { function collapseMonthInTransactionList({ monthList, collapse }: { monthList: TransactionMonthList, collapse: boolean }): void {
if (month) { if (monthList) {
month.opened = !collapse; monthList.opened = !collapse;
} }
} }
+23 -18
View File
@@ -177,7 +177,9 @@
:key="transactionMonthList.yearMonth" v-for="(transactionMonthList) in transactions"> :key="transactionMonthList.yearMonth" v-for="(transactionMonthList) in transactions">
<f7-accordion-item :opened="transactionMonthList.opened" <f7-accordion-item :opened="transactionMonthList.opened"
@accordion:open="collapseTransactionMonthList(transactionMonthList, false)" @accordion:open="collapseTransactionMonthList(transactionMonthList, false)"
@accordion:close="collapseTransactionMonthList(transactionMonthList, true)"> @accordion:opened="onTransactionMonthListCollapseStateChanged"
@accordion:close="collapseTransactionMonthList(transactionMonthList, true)"
@accordion:closed="onTransactionMonthListCollapseStateChanged">
<f7-block-title :id="getTransactionMonthTitleDomId(transactionMonthList.yearMonth)" v-if="pageType === TransactionListPageType.List.type"> <f7-block-title :id="getTransactionMonthTitleDomId(transactionMonthList.yearMonth)" v-if="pageType === TransactionListPageType.List.type">
<f7-accordion-toggle> <f7-accordion-toggle>
<f7-list strong inset dividers media-list <f7-list strong inset dividers media-list
@@ -202,13 +204,15 @@
</f7-list> </f7-list>
</f7-accordion-toggle> </f7-accordion-toggle>
</f7-block-title> </f7-block-title>
<f7-accordion-content :style="{ height: getTransactionMonthListHeight(transactionMonthList) }"> <f7-accordion-content>
<f7-block :style="{ height: getTransactionMonthListHeight(transactionMonthList) }"
v-if="isTransactionMonthListInvisible(transactionMonthList)" />
<f7-list strong inset dividers media-list accordion-list <f7-list strong inset dividers media-list accordion-list
class="transaction-info-list transaction-month-list combination-list-content" class="transaction-info-list transaction-month-list combination-list-content"
:id="getTransactionMonthListDomId(transactionMonthList.yearMonth)" :id="getTransactionMonthListDomId(transactionMonthList.yearMonth)"
v-if="!isTransactionMonthListInvisible(transactionMonthList)" v-if="!isTransactionMonthListInvisible(transactionMonthList)"
> >
<f7-list-item swipeout chevron-center <f7-list-item swipeout chevron-center accordion-item
class="transaction-info" class="transaction-info"
:id="getTransactionDomId(transaction)" :id="getTransactionDomId(transaction)"
:link="transaction.type !== TransactionType.ModifyBalance ? `/transaction/detail?id=${transaction.id}&type=${transaction.type}` : null" :link="transaction.type !== TransactionType.ModifyBalance ? `/transaction/detail?id=${transaction.id}&type=${transaction.type}` : null"
@@ -807,14 +811,14 @@ function getTransactionDomId(transaction: Transaction): string {
} }
function isTransactionMonthListInvisible(transactionMonthList: TransactionMonthList): boolean { function isTransactionMonthListInvisible(transactionMonthList: TransactionMonthList): boolean {
if (!transactionMonthList.opened) {
return true;
}
if (!transactionYearMonthListHeights.value[transactionMonthList.yearMonth]) { if (!transactionYearMonthListHeights.value[transactionMonthList.yearMonth]) {
return false; return false;
} }
if (!transactionMonthList.opened) {
return true;
}
if (transactionInvisibleYearMonths.value[transactionMonthList.yearMonth]) { if (transactionInvisibleYearMonths.value[transactionMonthList.yearMonth]) {
return true; return true;
} }
@@ -823,10 +827,6 @@ function isTransactionMonthListInvisible(transactionMonthList: TransactionMonthL
} }
function getTransactionMonthListHeight(transactionMonthList: TransactionMonthList): string { function getTransactionMonthListHeight(transactionMonthList: TransactionMonthList): string {
if (!transactionMonthList.opened) {
return '';
}
if (isTransactionMonthListInvisible(transactionMonthList)) { if (isTransactionMonthListInvisible(transactionMonthList)) {
return transactionYearMonthListHeights.value[transactionMonthList.yearMonth] + 'px'; return transactionYearMonthListHeights.value[transactionMonthList.yearMonth] + 'px';
} }
@@ -1407,17 +1407,15 @@ function remove(transaction: Transaction | null, confirm: boolean): void {
}); });
} }
function collapseTransactionMonthList(month: TransactionMonthList, collapse: boolean): void { function collapseTransactionMonthList(monthList: TransactionMonthList, collapse: boolean): void {
transactionsStore.collapseMonthInTransactionList({ transactionsStore.collapseMonthInTransactionList({
month: month, monthList: monthList,
collapse: collapse collapse: collapse
}); });
nextTick(() => { if (!collapse && transactionInvisibleYearMonths.value[monthList.yearMonth]) {
return setTransactionMonthListHeights(false); delete transactionInvisibleYearMonths.value[monthList.yearMonth];
}).then(() => { }
setTransactionInvisibleYearMonthList();
});
} }
function onPopoverOpen(event: { $el: Framework7Dom }): void { function onPopoverOpen(event: { $el: Framework7Dom }): void {
@@ -1443,6 +1441,13 @@ function onScroll(): void {
setTransactionInvisibleYearMonthList(); setTransactionInvisibleYearMonthList();
} }
function onTransactionMonthListCollapseStateChanged(): void {
setTransactionMonthListHeights(false)
.then(() => {
setTransactionInvisibleYearMonthList();
});
}
onMounted(() => { onMounted(() => {
window.addEventListener('resize', onResize); window.addEventListener('resize', onResize);
onInfiniteScrolling(onScroll); onInfiniteScrolling(onScroll);