reload reconciliation statement after adding new transaction

This commit is contained in:
MaysWind
2025-07-29 00:16:37 +08:00
parent 175b272fa0
commit e4cb66718d
2 changed files with 32 additions and 0 deletions
+28
View File
@@ -135,6 +135,7 @@ export const useTransactionsStore = defineStore('transactions', () => {
const transactions = ref<TransactionMonthList[]>([]); const transactions = ref<TransactionMonthList[]>([]);
const transactionsNextTimeId = ref<number>(0); const transactionsNextTimeId = ref<number>(0);
const transactionListStateInvalid = ref<boolean>(true); const transactionListStateInvalid = ref<boolean>(true);
const transactionReconciliationStatementStateInvalid = ref<boolean>(true);
const allFilterCategoryIds = computed<Record<string, boolean>>(() => splitItemsToMap(transactionsFilter.value.categoryIds, ',')); const allFilterCategoryIds = computed<Record<string, boolean>>(() => splitItemsToMap(transactionsFilter.value.categoryIds, ','));
const allFilterAccountIds = computed<Record<string, boolean>>(() => splitItemsToMap(transactionsFilter.value.accountIds, ',')); const allFilterAccountIds = computed<Record<string, boolean>>(() => splitItemsToMap(transactionsFilter.value.accountIds, ','));
@@ -596,6 +597,10 @@ export const useTransactionsStore = defineStore('transactions', () => {
transactionListStateInvalid.value = invalidState; transactionListStateInvalid.value = invalidState;
} }
function updateTransactionReconciliationStatementInvalidState(invalidState: boolean): void {
transactionReconciliationStatementStateInvalid.value = invalidState;
}
function resetTransactions(): void { function resetTransactions(): void {
transactionsFilter.value.dateType = DateRange.All.type; transactionsFilter.value.dateType = DateRange.All.type;
transactionsFilter.value.maxTime = 0; transactionsFilter.value.maxTime = 0;
@@ -610,6 +615,7 @@ export const useTransactionsStore = defineStore('transactions', () => {
transactions.value = []; transactions.value = [];
transactionsNextTimeId.value = 0; transactionsNextTimeId.value = 0;
transactionListStateInvalid.value = true; transactionListStateInvalid.value = true;
transactionReconciliationStatementStateInvalid.value = true;
} }
function clearTransactions(): void { function clearTransactions(): void {
@@ -972,14 +978,26 @@ export const useTransactionsStore = defineStore('transactions', () => {
const data = response.data; const data = response.data;
if (!data || !data.success || !data.result) { if (!data || !data.success || !data.result) {
if (!transactionReconciliationStatementStateInvalid.value) {
updateTransactionReconciliationStatementInvalidState(true);
}
reject({ message: 'Unable to retrieve reconciliation statements' }); reject({ message: 'Unable to retrieve reconciliation statements' });
return; return;
} }
if (transactionReconciliationStatementStateInvalid.value) {
updateTransactionReconciliationStatementInvalidState(false);
}
resolve(data.result); resolve(data.result);
}).catch(error => { }).catch(error => {
logger.error('failed to load reconciliation statements', error); logger.error('failed to load reconciliation statements', error);
if (!transactionReconciliationStatementStateInvalid.value) {
updateTransactionReconciliationStatementInvalidState(true);
}
if (error.response && error.response.data && error.response.data.errorMessage) { if (error.response && error.response.data && error.response.data.errorMessage) {
reject({ error: error.response.data }); reject({ error: error.response.data });
} else if (!error.processed) { } else if (!error.processed) {
@@ -1067,6 +1085,10 @@ export const useTransactionsStore = defineStore('transactions', () => {
}); });
} }
if (!transactionReconciliationStatementStateInvalid.value) {
updateTransactionReconciliationStatementInvalidState(true);
}
if (!accountsStore.accountListStateInvalid) { if (!accountsStore.accountListStateInvalid) {
accountsStore.updateAccountListInvalidState(true); accountsStore.updateAccountListInvalidState(true);
} }
@@ -1124,6 +1146,10 @@ export const useTransactionsStore = defineStore('transactions', () => {
}); });
} }
if (!transactionReconciliationStatementStateInvalid.value) {
updateTransactionReconciliationStatementInvalidState(true);
}
if (!accountsStore.accountListStateInvalid) { if (!accountsStore.accountListStateInvalid) {
accountsStore.updateAccountListInvalidState(true); accountsStore.updateAccountListInvalidState(true);
} }
@@ -1334,6 +1360,7 @@ export const useTransactionsStore = defineStore('transactions', () => {
transactions, transactions,
transactionsNextTimeId, transactionsNextTimeId,
transactionListStateInvalid, transactionListStateInvalid,
transactionReconciliationStatementStateInvalid,
// computed states // computed states
allFilterCategoryIds, allFilterCategoryIds,
allFilterAccountIds, allFilterAccountIds,
@@ -1350,6 +1377,7 @@ export const useTransactionsStore = defineStore('transactions', () => {
clearTransactionDraft, clearTransactionDraft,
setTransactionSuitableDestinationAmount, setTransactionSuitableDestinationAmount,
updateTransactionListInvalidState, updateTransactionListInvalidState,
updateTransactionReconciliationStatementInvalidState,
resetTransactions, resetTransactions,
clearTransactions, clearTransactions,
initTransactionListFilter, initTransactionListFilter,
@@ -452,6 +452,10 @@ function renderExternal(vl: unknown, vlData: ReconciliationStatementVirtualListD
} }
function onPageAfterIn(): void { function onPageAfterIn(): void {
if (finishQuery.value && transactionsStore.transactionReconciliationStatementStateInvalid) {
reload(false);
}
routeBackOnError(props.f7router, loadingError); routeBackOnError(props.f7router, loadingError);
} }