safavi works

This commit is contained in:
2026-06-23 09:18:41 +02:00
parent 0e16e7c186
commit 1cf4c9675b
41 changed files with 965 additions and 522 deletions
@@ -4,6 +4,8 @@ import { useDesktopBreakpoint } from '@/layouts/composables/useAppLayout'
import { loading, loadingMore } from '@/utils'
import {
BOURSECU_TRANSACTION_TABS,
getBoursecuStatusFilterGroup,
getBoursecuStatusOptionsForTab,
type BoursecuTradeSide,
type BoursecuTransactionTab,
type BoursecuTransactionTabId,
@@ -16,6 +18,8 @@ import {
resetTransactionsPagination,
transactionActiveTabId,
transactionDateFilter,
transactionDateFromFilter,
transactionDateToFilter,
transactionItems,
transactionPagination,
transactionStatusFilter,
@@ -30,12 +34,15 @@ export interface TransactionsPageContext {
tableOutput: typeof transactionTableOutput
showFilter: ReturnType<typeof ref<boolean>>
dateFilter: typeof transactionDateFilter
dateFromFilter: typeof transactionDateFromFilter
dateToFilter: typeof transactionDateToFilter
statusFilter: typeof transactionStatusFilter
mobileObserverEl: ReturnType<typeof ref<HTMLElement | null>>
desktopObserverEl: ReturnType<typeof ref<HTMLElement | null>>
activeTabId: typeof transactionActiveTabId
tradeSide: typeof transactionTradeSide
activeTab: ReturnType<typeof computed<BoursecuTransactionTab>>
statusOptions: ReturnType<typeof computed<ReturnType<typeof getBoursecuStatusOptionsForTab>>>
emptyText: ReturnType<typeof computed<string>>
resetPagination: typeof resetTransactionsPagination
initTable: () => Promise<void>
@@ -68,6 +75,8 @@ export function useTransactionsPageProvider(options?: { boursecu?: boolean }) {
BOURSECU_TRANSACTION_TABS[0],
)
const statusOptions = computed(() => getBoursecuStatusOptionsForTab(activeTab.value))
const emptyText = computed(() => {
if (!transactionsBoursecuMode.value) {
return 'تراکنشی موجود نیست'
@@ -94,6 +103,14 @@ export function useTransactionsPageProvider(options?: { boursecu?: boolean }) {
return
}
const currentTab = activeTab.value
const nextTab =
BOURSECU_TRANSACTION_TABS.find((tab) => tab.id === tabId) ?? BOURSECU_TRANSACTION_TABS[0]
if (getBoursecuStatusFilterGroup(currentTab) !== getBoursecuStatusFilterGroup(nextTab)) {
transactionStatusFilter.value = undefined
}
transactionActiveTabId.value = tabId
await reloadTransactionsTable()
}
@@ -152,12 +169,15 @@ export function useTransactionsPageProvider(options?: { boursecu?: boolean }) {
tableOutput: transactionTableOutput,
showFilter,
dateFilter: transactionDateFilter,
dateFromFilter: transactionDateFromFilter,
dateToFilter: transactionDateToFilter,
statusFilter: transactionStatusFilter,
mobileObserverEl,
desktopObserverEl,
activeTabId: transactionActiveTabId,
tradeSide: transactionTradeSide,
activeTab,
statusOptions,
emptyText,
resetPagination: resetTransactionsPagination,
initTable,
@@ -20,6 +20,8 @@ export const transactionPagination = ref<TableEngineInput>({ filters: [], limit:
export const transactionItems = ref<Transaction[]>([])
export const transactionTableOutput = ref<TableEngineOutput<Transaction> | null>(null)
export const transactionDateFilter = ref<string>()
export const transactionDateFromFilter = ref<string>()
export const transactionDateToFilter = ref<string>()
export const transactionStatusFilter = ref<string>()
export const transactionActiveTabId = ref<BoursecuTransactionTabId>('trades')
export const transactionTradeSide = ref<BoursecuTradeSide>('buy')
@@ -40,7 +42,8 @@ export function resetTransactionsPagination() {
transactionPagination.value = buildBoursecuTransactionPagination(
getActiveBoursecuTab(),
transactionTradeSide.value,
transactionDateFilter.value,
transactionDateFromFilter.value,
transactionDateToFilter.value,
transactionStatusFilter.value,
)
return
@@ -151,6 +154,8 @@ export function resetTransactionsPageData() {
transactionItems.value = []
transactionTableOutput.value = null
transactionDateFilter.value = undefined
transactionDateFromFilter.value = undefined
transactionDateToFilter.value = undefined
transactionStatusFilter.value = undefined
transactionActiveTabId.value = 'trades'
transactionTradeSide.value = 'buy'