From 2caaa6ea0de44ea73ce19a59ecd6b2403364fdd1 Mon Sep 17 00:00:00 2001 From: safavimohadeseh78 Date: Mon, 6 Jul 2026 11:10:50 +0200 Subject: [PATCH] Improve boursecu transactions filters and list display. Align withdrawal status options with deposit, limit product filter to trades and physical delivery tabs, and hide gold amount in transaction rows. Co-authored-by: Cursor --- src/views/base/transactions/components/Item.vue | 8 ++++++-- .../base/transactions/composables/useTransactionsPage.ts | 7 ++++++- src/views/base/transactions/config/boursecuTabs.ts | 8 ++++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/views/base/transactions/components/Item.vue b/src/views/base/transactions/components/Item.vue index 4702719..88668bf 100644 --- a/src/views/base/transactions/components/Item.vue +++ b/src/views/base/transactions/components/Item.vue @@ -15,7 +15,7 @@

{{ props.item.title }}

{{ toJalaliOutOfUTC(props.item.expire_at) }} - + {{ formatTransactionGoldAmount(props.item, goldAmount) }} {{ props.item.unit }} @@ -54,8 +54,9 @@
{{ props.item.title }}
{{ toJalaliOutOfUTC(props.item.expire_at) }}
-
+
@@ -127,8 +128,11 @@ import { computed, ref } from 'vue' import BasicButton from '@/components/BasicPacks/BasicButton.vue' import type { Transaction } from '@/models/transaction' import { toJalaliOutOfUTC } from '@/utils/useDateTime' +import { isBoursecuProject } from '@/utils/config' import TransactionDetailPanel from './TransactionDetailPanel.vue' +const isBoursecu = isBoursecuProject() + const infoVisible = ref(false) const props = withDefaults( diff --git a/src/views/base/transactions/composables/useTransactionsPage.ts b/src/views/base/transactions/composables/useTransactionsPage.ts index ea0ad9a..d53da35 100644 --- a/src/views/base/transactions/composables/useTransactionsPage.ts +++ b/src/views/base/transactions/composables/useTransactionsPage.ts @@ -7,6 +7,7 @@ import { BOURSECU_TRANSACTION_TABS, getBoursecuStatusFilterGroup, getBoursecuStatusOptionsForTab, + boursecuTabSupportsProductFilter, type BoursecuTradeSide, type BoursecuTransactionTab, type BoursecuTransactionTabId, @@ -92,7 +93,7 @@ export function useTransactionsPageProvider(options?: { boursecu?: boolean }) { ) const showProductFilter = computed( - () => transactionsBoursecuMode.value && activeTab.value.id !== 'deposit', + () => transactionsBoursecuMode.value && boursecuTabSupportsProductFilter(activeTab.value), ) const emptyText = computed(() => { @@ -129,6 +130,10 @@ export function useTransactionsPageProvider(options?: { boursecu?: boolean }) { transactionStatusFilter.value = undefined } + if (boursecuTabSupportsProductFilter(currentTab) && !boursecuTabSupportsProductFilter(nextTab)) { + transactionProductFilter.value = undefined + } + transactionActiveTabId.value = tabId await reloadTransactionsTable() } diff --git a/src/views/base/transactions/config/boursecuTabs.ts b/src/views/base/transactions/config/boursecuTabs.ts index fb87ace..0ac07f6 100644 --- a/src/views/base/transactions/config/boursecuTabs.ts +++ b/src/views/base/transactions/config/boursecuTabs.ts @@ -85,7 +85,7 @@ const TRADE_TYPE_BY_SIDE: Record = { } export function getBoursecuStatusFilterGroup(tab: BoursecuTransactionTab): BoursecuStatusFilterGroup { - return tab.id === 'withdrawal' || tab.id === 'physical' ? 'fulfillment' : 'trade' + return tab.id === 'physical' ? 'fulfillment' : 'trade' } export function getBoursecuStatusOptionsForTab( @@ -96,6 +96,10 @@ export function getBoursecuStatusOptionsForTab( : BOURSECU_TRADE_STATUS_OPTIONS } +export function boursecuTabSupportsProductFilter(tab: BoursecuTransactionTab): boolean { + return tab.id === 'trades' || tab.id === 'physical' +} + function getBoursecuStatusFilterField(tab: BoursecuTransactionTab): string { if (tab.fetchMode === 'deposit') { return 'sts' @@ -172,7 +176,7 @@ export function buildBoursecuTransactionPagination( }) } - if (productId != null && tab.id !== 'deposit') { + if (productId != null && boursecuTabSupportsProductFilter(tab)) { filters.push({ field: 'wallet.product_id', cr: 'and',