Merge remote-tracking branch 'origin/modular' into modular

This commit is contained in:
2026-06-11 15:17:34 +03:30
19 changed files with 243 additions and 38 deletions
-2
View File
@@ -25,7 +25,6 @@ declare module 'vue' {
ATag: typeof import('ant-design-vue/es')['Tag']
ATextarea: typeof import('ant-design-vue/es')['Textarea']
ATooltip: typeof import('ant-design-vue/es')['Tooltip']
AUpload: typeof import('ant-design-vue/es')['Upload']
BaseDatePicker: typeof import('./src/components/BasicPacks/BaseDatePicker/src/BaseDatePicker.vue')['default']
Basic: typeof import('./src/components/BasicPacks/BaseDatePicker/src/datePick/demo/basic.vue')['default']
BasicActionSheet: typeof import('./src/components/BasicPacks/BasicActionSheet.vue')['default']
@@ -69,6 +68,5 @@ declare module 'vue' {
TransactionSkeleton: typeof import('./src/components/TransactionSkeleton.vue')['default']
VanActionSheet: typeof import('vant/es')['ActionSheet']
VanDialog: typeof import('vant/es')['Dialog']
VanField: typeof import('vant/es')['Field']
}
}
+2 -2
View File
@@ -45,7 +45,7 @@
<div class="self-center splash_appear_fade_in">
<img
:src="getProjectLoginLogo(config?.config?.avatar)"
:class="isBoursecuProject()
:class="hasCustomLoginLogoLayout()
? 'w-[80vw] max-w-[320px] h-auto object-contain'
: 'h-[20vh] object-contain'"
>
@@ -123,7 +123,7 @@ import img_bottomGradiant from '@/views/login/assets/img/gr_bottom_white.svg'
import {DotLottieVue} from '@lottiefiles/dotlottie-vue'
import BasicButton from '@/components/BasicPacks/BasicButton.vue'
import {useConfigStore} from "@/store/configStore";
import {getProjectFontFamily, getProjectLoginLogo, getProjectSplashBackground, getProjectBrandRed, isBoursecuProject} from "@/utils/config";
import {getProjectFontFamily, getProjectLoginLogo, getProjectSplashBackground, getProjectBrandRed, hasCustomLoginLogoLayout, isBoursecuProject} from "@/utils/config";
import {ConfigProvider as AConfigProvider} from 'ant-design-vue'
import BasicIcon from "@/components/BasicPacks/BasicIcon.vue";
Binary file not shown.

After

Width:  |  Height:  |  Size: 551 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

+82
View File
@@ -1,4 +1,8 @@
import boursecuLogo from '@/assets/img/boursemes_logofull.png'
import bazretalaLoginLogo from '@/assets/img/bazretala-login-logo.png'
import bazretalaNavLogo from '@/assets/img/bazretala-nav-logo.png'
import bazretalaFundBg from '@/assets/img/bazretala-fund-bg.png'
import bazretalaEmptyFund from '@/assets/img/bazretala-empty-fund.png'
export function getConfigApp(key: string) {
const config = window.__APP_CONFIG__ ? window.__APP_CONFIG__.user:{}
@@ -13,6 +17,14 @@ export function isBoursecuProject() {
return getConfigApp('name') === 'boursecu'
}
export function isBazretalaProject() {
return getConfigApp('name') === 'bazretala'
}
export function hasCustomLoginLogoLayout() {
return isBoursecuProject() || isBazretalaProject()
}
export const BOURSECU_BRAND_RED = '#bc3c3b'
export const BOURSECU_BRAND_NAV = '#133050'
@@ -36,9 +48,66 @@ export function getProjectLoginLogo(avatar?: string | null) {
if (isBoursecuProject()) {
return boursecuLogo
}
if (isBazretalaProject()) {
return bazretalaLoginLogo
}
return avatar ?? getConfigApp('avatar')
}
export function getProjectNavLogo(avatar?: string | null) {
if (isBazretalaProject()) {
return bazretalaNavLogo
}
if (isBoursecuProject()) {
return boursecuLogo
}
return avatar ?? getConfigApp('avatar')
}
export const BAZRETALA_SUPPORT_PHONE = '09121784258'
export function getProjectSupportPhone() {
if (isBazretalaProject()) {
return BAZRETALA_SUPPORT_PHONE
}
return ''
}
export function getProjectSupportPhoneLink() {
const phone = getProjectSupportPhone()
return phone ? `tel:${phone}` : 'tel:'
}
export const BAZRETALA_BALE_ID = 'bazretala'
export function getProjectBaleLink() {
if (isBazretalaProject()) {
return `https://ble.ir/${BAZRETALA_BALE_ID}`
}
return 'https://ble.ir/'
}
export function getProjectFundHeaderBackground(defaultBackground: string) {
if (isBazretalaProject()) {
return bazretalaFundBg
}
return defaultBackground
}
export function getProjectFundEmptyImage(defaultImage: string) {
if (isBazretalaProject()) {
return bazretalaEmptyFund
}
return defaultImage
}
export function getProjectFundEmptyText() {
if (isBazretalaProject()) {
return 'یک بذر جدید بکار!'
}
return 'یک گنج جدید بساز!'
}
export function getProjectLoginTaglineLines() {
if (!isBoursecuProject()) {
return null
@@ -108,6 +177,19 @@ export function getReferralShareText(options: {
برای مشاهده قیمت‌ها، تحلیل بازار و تکمیل ثبت‌نام، روی لینک زیر کلیک کنید
${link}`
}
if (isBazretalaProject()) {
return `️سلام به مناسبت افتتاحیه بذرطلا وایّام عیدغدیر ومباهله با ثبت نام آنلاین واَمن بدون کارمزد0/5% از بذرطلا با تائیدمُعرف خرید کنید و نذارین پول خُرداتون خاک بخوره (عضویت فقط ازطریق مُعرف امکان پذیرمیباشد)
بذرش کن بکار،پس اندازکن هروقت خواستی
طلا برداشت کن بدون مالیات
با پول های کوچک و بیکارت
ی پس انداز طلایی برای خودت و خونوادت درست کن ما در بذرطلا آنلاین کنارت هستیم
این دعوت نامه از طرف "${userName}" عضوفعالِ اَپ بذرطلا برای شما ارسال شده تا شما هم از کاشت بذر طلای خودتون جا نمونید.
روی لینک زیر کلیک کنید و کاشت بذرطلای خودتونو با ثبت نام و خرید اول تکمیل کنید.
${link}`
}
+5 -5
View File
@@ -48,12 +48,12 @@
</a>
</div>
<div v-else class="wrap-fix bottom-0 px-10 pb-3rem flex gap-2 bg-white">
<a class="w-full" href="tel:">
<a class="w-full" :href="getProjectSupportPhoneLink()">
<BasicButton class="w-full" type="primary">تماس با پشتیبانی</BasicButton>
</a>
<a href="https://ble.ir/">
<img src="@/assets/img/bale.png" alt="" class="h-10 w-10"/>
</a>
<a :href="getProjectBaleLink()" target="_blank" rel="noopener noreferrer">
<img src="@/assets/img/bale.png" alt="بله" class="h-10 w-10"/>
</a>
</div>
</div>
</div>
@@ -78,7 +78,7 @@ import { message } from 'ant-design-vue'
import { updateMe } from '@/api/me'
import { useUserStore } from '@/store/userStore'
import {useConfigStore} from "@/store/configStore";
import {getReferralShareText, getReferralShareTitle, isBoursecuProject} from "@/utils/config";
import {getProjectBaleLink, getProjectSupportPhoneLink, getReferralShareText, getReferralShareTitle, isBoursecuProject} from "@/utils/config";
import { getAboutSections } from './aboutContent'
const config=useConfigStore()
+7
View File
@@ -13,6 +13,12 @@
<div ref="el" :class="loading? 'h-screen': ''" class="px-3 pt-16 pb-2 overflow-y-scroll"
style="max-height: calc(100vh - 50px)">
<div
v-if="isBazretalaProject()"
class="text-justify text-sm text-primary mb-4 px-1 leading-7"
>
جهت تحویل فیزیکی محصول در تهران و قم ازطریق معرف اقدام فرمائید یا با شماره امورمالی و حسابداری 09925202099 درارتباط باشید.
</div>
<list-anim v-if="!loading" class="pb-[calc(var(--app-bottom-chrome-height)+var(--app-add-card-height)+1rem)]">
<Item v-for="item in items" :key="item.id" :item="item" @edit="openEdit" @refresh="initItems" />
<!-- <TransactionSkeleton v-if="loadingMore" class="mt-1 mb-8" />-->
@@ -138,6 +144,7 @@ import type { Address } from '@/models/address'
import { createAddress, getCity, getProvince, tableAddress, updateAddress } from '@/api/address'
import BasicTextArea from '@/components/BasicPacks/BasicTextArea.vue'
import img from "@/assets/img/user_ly1.svg";
import { isBazretalaProject } from '@/utils/config'
const provinceList = ref<any[]>([])
const cityList = ref<any[]>()
+62 -9
View File
@@ -6,15 +6,37 @@
</div>
<div class="mr-2">دارایی ها</div>
</div>
<div class="text-tertiary bg-primary w-screen md:w-full h-[70vh] fixed md:absolute overflow-hidden">
<img :src="img" alt="" class="w-full absolute bottom-0 left-0 opacity-5 pointer-events-none z-0" />
<div class="pt-15 flex flex-col relative z-10">
<div class="text-tertiary font-bold mr-5 z-20">موجودی دارایی ها</div>
<div
class="w-screen md:w-full h-[70vh] fixed md:absolute overflow-hidden"
:class="isBazretalaProject() ? 'bazretala-fund-header' : 'text-tertiary bg-primary'"
>
<img
:src="fundHeaderBackground"
alt=""
:class="isBazretalaProject()
? 'pointer-events-none z-0 absolute inset-0 w-full object-cover object-center'
: 'pointer-events-none z-0 w-full absolute bottom-0 left-0 opacity-5'"
/>
<div
class="pt-15 flex flex-col relative z-10"
:class="isBazretalaProject() ? 'text-white' : 'text-tertiary'"
>
<div class="font-bold mr-5 z-20">موجودی دارایی ها</div>
<div v-if="meta?.has_count_based_products" class="flex mt-4 justify-center mt-2 w-full z-20">
محصولات:
<div class="text-l mr-4 font-bold">{{ countBasedInventory }} عدد</div>
</div>
<template v-if="meta?.single_metal && primaryMetalTotal">
<template v-if="isBazretalaProject()">
<div class="flex justify-center mt-2 w-full z-20">
دارایی نقره:
<div class="text-l mr-4 font-bold">{{ walletStore.walletInfo?.count_silver ?? 0 }}گرم</div>
</div>
<div class="flex justify-center mt-2 w-full z-20">
دارایی طلایی:
<div class="text-l mr-4 font-bold">{{ walletStore.walletInfo?.count_gold_wallet ?? 0 }}گرم</div>
</div>
</template>
<template v-else-if="meta?.single_metal && primaryMetalTotal">
<div class="flex justify-center mt-2 w-full z-20">
{{ primaryMetalTotal.label }}:
<div class="text-l mr-4 font-bold">{{ formatMetalTotal(primaryMetalTotal) }}</div>
@@ -30,7 +52,7 @@
<div class="text-l mr-4 font-bold">{{ formatMetalTotal(metal) }}</div>
</div>
</template>
<div v-if="meta?.has_count_based_products" class="flex justify-center mt-2 w-full z-20">
<div v-if="meta?.has_count_based_products && !isBazretalaProject()" class="flex justify-center mt-2 w-full z-20">
مجموع موجودی:
<div class="text-l mr-4 font-bold">{{ countBasedInventory }} عدد</div>
</div>
@@ -50,8 +72,12 @@
<div v-if="inventoryCards.length === 0 && !loading" class="w-full h-full flex justify-center items-center">
<div>
<img :src="empty" alt="" class="w-70 ">
<div v-if="nameProject !== 'abaeigold'" class="text-center text-lg">یک گنج جدید بساز!</div>
<img
:src="fundEmptyImage"
alt=""
:class="isBazretalaProject() ? 'w-48 max-w-[11rem]' : 'w-70'"
>
<div v-if="nameProject !== 'abaeigold'" class="text-center text-lg">{{ fundEmptyText }}</div>
</div>
</div>
@@ -83,9 +109,20 @@ import { useConfigStore } from '@/store/configStore'
import { useWalletAssets } from '@/composables/useWalletAssets'
import type { WalletMetalTotal } from '@/models/walletAssets'
import { resolveSummaryMetalWeight, fundPageInventoryCards } from '@/utils/productAssets'
import { useWalletStore } from '@/store/walletStore'
import {
getProjectFundEmptyImage,
getProjectFundEmptyText,
getProjectFundHeaderBackground,
isBazretalaProject,
} from '@/utils/config'
const nameProject = useConfigStore().config.name
const { assetsSummary, loadWalletAssets } = useWalletAssets()
const walletStore = useWalletStore()
const fundHeaderBackground = getProjectFundHeaderBackground(img)
const fundEmptyImage = getProjectFundEmptyImage(empty)
const fundEmptyText = getProjectFundEmptyText()
const meta = computed(() => assetsSummary.value?.meta)
const inventoryCards = computed(() => fundPageInventoryCards(assetsSummary.value?.inventory_cards ?? []))
@@ -100,7 +137,11 @@ const countBasedInventory = computed(() =>
onMounted(async () => {
try {
loading.value = true
await loadWalletAssets(true)
const tasks = [loadWalletAssets(true)]
if (isBazretalaProject()) {
tasks.push(walletStore.getMyWallet())
}
await Promise.all(tasks)
} catch (e) {
console.log(e)
} finally {
@@ -114,4 +155,16 @@ function formatMetalTotal(metal: WalletMetalTotal) {
</script>
<style scoped>
.bazretala-fund-header {
background-color: #000;
}
.bazretala-fund-header::after {
content: '';
position: absolute;
inset: 0;
z-index: 1;
background: rgba(0, 0, 0, 0.45);
pointer-events: none;
}
</style>
+2 -2
View File
@@ -115,7 +115,7 @@
<img v-else
:class="isBoursecuNavLogo ? 'p-1' : 'p-2'"
:src="getProjectLoginLogo(config.config?.avatar)"
:src="getProjectNavLogo(config.config?.avatar)"
/>
</div>
<!-- <div class="flex justify-center">خرید </div>
@@ -155,7 +155,7 @@ import BasicButton from '@/components/BasicPacks/BasicButton.vue'
import type {Transaction} from '@/models/transaction'
import BasicIcon from '@/components/BasicPacks/BasicIcon.vue'
import {useConfigStore} from "@/store/configStore";
import {getConfigApp, getProjectLoginLogo, isBoursecuProject} from "@/utils/config";
import {getConfigApp, getProjectNavLogo, isBoursecuProject} from "@/utils/config";
/*onMounted(async () => {
const c = await document.getElementById("canvas1");
+4 -4
View File
@@ -53,11 +53,11 @@
</a>
</div>
<div v-else class="wrap-fix bottom-0 px-10 pb-3rem flex gap-2 bg-white">
<a class="w-full" href="tel:">
<a class="w-full" :href="getProjectSupportPhoneLink()">
<BasicButton class="w-full" type="primary">تماس با پشتیبانی</BasicButton>
</a>
<a href="https://ble.ir/">
<img src="@/assets/img/bale.png" alt="" class="h-10 w-10"/>
<a :href="getProjectBaleLink()" target="_blank" rel="noopener noreferrer">
<img src="@/assets/img/bale.png" alt="بله" class="h-10 w-10"/>
</a>
</div>
</div>
@@ -84,7 +84,7 @@ import { updateMe } from '@/api/me'
import { useUserStore } from '@/store/userStore'
import BaseDatePicker from '@/components/BasicPacks/BaseDatePicker'
import {useConfigStore} from "../../../store/configStore";
import {getReferralShareText, getReferralShareTitle, isBoursecuProject} from "@/utils/config";
import {getProjectBaleLink, getProjectSupportPhoneLink, getReferralShareText, getReferralShareTitle, isBoursecuProject} from "@/utils/config";
import {
getRulesBlocks,
getRulesTitle,
@@ -14,7 +14,7 @@
<!-- <img :src="logoFull" class="mb-20 mt-5 px-10" />-->
<div class="overflow-y-auto h-65vh pb-20 border-primary">
<div class=" font-bold text-sm text-primary text-center">جواز کسب و کار</div>
<!-- <img :src="permission1" alt="" class="w-full">-->
<img :src="permissionImage" alt="جواز کسب و کار" class="w-full">
<div class="mt-5 text-xs"></div>
<div v-if="config.config.name === 'garoosi'" class="wrap-fix bottom-0 px-10 pb-3rem flex gap-2 bg-white">
<a class="w-full" href="tel:09031265925">
@@ -25,11 +25,11 @@
</a>
</div>
<div v-else class="wrap-fix bottom-0 px-10 pb-3rem flex gap-2 bg-white">
<a class="w-full" href="tel:">
<a class="w-full" :href="getProjectSupportPhoneLink()">
<BasicButton class="w-full" type="primary">تماس با پشتیبانی</BasicButton>
</a>
<a href="https://ble.ir/">
<img src="@/assets/img/bale.png" alt="" class="h-10 w-10"/>
<a :href="getProjectBaleLink()" target="_blank" rel="noopener noreferrer">
<img src="@/assets/img/bale.png" alt="بله" class="h-10 w-10"/>
</a>
</div>
</div>
@@ -43,6 +43,7 @@
import { onMounted, reactive, ref } from 'vue'
import img from '@/assets/img/user_ly1.svg'
import permissionImage from '@/assets/img/permision.png'
// import gr_bottom from './assets/img/gr_bottom_white.svg'
import { loading } from '@/utils'
import BasicButton from '@/components/BasicPacks/BasicButton.vue'
@@ -54,7 +55,7 @@ import { message } from 'ant-design-vue'
import { updateMe } from '@/api/me'
import { useUserStore } from '@/store/userStore'
import {useConfigStore} from "@/store/configStore";
import {getReferralShareText, getReferralShareTitle} from "@/utils/config";
import {getProjectBaleLink, getProjectSupportPhoneLink, getReferralShareText, getReferralShareTitle} from "@/utils/config";
const config=useConfigStore()
+44
View File
@@ -1,3 +1,5 @@
import { isBazretalaProject } from '@/utils/config'
export interface RulesBlock {
title?: string
items: string[]
@@ -39,6 +41,40 @@ function getDefaultRulesItems(nameProject: string): string[] {
]
}
function getBazretalaRulesBlocks(): RulesBlock[] {
return [
{
items: [
'کاربران موظفند قبل از ثبت‌ نام، تمامی مفاد این تعهدنامه را مطالعه نموده و صرفاً در صورت پذیرش آن اقدام به ثبت‌نام نمایند.',
'کاربران بذر طلا می‌پذیرند که کلیه‌ی فعالیت‌های آن‌ها در بذر طلا، در چارچوب قوانین جمهوری اسلامی ایران بوده و هیچ گونه فعالیتی خارج از این چارچوب انجام نخواهد شد.',
'احراز هویت برای استفاده از خدمات بذر طلا ضروری بوده و کاربران موظفند اطلاعات صحیح خود را بارگذاری نمایند؛ بدیهی است در صورت وجود هرگونه تخلف در احراز هویت، مسئولیت به عهده‌ی فرد متخلف بوده و بذر طلا حق توقف ارائه خدمات به کاربر مذکور و ارجاع موارد تخلف به مراجع ذی‌صلاح را خواهد داشت.',
'بذر طلا خود را ملزم به حفظ اطلاعات شخصی کاربران در چارچوب قوانین قضایی کشور می‌داند.',
'کاربران بذر طلا تعهد می‌دهند که از قرار دادن حساب خود در اختیار دیگران خودداری نمایند. از خدمات سایت، تنها برای حساب شخصی خود استفاده نموده و مسئولیت استفاده از خدمات بذر طلا برای فردی دیگر، به عهده کاربر خواهد بود. شماره حساب اعلام شده به سایت باید متعلق به کاربر بوده و کاربران مجاز به دادن شماره حساب متعلق به اشخاص دیگر نیستند.',
'کاربران می‌پذیرند در صورت تشخیص کارشناسان پشتیبانی، جهت حفظ امنیت دارایی حساب کاربری‌شان با اطلاع قبلی نسبت به برقراری تماس تصویری با تیم پشتیبان همکاری نمایند.',
'هرگونه سهل‌انگاری کاربران در حفظ اطلاعات شخصی و امنیتی از جمله: رمز عبور کاربر، سرقت گوشی کاربر، سرقت کارت ملی و مدارک شناسایی کاربر، سپردن مدارک شخصی و موبایل به فرد ثالث و ... به عهده‌ی شخص کاربر بوده و بذر طلا هیچ گونه مسئولیتی در این موارد نخواهد داشت.',
'اکیداً توصیه می‌شود از رمز عبوری پیچیده، امن و همچنین کد شناسایی دو عاملی استفاده شود.',
'بذر طلا این اطمینان را می‌دهد که دارایی‌های کاربران را نزد خود به امانت و به بهترین شکل و با بالاترین استانداردهای امنیتی ممکن حفظ نماید؛ در صورت بروز هرگونه مشکل امنیتی، بذر طلا متعهد به جبران خسارت خواهد بود.',
'به عنوان پلتفرم معاملات برخط فلزات گران‌بها، هیچ‌گونه مسئولیتی در قبال تصمیمات اقتصادی فی مابین کاربران و سود و زیان حاصل از آن بر عهده بذر طلا نمی‌باشد.',
'بذر طلا حق اصلاح و تغییر قوانین و مقررات ذکر شده در این صفحه را چه به صورت کلی و چه به صورت جزئی دارد و نسخه نهایی را در این صفحه در معرض دید قرار می‌دهد. استفاده از خدمات بذر طلا پس از اعمال تغییرات، به معنای پذیرش همه تغییرات می‌باشد.',
'از لحظه خرید کاربران تا زمان تحویل طلا و نقره ی خریداری شده، مسئولیت حفظ و نگهداری اصل طلا و نقره بر عهده بذر طلا می‌باشد.',
'کاربران بذر طلا اذعان می‌دارند که از ریسک‌های اقتصادی مربوط به سرمایه‌گذاری در حوزه طلا و نقره مطلع بوده و با علم بر این موضوع اقدام به تبادل و سرمایه‌گذاری می‌کنند.',
'بذر طلا متعهد می‌شود در حد توان از حریم شخصی شما محافظت کند و در این راستا، تکنولوژی مورد نیاز در سایت و پلتفرم را برای هر چه مطمئن‌تر و امن‌تر شدن استفاده شما، توسعه دهد.',
'در صورت بروز نوسان شدید در قیمت طلا و نقره هرگونه رویداد برهم‌زننده نظم حاکم بر بازار طلا و نقره، بذر طلا می‌تواند برای خرید و فروش طلا و نقره توسط کاربر سقف تعیین کند تا دو طرف متضرر نشوند.',
'بذر طلا مجاز است بدون اطلاع قبلی و به صلاح‌دید شخصی نسبت به توقف سفارش‌گیری جدید، معاملات (از جمله سفارش‌های باز) را متوقف کند؛ بدیهی است که کلیه سفارش‌های تکمیل‌شده قبل از توقف سفارش‌گیری، پردازش و تحویل داده خواهد شد.',
'در صورت بروز هرگونه اختلال در اینترنت و خدمات زیرساخت به دلایل حاکمیتی، هیچ‌گونه مسئولیتی به عهده بذر طلا نمی‌باشد.',
'درخواست برداشت ریال از حساب کاربری در سریع‌ترین زمان ممکن پس از ثبت، بررسی خواهد شد. زمان واریز پول به حساب کاربران بر اساس محدودیت‌های انتقال وجه بین بانکی، متفاوت خواهد بود. برای اطلاعات بیشتر، به قوانین انتقال وجه بین بانکی (پایا، ساتنا) مراجعه فرمایید.',
'کاربر می‌پذیرد که به جز در موارد مورد تعهد، حق هیچ‌گونه داعیه، طلب و شکایت از سایت، مدیران، کارمندان و افراد مرتبط با این سایت را نخواهد داشت.',
'اگر کاربر تحت هر عنوان اشتباهاً یا من غیر حق، وجوهی را به حساب کاربر منظور یا در محاسبات خود هر نوع اشتباهی نماید، بذر طلا هر زمان مجاز و مختار است راساً و مستقلاً و بدون انجام هیچ‌گونه تشریفات اداری و قضایی و دریافت اجازه کتبی از متعهد (صاحب حساب) در رفع اشتباه و برداشت از حساب‌های وی اقدام نماید و تشخیص نسبت به وقوع اشتباه یا پرداخت بدون حق و لزوم برداشت از حساب معتبر خواهد بود و کاربر حق هرگونه اعتراض و ادعایی را در خصوص نحوه عملکرد بذر طلا از هر جهت از خود ساقط می‌نماید.',
'در صورت بروز هرگونه مشکل یا ابهام در هر یک از معاملات (مانند دستکاری قیمت، اختلال در وب‌سرویس‌ها، انجام معامله خارج از دامنه نوسان و ...)، بذر طلا حق دارد مستقلاً آن معامله را ابطال کرده و دارایی‌های هر یک از طرفین را به حساب خودشان عودت دهد. بدیهی است در صورتی که اشکال از سمت بذر طلا باشد، شرکت موظف خواهد بود که جبران خسارت نماید و در غیر این صورت، کاربر حق هرگونه اعتراض و ادعایی در خصوص نحوه عملکرد از هر جهت را از خود ساقط می‌نماید.',
'در صورت فوت یا حجر کاربر، بذر طلا پیرو قوانین جمهوری اسلامی ایران می‌باشد. کاربر با علم و اطلاع از مقررات این بند نسبت به افتتاح حساب کاربری در بذر طلا اقدام نموده و کاربر، اشخاص ثالث، ورثه یا قائم‌مقام قانونی ایشان حق اعتراض و یا ادعایی در آینده در این خصوص نخواهند داشت.',
'هزینه خدمات و کارمزد تراکنش‌های مالی انجام شده در مطابق با توضیحات ارائه شده در صفحه راهنمای استفاده از بذر طلا می‌باشد.',
'تمامی علائم تجاری، طرح‌های گرافیکی، رابط کاربری، رابط بصری، عکس، لوگو، کدهای نرم‌افزار، ساختار، نحوه بیان، تنظیم مطالب و محتوای موجود در بذر طلا و شبکه‌های متعلق به بذر طلا و به‌طور کلی، سایر حقوق و امتیازات مربوطه منحصراً در مالکیت بذر طلا می‌باشد و هیچ شخصی حق استفاده از آن را بدون رضایت بذر طلا ندارد.',
'اگر هر یک از مفاد این موافقت‌نامه بر اساس هر قانون لازم‌الاجرا، نامعتبر یا غیرقابل اجرا تشخیص داده شود، این امر بر اعتبار هیچ ماده دیگری تأثیری نخواهد داشت و بقیه مقررات اجرا می‌شود.',
],
},
]
}
function getBoursecuRulesBlocks(nameProject: string): RulesBlock[] {
const brand = resolveProjectName(nameProject)
@@ -105,6 +141,10 @@ export function getRulesTitle(nameProject: string, isBoursecu: boolean) {
return `قوانین و مقررات معاملات مس در بستر ${brand}`
}
if (isBazretalaProject()) {
return 'قوانین و مقررات معاملات طلا و نقره در بستر بذر طلا'
}
return `قوانین و مقررات معاملات طلا در بستر ${brand}`
}
@@ -113,6 +153,10 @@ export function getRulesBlocks(nameProject: string, isBoursecu: boolean): RulesB
return getBoursecuRulesBlocks(nameProject)
}
if (isBazretalaProject()) {
return getBazretalaRulesBlocks()
}
return [{ items: getDefaultRulesItems(nameProject) }]
}
+4 -2
View File
@@ -140,6 +140,7 @@
</div>
</BasicButton>
<BasicButton
v-if="getConfigApp('name')!=='bazretala'"
class="mt-2 w-full"
icon=""
iconSize="18"
@@ -163,7 +164,8 @@
<div>قوانین و مقررات</div>
</div>
</BasicButton>
<!-- <BasicButton
<BasicButton
v-if="getConfigApp('name')=='bazretala'"
class="mt-2 w-full"
icon=""
iconSize="18"
@@ -174,7 +176,7 @@
<BasicIcon icon="vuesax-linear:archive-book" class="absolute right-8" />
<div>مجوز ها</div>
</div>
</BasicButton>-->
</BasicButton>
<!-- <BasicButton
class="mt-2 w-full"
icon=""
+13 -1
View File
@@ -63,7 +63,7 @@
</a-form-item>
</div>
<div v-else class=" mt-3">
<div class="text-red text-xs font-bold mb-2">حداقل مبلغ واریزی 100 هزار تومان می باشد.</div>
<div v-if="!isBazretalaProject()" class="text-red text-xs font-bold mb-2">حداقل مبلغ واریزی 100 هزار تومان می باشد.</div>
<div class="flex gap-2">
<BasicButton class="w-full font-bold !px-1" @click="form.value = 10000000">
{{ usePriceWithoutType(10000000) }}
@@ -313,6 +313,17 @@
</a>
</BasicButton>
</div>
<div v-else-if="isBazretalaProject()" class="text-center">
<div class="font-bold text-red-600">همراه گرامی</div>
<div class="mt-2">
<div>جهت شارژ حساب کاربری خود،</div>
<div>مبلغ موردنظر را به شماره کارت زیر واریز نموده</div>
<div>و به شماره پشتیبانی 09121784258 در برنامه ی بله اطلاع دهید.</div>
</div>
<div class="mt-4">(گنجينه طلاي حاجي ابوالفتح - بانک ملی)</div>
<div class="mt-1">شماره کارت: 6037998800496928</div>
<div>شماره شبا: IR 110170000000372468150002</div>
</div>
<div v-else class="text-center">
<div class=" font-bold text-red-600">مشتریان گرامی</div>
<div class="mt-2">
@@ -391,6 +402,7 @@ import BaseDatePicker from '@/components/BasicPacks/BaseDatePicker'
import img from '@/assets/img/user_ly1.svg'
import BasicModal from '@/components/BasicPacks/BasicModal.vue'
import { useConfigStore } from '@/store/configStore'
import { isBazretalaProject } from '@/utils/config'
import {
buildSupportMessengerUrl,
DEFAULT_SUPPORT_MESSENGER_TEXT,
+6 -3
View File
@@ -1,7 +1,7 @@
<template>
<div class="w-full flex flex-col">
<div
v-if="isBoursecuProject()"
v-if="hasCustomLoginLogoLayout()"
class="flex flex-col items-center mb-[60px]"
>
<img
@@ -9,7 +9,10 @@
alt=""
class="z-100 self-center w-56 h-auto object-contain"
>
<div class="text-center text-sm text-primary font-medium mt-3 px-2 leading-7 max-w-[18rem]">
<div
v-if="getProjectLoginTaglineLines()"
class="text-center text-sm text-primary font-medium mt-3 px-2 leading-7 max-w-[18rem]"
>
<div v-for="(line, index) in getProjectLoginTaglineLines()" :key="index">
{{ line }}
</div>
@@ -269,7 +272,7 @@ import { useWalletStore } from '@/store/walletStore'
import { useSettingsStore } from '@/store/settingsStore'
import { fingerPosition, setTruth } from '@/main'
import {useConfigStore} from "@/store/configStore";
import {getConfigApp, getProjectLoginLogo, getProjectLoginTaglineLines, isBoursecuProject} from "@/utils/config";
import {getConfigApp, getProjectLoginLogo, getProjectLoginTaglineLines, hasCustomLoginLogoLayout} from "@/utils/config";
import BasicActionSheet from "@/components/BasicPacks/BasicActionSheet.vue";
import {getConfig} from "@/api/config";
import shareAppleIcon from '@/assets/img/share-apple.png'
+6 -3
View File
@@ -1,7 +1,7 @@
<template>
<div class="w-full flex flex-col">
<div
v-if="isBoursecuProject()"
v-if="hasCustomLoginLogoLayout()"
class="flex flex-col items-center mb-4"
>
<img
@@ -9,7 +9,10 @@
alt=""
class="z-100 self-center w-56 h-auto object-contain"
>
<div class="text-center text-sm text-primary font-medium mt-3 px-2 leading-7 max-w-[18rem]">
<div
v-if="getProjectLoginTaglineLines()"
class="text-center text-sm text-primary font-medium mt-3 px-2 leading-7 max-w-[18rem]"
>
<div v-for="(line, index) in getProjectLoginTaglineLines()" :key="index">
{{ line }}
</div>
@@ -167,7 +170,7 @@ import DialogVantOneButton from '@/components/DialogVantOneButton.vue'
import { registerCustomer } from '@/api/login'
import router from '@/router'
import {useConfigStore} from "@/store/configStore";
import {getProjectLoginLogo, getProjectLoginTaglineLines, isBoursecuProject} from "@/utils/config";
import {getProjectLoginLogo, getProjectLoginTaglineLines, hasCustomLoginLogoLayout} from "@/utils/config";
const config = useConfigStore()
// const stepTwoVerify = ref<boolean>(false)