Make boursecu branch boursecu-only and simplify app loading.

Remove multi-tenant branches and default views, show logo-only boot and splash screens, and polish boursecu transactions tab styling.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-06 12:35:42 +02:00
co-authored by Cursor
parent 2affe61dd3
commit 59cceaf581
76 changed files with 211 additions and 2932 deletions
@@ -13,10 +13,7 @@ import type { Card } from '@/models/wallet'
import { useUserStore } from '@/store/userStore'
import { useConfigStore } from '@/store/configStore'
import {
getProjectBaleContactLink,
getWalletDepositQuickAmountsRial,
isBazretalaProject,
isBoursecuProject,
} from '@/utils/config'
import { useDesktopBreakpoint } from '@/layouts/composables/useAppLayout'
import {
@@ -60,7 +57,6 @@ export interface WalletPageContext {
depositGuideSupportLink: ReturnType<typeof computed<string>>
depositSmsSupportLink: ReturnType<typeof computed<string>>
depositQuickAmounts: ReturnType<typeof computed<readonly number[]>>
isBazretalaProject: typeof isBazretalaProject
usePriceWithoutType: typeof usePriceWithoutType
formatCashWalletBalanceText: typeof formatCashWalletBalanceText
setIsDeposit: (val: boolean) => void
@@ -100,16 +96,12 @@ export function useWalletPage() {
const depositQuickAmounts = computed(() => getWalletDepositQuickAmountsRial())
const depositGuideSupportLink = computed(() => {
if (config.config?.name === 'garoosi' || isBazretalaProject()) {
return getProjectBaleContactLink()
}
return buildSupportMessengerUrl(
const depositGuideSupportLink = computed(() =>
buildSupportMessengerUrl(
supportMessengerSettings.value.messenger,
supportMessengerSettings.value.messengerId,
)
})
),
)
const depositSmsSupportLink = computed(() =>
buildDepositSmsUrl(supportMessengerSettings.value.depositSmsSupportNumber),
@@ -132,7 +124,7 @@ export function useWalletPage() {
})
const disableButton = computed(() => {
const minWithdrawAmount = isBoursecuProject() ? 200_000 : 1_000_000
const minWithdrawAmount = 200_000
const minDepositAmount = 1_000_000
if (!loading.value) {
@@ -297,7 +289,6 @@ export function useWalletPage() {
depositGuideSupportLink,
depositSmsSupportLink,
depositQuickAmounts,
isBazretalaProject,
usePriceWithoutType,
formatCashWalletBalanceText,
setIsDeposit,
@@ -55,9 +55,6 @@
<Transition mode="out-in" name="fade">
<div v-if="!isDeposit" key="withdraw" class="dwallet-form__extras">
<p v-if="!isBoursecu" class="dwallet-form__hint dwallet-form__hint--warn">
حداقل مبلغ برداشتی 100 هزار تومان می باشد.
</p>
<p class="dwallet-form__balance-text">
{{ formatCashWalletBalanceText(usePriceWithoutType(walletStore?.walletInfo?.cash ?? 0)) }}
</p>
@@ -81,7 +78,7 @@
</a-form-item>
</div>
<div v-else key="deposit" class="dwallet-form__extras">
<p v-if="!isBazretalaProject()" class="dwallet-form__hint dwallet-form__hint--warn">
<p class="dwallet-form__hint dwallet-form__hint--warn">
حداقل مبلغ واریزی 100 هزار تومان می باشد.
</p>
<div class="dwallet-quick-amounts">
@@ -108,7 +105,7 @@
<span v-else>{{ isDeposit ? 'واریز' : 'برداشت' }}</span>
</BasicButton>
<BoursecuWithdrawGuide v-if="!isDeposit && isBoursecu" />
<BoursecuWithdrawGuide v-if="!isDeposit" />
</a-form>
</section>
@@ -136,53 +133,34 @@
<template v-else>
<div class="dwallet-side__header">
<h3 class="dwallet-side__title">{{ isBoursecu ? 'حساب‌های بانکی' : 'کارت‌های بانکی' }}</h3>
<h3 class="dwallet-side__title">حساب‌های بانکی</h3>
<button
v-if="isBoursecu"
type="button"
class="dwallet-side__add-link"
@click="showAddCard = true"
>
+ افزودن شبا
</button>
<button
v-else
type="button"
class="dwallet-side__add-btn"
@click="showAddCard = true"
>
<BasicIcon icon="vuesax-linear:add" size="16" />
<span>افزودن کارت</span>
</button>
</div>
<p v-if="isBoursecu && cardItems.length > 0" class="dwallet-side__subtitle">واریز به</p>
<p v-if="cardItems.length > 0" class="dwallet-side__subtitle">واریز به</p>
<div v-if="!loading && cardItems.length === 0" class="dwallet-side__empty dwallet-side__empty--cards">
<BasicIcon icon="vuesax-linear:card" size="32" />
<p>هیچ کارتی یافت نشد</p>
<button type="button" class="dwallet-side__add-btn dwallet-side__add-btn--primary" @click="showAddCard = true">
{{ isBoursecu ? 'افزودن شبا' : 'افزودن کارت جدید' }}
افزودن شبا
</button>
</div>
<BoursecuBankAccountPicker
v-else-if="isBoursecu"
v-else
v-model:id="form.card_id"
variant="desktop"
:items="cardItems"
@add-account="showAddCard = true"
@card-deleted="getCards"
/>
<div v-else-if="cardItems.length > 0" class="dwallet-cards">
<CardSlider
v-model:id="form.card_id"
:items="cardItems"
class="dwallet-cards__slider"
@cardDeleted="getCards"
/>
</div>
</template>
</section>
</div>
@@ -199,15 +177,11 @@ import ListAnim from '@/components/ListAnim.vue'
import TransactionSkeleton from '@/components/TransactionSkeleton.vue'
import { useConfigStore } from '@/store/configStore'
import { required } from '@/utils/inputRules'
import CardSlider from '../components/UISlider/index.vue'
import BoursecuBankAccountPicker from '../components/BoursecuBankAccountPicker.vue'
import BoursecuWithdrawGuide from '../components/BoursecuWithdrawGuide.vue'
import Item from '../components/Item.vue'
import { isBoursecuProject } from '@/utils/config'
import { useWalletPageContext } from '../composables/useWalletPage'
const isBoursecu = isBoursecuProject()
const {
isDeposit,
walletStore,
@@ -220,7 +194,6 @@ const {
loadingMore,
desktopDepositScrollEl,
depositQuickAmounts,
isBazretalaProject,
usePriceWithoutType,
formatCashWalletBalanceText,
setIsDeposit,
+1 -18
View File
@@ -83,22 +83,7 @@
:support-link="depositGuideSupportLink"
:sms-link="depositSmsSupportLink"
>
<template v-if="config.config.name === 'garoosi'">
<p>جهت شارژ حساب کاربری خود، مبلغ موردنظر را به شماره کارت زیر واریز نموده و از طریق لینک زیر به پشتیبان اطلاع دهید.</p>
<p class="deposit-guide-note deposit-guide-note--warn">در صورت عدم همخوانی کارت ملی و فیش واریزی کیف پول شارژ نمیشود!</p>
<p class="deposit-guide-note">(سیده زهرا موسوی)</p>
<p class="deposit-guide-note">شماره کارت: 6037701900311389</p>
<p class="deposit-guide-note">شماره شبا: IR 080160000000001143804581</p>
</template>
<template v-else-if="isBazretalaProject()">
<p>جهت شارژ حساب کاربری خود، مبلغ موردنظر را به شماره کارت زیر واریز نموده و به شماره پشتیبانی 09121784258 در برنامه بله اطلاع دهید.</p>
<p class="deposit-guide-note">(گنجينه طلاي حاجي ابوالفتح - بانک ملی)</p>
<p class="deposit-guide-note">شماره کارت: 6037998800496928</p>
<p class="deposit-guide-note">شماره شبا: IR 110170000000372468150002</p>
</template>
<template v-else>
<template>
<p>{{ supportMessengerText }}</p>
</template>
</WalletDepositGuideModal>
@@ -138,7 +123,6 @@ import WalletDepositGuideModal from './components/WalletDepositGuideModal.vue'
const isDesktop = useDesktopBreakpoint()
const {
config,
showAddCard,
chargeAccountModal,
showConfirmCode,
@@ -149,7 +133,6 @@ const {
supportMessengerText,
depositGuideSupportLink,
depositSmsSupportLink,
isBazretalaProject,
handleOnComplete,
loading,
addCard,
@@ -30,11 +30,11 @@
</div>
<div
class="px-5 mpage-content mpage-content--with-subheader"
:class="isDeposit ? 'pb-2' : isBoursecu ? 'pb-[calc(var(--app-bottom-chrome-height)+1rem)]' : 'pb-[calc(var(--app-bottom-chrome-height)+var(--app-add-card-height)+1rem)]'"
:class="isDeposit ? 'pb-2' : 'pb-[calc(var(--app-bottom-chrome-height)+1rem)]'"
>
<a-form :model="form" class="!mt-5" name="basic" @finish="ok()">
<BoursecuBankAccountPicker
v-if="!isDeposit && isBoursecu"
v-if="!isDeposit"
v-model:id="form.card_id"
variant="mobile"
:items="cardItems"
@@ -59,9 +59,6 @@
</a-form-item>
<Transition mode="out-in" name="fade">
<div v-if="!isDeposit">
<div v-if="!isBoursecu" class="text-red text-xs font-bold mb-2">
حداقل مبلغ برداشتی 100 هزار تومان می باشد.
</div>
<div class="font-bold text-xs">
{{ formatCashWalletBalanceText(usePriceWithoutType(walletStore?.walletInfo?.cash ?? 0)) }}
</div>
@@ -85,7 +82,7 @@
</a-form-item>
</div>
<div v-else class="mt-3">
<div v-if="!isBazretalaProject()" class="text-red text-xs font-bold mb-2">
<div class="text-red text-xs font-bold mb-2">
حداقل مبلغ واریزی 100 هزار تومان می باشد.
</div>
<div class="flex gap-2">
@@ -118,7 +115,7 @@
</a-form>
<div
v-if="!isDeposit && isBoursecu"
v-if="!isDeposit"
class="wallet-withdraw-guide-panel relative z-10"
>
<BoursecuWithdrawGuide />
@@ -137,44 +134,12 @@
</list-anim>
<TransactionSkeleton v-for="i in 13" v-else :key="i" class="mt-1" />
</div>
<Transition mode="out-in" name="fade">
<template v-if="!isDeposit">
<div
v-if="!loading && cardItems.length === 0 && !isBoursecu"
class="h-30 flex items-center justify-center"
>
هیچ کارتی یافت نشد
</div>
</template>
</Transition>
</div>
<Teleport to="body">
<CardSlider
v-if="!isDeposit && !isBoursecu && cardItems.length > 0 && !showAddCard"
v-model:id="form.card_id"
:items="cardItems"
class="card-slider-wrap wallet-card-slider"
@cardDeleted="getCards"
/>
</Teleport>
<Teleport to="body">
<div
v-if="!isDeposit && !isBoursecu && !showAddCard"
class="add-card app-dock-add-bar"
@click="showAddCard = true"
>
<div>افزودن کارت جدید</div>
<BasicIcon icon="vuesax-linear:add" />
</div>
</Teleport>
</div>
</template>
<script lang="ts" setup>
import BasicButton from '@/components/BasicPacks/BasicButton.vue'
import BasicIcon from '@/components/BasicPacks/BasicIcon.vue'
import MobilePageHeader from '@/layouts/components/MobilePageHeader.vue'
import BasicInput from '@/components/BasicPacks/BasicInput.vue'
import Bg_main from '@/components/bg_main.vue'
@@ -183,15 +148,11 @@ import TransactionSkeleton from '@/components/TransactionSkeleton.vue'
import { useConfigStore } from '@/store/configStore'
import { required } from '@/utils/inputRules'
import img from '@/assets/img/user_ly1.svg'
import CardSlider from '../components/UISlider/index.vue'
import BoursecuBankAccountPicker from '../components/BoursecuBankAccountPicker.vue'
import BoursecuWithdrawGuide from '../components/BoursecuWithdrawGuide.vue'
import Item from '../components/Item.vue'
import { isBoursecuProject } from '@/utils/config'
import { useWalletPageContext } from '../composables/useWalletPage'
const isBoursecu = isBoursecuProject()
const {
isDeposit,
walletStore,
@@ -204,7 +165,6 @@ const {
loadingMore,
mobileDepositScrollEl,
depositQuickAmounts,
isBazretalaProject,
usePriceWithoutType,
formatCashWalletBalanceText,
setIsDeposit,