1404/11/17-change text for support

This commit is contained in:
2026-02-06 14:54:21 +03:30
parent 716cc146fc
commit fb438c1e11
+146 -129
View File
@@ -3,45 +3,45 @@
<div class="absolute inset-0 bg-cover bg-center opacity-60" :style="{ backgroundImage: `url(${img})` }"></div> <div class="absolute inset-0 bg-cover bg-center opacity-60" :style="{ backgroundImage: `url(${img})` }"></div>
<div class="bg-white py-3 px-3 text-primary font-bold drop-shadow z-[1999] wrap-fix">کیف پول</div> <div class="bg-white py-3 px-3 text-primary font-bold drop-shadow z-[1999] wrap-fix">کیف پول</div>
<div <div
class="bg-white wrap-fix py-3 top-11 px-3 text-primary font-bold flex justify-evenly z-[1999]" class="bg-white wrap-fix py-3 top-11 px-3 text-primary font-bold flex justify-evenly z-[1999]"
> >
<div class="flex justify-evenly w-full px-2 h-11 items-center bg-gray-50 relative rounded"> <div class="flex justify-evenly w-full px-2 h-11 items-center bg-gray-50 relative rounded">
<div <div
:class="isDeposit ? 'text-primary' : 'text-gray-400'" :class="isDeposit ? 'text-primary' : 'text-gray-400'"
class="w-full text-center z-2" class="w-full text-center z-2"
@click="setIsDeposit(true)" @click="setIsDeposit(true)"
> >
واریز واریز
</div> </div>
<div <div
:class="!isDeposit ? 'text-primary' : 'text-gray-400'" :class="!isDeposit ? 'text-primary' : 'text-gray-400'"
class="w-full text-center z-2" class="w-full text-center z-2"
@click="setIsDeposit(false)" @click="setIsDeposit(false)"
> >
برداشت برداشت
</div> </div>
<!-- <div ref="bganim" class="absolute bg-white h-8 w-1/2 rounded-lg " :style="`transform: translateX(${isDeposit? '0':'-100%'}); left: ${isDeposit? '0':'100%'}`"></div>--> <!-- <div ref="bganim" class="absolute bg-white h-8 w-1/2 rounded-lg " :style="`transform: translateX(${isDeposit? '0':'-100%'}); left: ${isDeposit? '0':'100%'}`"></div>-->
<div <div
ref="bganim" ref="bganim"
:style="useStyle()" :style="useStyle()"
class="absolute bg-white h-8 w-1/2 rounded-lg animate right" class="absolute bg-white h-8 w-1/2 rounded-lg animate right"
></div> ></div>
</div> </div>
</div> </div>
<div class="px-5 pt-26 pb-2"> <div class="px-5 pt-26 pb-2">
<a-form :model="form" class="!mt-5" name="basic" @finish="ok()"> <a-form :model="form" class="!mt-5" name="basic" @finish="ok()">
<div class="border-gray-200 border-1 rounded-xl p-5 trans h-40 relative"> <div class="border-gray-200 border-1 rounded-xl p-5 trans h-40 relative">
<bg_main /> <bg_main/>
<div class="z-100 relative"> <div class="z-100 relative">
<a-form-item :rules="[required()]"> <a-form-item :rules="[required()]">
<BasicInput <BasicInput
v-model:value="form.value" v-model:value="form.value"
addon-before="ریال" addon-before="ریال"
:addon-bg-color="useConfigStore().config.color" :addon-bg-color="useConfigStore().config.color"
addon-text-color="white" addon-text-color="white"
place-holder="مبلغ" place-holder="مبلغ"
size="large" size="large"
type="price" type="price"
/> />
</a-form-item> </a-form-item>
<Transition mode="out-in" name="fade"> <Transition mode="out-in" name="fade">
@@ -49,19 +49,19 @@
<div class="font-bold text-xs"> <div class="font-bold text-xs">
{{ {{
`موجودی کیف پول: ${usePriceWithoutType( `موجودی کیف پول: ${usePriceWithoutType(
walletStore?.walletInfo?.cash ?? 0 walletStore?.walletInfo?.cash ?? 0
)} ریال` )} ریال`
}} }}
</div> </div>
<a-form-item v-if="walletStore?.walletInfo" class="!mt-3"> <a-form-item v-if="walletStore?.walletInfo" class="!mt-3">
<a-slider <a-slider
v-model:value="form.percentWallet" v-model:value="form.percentWallet"
:disabled="walletStore?.walletInfo?.cash <= 0" :disabled="walletStore?.walletInfo?.cash <= 0"
:max="100" :max="100"
:min="0" :min="0"
:step="10" :step="10"
:tip-formatter="formatter" :tip-formatter="formatter"
@change="percentChange" @change="percentChange"
/> />
</a-form-item> </a-form-item>
</div> </div>
@@ -81,34 +81,34 @@
</div> </div>
<a-form-item> <a-form-item>
<BasicButton <BasicButton
:disabled="disableButton" :disabled="disableButton"
class="w-full py-2 mt-5" class="w-full py-2 mt-5"
html-type="submit" html-type="submit"
type="primary" type="primary"
> >
<div> <div>
<a-spin v-if="loading" size="small" /> <a-spin v-if="loading" size="small"/>
<div v-else>{{ isDeposit ? 'واریز' : 'برداشت' }}</div> <div v-else>{{ isDeposit ? 'واریز' : 'برداشت' }}</div>
</div> </div>
</BasicButton> </BasicButton>
</a-form-item> </a-form-item>
</a-form> </a-form>
<div <div
v-if="isDeposit" v-if="isDeposit"
ref="el" ref="el"
:class="loading ? 'h-screen' : ''" :class="loading ? 'h-screen' : ''"
class="px-3 overflow-y-scroll w-full h-[49vh] pb-16" class="px-3 overflow-y-scroll w-full h-[49vh] pb-16"
style="max-height: calc(100vh - 50px)" style="max-height: calc(100vh - 50px)"
> >
<list-anim v-if="!loading" :numberItemsAnim="4"> <list-anim v-if="!loading" :numberItemsAnim="4">
<Item <Item
v-for="item in isDeposit ? depositItems : withdrawItems" v-for="item in isDeposit ? depositItems : withdrawItems"
:key="item.id" :key="item.id"
:item="item" :item="item"
/> />
<TransactionSkeleton v-if="loadingMore" class="mt-1 mb-8" /> <TransactionSkeleton v-if="loadingMore" class="mt-1 mb-8"/>
</list-anim> </list-anim>
<TransactionSkeleton v-for="i in 13" v-else :key="i" class="mt-1" /> <TransactionSkeleton v-for="i in 13" v-else :key="i" class="mt-1"/>
</div> </div>
<!-- <Slider/>--> <!-- <Slider/>-->
<Transition mode="out-in" name="fade"> <Transition mode="out-in" name="fade">
@@ -116,15 +116,15 @@
<!-- <MySlider v-if="cardItems.length > 0" :items="cardItems" class="mt-[5vh] pb-[25vh] mb-[16vh]" <!-- <MySlider v-if="cardItems.length > 0" :items="cardItems" class="mt-[5vh] pb-[25vh] mb-[16vh]"
style="touch-action: none"/>--> style="touch-action: none"/>-->
<CardSlider <CardSlider
v-if="cardItems.length > 0" v-if="cardItems.length > 0"
:items="cardItems" :items="cardItems"
v-model:id="form.card_id" v-model:id="form.card_id"
class="card-slider-wrap mt-[2vh] px-3 fixed bottom-10 right-0 left-0" class="card-slider-wrap mt-[2vh] px-3 fixed bottom-10 right-0 left-0"
style="touch-action: none" style="touch-action: none"
/> />
<div <div
v-else-if="!loading && cardItems.length === 0" v-else-if="!loading && cardItems.length === 0"
class="h-30 flex items-center justify-center" class="h-30 flex items-center justify-center"
> >
هیچ کارتی یافت نشد هیچ کارتی یافت نشد
</div> </div>
@@ -133,65 +133,65 @@
</div> </div>
<Transition mode="out-in" name="fade"> <Transition mode="out-in" name="fade">
<div <div
v-if="!isDeposit" v-if="!isDeposit"
class="add-card fixed bottom-0 h-[18vh] bg-[#FBFBFC] w-full shadow-lg rounded-3xl flex justify-center pt-3 z-200" class="add-card fixed bottom-0 h-[18vh] bg-[#FBFBFC] w-full shadow-lg rounded-3xl flex justify-center pt-3 z-200"
style="box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 26px 11px" style="box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 26px 11px"
@click="showAddCard = true" @click="showAddCard = true"
> >
<div>افزودن کارت جدید</div> <div>افزودن کارت جدید</div>
<BasicIcon icon="vuesax-linear:add" /> <BasicIcon icon="vuesax-linear:add"/>
<BasicActionSheet v-model:show="showAddCard" class="!max-h-[95vh]"> <BasicActionSheet v-model:show="showAddCard" class="!max-h-[95vh]">
<div class="font-bold text-lg">افزودن کارت</div> <div class="font-bold text-lg">افزودن کارت</div>
<div class="mt-4 text-red-600 font-bold">توجه : حتما شماره کارت صاحب حساب نرم افزار وارد شود.</div> <div class="mt-4 text-red-600 font-bold">توجه : حتما شماره کارت صاحب حساب نرم افزار وارد شود.</div>
<div class="pb-20 mt-5"> <div class="pb-20 mt-5">
<a-form :model="cardForm"> <a-form :model="cardForm">
<a-form-item <a-form-item
:rules="required()" :rules="required()"
class="w-full gap-2 !flex-col" class="w-full gap-2 !flex-col"
label="نام بانک" label="نام بانک"
name="bank_name" name="bank_name"
> >
<BasicInput v-model:value="cardForm.bank_name" /> <BasicInput v-model:value="cardForm.bank_name"/>
</a-form-item> </a-form-item>
<!-- <a-form-item <!-- <a-form-item
:rules="cardNumberValidation()" :rules="cardNumberValidation()"
class="w-full gap-2 !flex-col" class="w-full gap-2 !flex-col"
label="شماره کارت" label="شماره کارت"
name="cart_number" name="cart_number"
>
<BasicInput v-model:value="cardForm.cart_number" type="number" />
</a-form-item>-->
<!-- <a-form-item
v-if="walletStore.walletInfo"
class="w-full gap-2 !flex-col"
label="تاریخ تولد"
name="cart_number"
>
<BaseDatePicker v-model:value="cardForm.birth_date" class="w-full" inputReadOnly/>
</a-form-item>-->
<!-- <a-form-item
:rules="required()"
class="w-full gap-2 !flex-col"
label="شماره حساب"
name="account_number"
> >
<BasicInput v-model:value="cardForm.account_number" type="number" /> <BasicInput v-model:value="cardForm.cart_number" type="number" />
</a-form-item>--> </a-form-item>-->
<a-form-item <!-- <a-form-item
:rules="required()" v-if="walletStore.walletInfo"
class="w-full gap-2 !flex-col" class="w-full gap-2 !flex-col"
label="شماره شبا" label="تاریخ تولد"
name="shaba_number" name="cart_number"
> >
<BasicInput v-model:value="cardForm.shaba_number" /> <BaseDatePicker v-model:value="cardForm.birth_date" class="w-full" inputReadOnly/>
</a-form-item> </a-form-item>-->
<!-- <a-form-item
:rules="required()"
class="w-full gap-2 !flex-col"
label="شماره حساب"
name="account_number"
>
<BasicInput v-model:value="cardForm.account_number" type="number" />
</a-form-item>-->
<a-form-item
:rules="required()"
class="w-full gap-2 !flex-col"
label="شماره شبا"
name="shaba_number"
>
<BasicInput v-model:value="cardForm.shaba_number"/>
</a-form-item>
<BasicButton <BasicButton
:disabled="loading" :disabled="loading"
class="w-full mt-5 md:mt-10" class="w-full mt-5 md:mt-10"
type="primary" type="primary"
@click="addCard" @click="addCard"
> >
<a-spin v-if="loading" size="small" /> <a-spin v-if="loading" size="small"/>
<div v-else>ثبت</div> <div v-else>ثبت</div>
</BasicButton> </BasicButton>
<BasicButton class="w-full mt-2" @click="showAddCard = false">بازگشت</BasicButton> <BasicButton class="w-full mt-2" @click="showAddCard = false">بازگشت</BasicButton>
@@ -205,26 +205,26 @@
<div> <div>
<div class="flex justify-end"> <div class="flex justify-end">
<BasicIcon <BasicIcon
@click="showConfirmCode = false" @click="showConfirmCode = false"
icon="vuesax-linear:close-circle" icon="vuesax-linear:close-circle"
size="30" size="30"
class="text-red" class="text-red"
/> />
</div> </div>
<div class="p-5 text-sm">لطفا کد ارسالی را وارد کنید.</div> <div class="p-5 text-sm">لطفا کد ارسالی را وارد کنید.</div>
<div> <div>
<OtpInput <OtpInput
ref="refOtpInput" ref="refOtpInput"
:is-input-num="true" :is-input-num="true"
:num-inputs="4" :num-inputs="4"
:should-auto-focus="true" :should-auto-focus="true"
autocomplete="one-time-code" autocomplete="one-time-code"
class="mt-5 justify-center" class="mt-5 justify-center"
input-classes="otp-input" input-classes="otp-input"
separator="" separator=""
style="direction: ltr" style="direction: ltr"
value="" value=""
@on-complete="handleOnComplete" @on-complete="handleOnComplete"
/> />
</div> </div>
</div> </div>
@@ -238,7 +238,7 @@
</div> </div>
</template> </template>
</DialogVant> </DialogVant>
<SkeletonLoading v-model:show="infoVisible" /> <SkeletonLoading v-model:show="infoVisible"/>
<!-- <!--
<transaction mode="out-in" name="fade"> <transaction mode="out-in" name="fade">
@@ -293,17 +293,31 @@
custom-footer custom-footer
:closable="false" :closable="false"
> >
<div class="text-center"> <div v-if="config.config.name === 'garoosi'" class="text-center">
<div class=" font-bold text-red-600">مشتریان گرامی</div> <div class=" font-bold text-red-600">مشتریان گرامی</div>
<div class="mt-2"> <div class="mt-2">
<span>جهت شارژ حساب کاربری خود، کلمه "شماره حساب" را برای پشتیبانی ارسال نمایید.</span> <span>جهت شارژ حساب کاربری خود، مبلغ موردنظر را به شماره کارت زیر واریز نموده و از طریق لینک زیر به پشتیبان اطلاع دهید.</span>
</div> </div>
<BasicButton v-if="config.config.name === 'garoosi'" class="mt-4">
<div class="mt-1 text-red-600">در صورت عدم همخوانی کارت ملی و فیش واریزی کیف پول شارژ نمیشود!</div>
<div class="mt-4">(سیده زهرا موسوی)</div>
<div class="mt-1">شماره کارت:6393461065606457 </div>
<!-- <div>شماره حساب: 0233273609006</div>-->
<div>شماره شبا: IR 110170000000233273609006</div>
<BasicButton class="mt-4">
<a class="w-full" href="https://ble.ir/garoosi_gallery"> <a class="w-full" href="https://ble.ir/garoosi_gallery">
پیام به پشتیبانی پیام به پشتیبانی
</a> </a>
</BasicButton> </BasicButton>
<BasicButton v-else>
</div>
<div v-else class="text-center">
<div class=" font-bold text-red-600">مشتریان گرامی</div>
<div class="mt-2">
<span>جهت شارژ حساب کاربری خود، کلمه "شماره حساب" را برای پشتیبانی ارسال نمایید.</span>
</div>
<BasicButton>
<a class="w-full" href=""> <a class="w-full" href="">
پیام به پشتیبانی پیام به پشتیبانی
</a> </a>
@@ -320,30 +334,30 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { computed, onMounted, ref } from 'vue' import {computed, onMounted, ref} from 'vue'
import { usePriceWithoutType } from '@/utils/usePrice' import {usePriceWithoutType} from '@/utils/usePrice'
import { loading, loadingMore } from '@/utils' import {loading, loadingMore} from '@/utils'
import BasicButton from '@/components/BasicPacks/BasicButton.vue' import BasicButton from '@/components/BasicPacks/BasicButton.vue'
import BasicIcon from '@/components/BasicPacks/BasicIcon.vue' import BasicIcon from '@/components/BasicPacks/BasicIcon.vue'
import router from '@/router' import router from '@/router'
import { useWalletStore } from '@/store/walletStore' import {useWalletStore} from '@/store/walletStore'
import Bg_main from '@/components/bg_main.vue' import Bg_main from '@/components/bg_main.vue'
import type { Transaction } from '@/models/transaction' import type {Transaction} from '@/models/transaction'
import { createCard, deposit, getActivatedCards, withdraw, confirmCode } from '@/api/wallet' import {createCard, deposit, getActivatedCards, withdraw, confirmCode} from '@/api/wallet'
import { useInfiniteScroll } from '@vueuse/core' import {useInfiniteScroll} from '@vueuse/core'
import { message } from 'ant-design-vue' import {message} from 'ant-design-vue'
import ListAnim from '@/components/ListAnim.vue' import ListAnim from '@/components/ListAnim.vue'
import TransactionSkeleton from '@/components/TransactionSkeleton.vue' import TransactionSkeleton from '@/components/TransactionSkeleton.vue'
import Item from './components/Item.vue' import Item from './components/Item.vue'
import type { TableEngineInput, TableOutput } from '@/models/table' import type {TableEngineInput, TableOutput} from '@/models/table'
import {getTransactionTable, getTransactionTable2} from '@/api/transaction' import {getTransactionTable, getTransactionTable2} from '@/api/transaction'
import BasicInput from '@/components/BasicPacks/BasicInput.vue' import BasicInput from '@/components/BasicPacks/BasicInput.vue'
import CardSlider from './components/UISlider/index.vue' import CardSlider from './components/UISlider/index.vue'
import BasicActionSheet from '@/components/BasicPacks/BasicActionSheet.vue' import BasicActionSheet from '@/components/BasicPacks/BasicActionSheet.vue'
import type { Card } from '@/models/wallet' import type {Card} from '@/models/wallet'
import { cardNumberValidation , required } from '@/utils/inputRules' import {cardNumberValidation, required} from '@/utils/inputRules'
import { useUserStore } from '@/store/userStore' import {useUserStore} from '@/store/userStore'
import { DotLottieVue } from '@lottiefiles/dotlottie-vue' import {DotLottieVue} from '@lottiefiles/dotlottie-vue'
import OtpInput from 'vue3-otp-input' import OtpInput from 'vue3-otp-input'
import DialogVant from '@/components/DialogVant.vue' import DialogVant from '@/components/DialogVant.vue'
import SkeletonLoading from './components/SkeletonLoading.vue' import SkeletonLoading from './components/SkeletonLoading.vue'
@@ -351,6 +365,7 @@ import BaseDatePicker from "@/components/BasicPacks/BaseDatePicker";
import img from "@/assets/img/user_ly1.svg"; import img from "@/assets/img/user_ly1.svg";
import BasicModal from "@/components/BasicPacks/BasicModal.vue"; import BasicModal from "@/components/BasicPacks/BasicModal.vue";
import {useConfigStore} from "@/store/configStore"; import {useConfigStore} from "@/store/configStore";
const isDeposit = ref<boolean>(true) const isDeposit = ref<boolean>(true)
const walletStore = useWalletStore() const walletStore = useWalletStore()
const userStore = useUserStore() const userStore = useUserStore()
@@ -388,10 +403,10 @@ const disableButton = computed(() => {
if (walletStore?.walletInfo?.cash && !isDeposit.value) { if (walletStore?.walletInfo?.cash && !isDeposit.value) {
if (cardItems.value.length > 0) { if (cardItems.value.length > 0) {
return ( return (
walletStore?.walletInfo?.cash <= 0 || walletStore?.walletInfo?.cash <= 0 ||
walletStore?.walletInfo?.cash < parseInt(form.value?.value) || walletStore?.walletInfo?.cash < parseInt(form.value?.value) ||
isNaN(parseInt(form.value?.value)) || isNaN(parseInt(form.value?.value)) ||
parseInt(form.value?.value) < 1000000 parseInt(form.value?.value) < 1000000
) )
} else return true } else return true
} else if (isDeposit.value) { } else if (isDeposit.value) {
@@ -470,7 +485,7 @@ function setIsDeposit(val: boolean) {
function useStyle() { function useStyle() {
if (isDeposit.value) return 'right: 2%;' if (isDeposit.value) return 'right: 2%;'
// if (isDeposit.value) return 'animation-direction: normal' // if (isDeposit.value) return 'animation-direction: normal'
// else return 'animation-direction: reverse' // else return 'animation-direction: reverse'
else return ' right: 98%; transform: translate(100%, 0);' else return ' right: 98%; transform: translate(100%, 0);'
} }
@@ -489,7 +504,7 @@ async function ok() {
if (form.value.value !== undefined) { if (form.value.value !== undefined) {
loading.value = true loading.value = true
if (!isDeposit.value) { if (!isDeposit.value) {
await confirmCode({ value: form.value.value }) await confirmCode({value: form.value.value})
showConfirmCode.value = await true showConfirmCode.value = await true
} }
if (isDeposit.value) { if (isDeposit.value) {
@@ -580,7 +595,7 @@ if (!userStore.isSingle) {
} }
// } // }
}, },
{ distance: 12 } {distance: 12}
) )
} }
@@ -616,7 +631,7 @@ async function handleOnComplete(value: string) {
try { try {
infoVisible.value = true infoVisible.value = true
showConfirmCode.value = false showConfirmCode.value = false
await withdraw({ ...form.value, otp: value }) await withdraw({...form.value, otp: value})
await walletStore.getMyWallet() await walletStore.getMyWallet()
await message.success('عملیات با موفقیت انجام شد') await message.success('عملیات با موفقیت انجام شد')
resetData() resetData()
@@ -680,12 +695,14 @@ async function handleOnComplete(value: string) {
margin-top: 30px !important; margin-top: 30px !important;
} }
} }
@media screen and (min-width: 426px) { @media screen and (min-width: 426px) {
.card-slider-wrap { .card-slider-wrap {
width: 426px; width: 426px;
margin: 0 auto; margin: 0 auto;
} }
} }
@media screen and (min-width: 426px) { @media screen and (min-width: 426px) {
.add-card { .add-card {
position: absolute; position: absolute;