1404/12/06-fix bug in add product form tooltip

This commit is contained in:
2026-02-25 17:36:11 +03:30
parent 9557989b20
commit d87f850b00
8 changed files with 190 additions and 186 deletions
-6
View File
@@ -15,7 +15,6 @@ declare module '@vue/runtime-core' {
ABadge: typeof import('ant-design-vue/es')['Badge'] ABadge: typeof import('ant-design-vue/es')['Badge']
AButton: typeof import('ant-design-vue/es')['Button'] AButton: typeof import('ant-design-vue/es')['Button']
ACard: typeof import('ant-design-vue/es')['Card'] ACard: typeof import('ant-design-vue/es')['Card']
ACheckbox: typeof import('ant-design-vue/es')['Checkbox']
AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider'] AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider']
ADivider: typeof import('ant-design-vue/es')['Divider'] ADivider: typeof import('ant-design-vue/es')['Divider']
ADrawer: typeof import('ant-design-vue/es')['Drawer'] ADrawer: typeof import('ant-design-vue/es')['Drawer']
@@ -33,10 +32,7 @@ declare module '@vue/runtime-core' {
AMenuItem: typeof import('ant-design-vue/es')['MenuItem'] AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
AModal: typeof import('ant-design-vue/es')['Modal'] AModal: typeof import('ant-design-vue/es')['Modal']
APagination: typeof import('ant-design-vue/es')['Pagination'] APagination: typeof import('ant-design-vue/es')['Pagination']
APopconfirm: typeof import('ant-design-vue/es')['Popconfirm']
APopover: typeof import('ant-design-vue/es')['Popover']
ARadio: typeof import('ant-design-vue/es')['Radio'] ARadio: typeof import('ant-design-vue/es')['Radio']
ARadioButton: typeof import('ant-design-vue/es')['RadioButton']
ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup'] ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup']
ASelect: typeof import('ant-design-vue/es')['Select'] ASelect: typeof import('ant-design-vue/es')['Select']
ASelectOption: typeof import('ant-design-vue/es')['SelectOption'] ASelectOption: typeof import('ant-design-vue/es')['SelectOption']
@@ -46,8 +42,6 @@ declare module '@vue/runtime-core' {
ATable: typeof import('ant-design-vue/es')['Table'] ATable: typeof import('ant-design-vue/es')['Table']
ATabPane: typeof import('ant-design-vue/es')['TabPane'] ATabPane: typeof import('ant-design-vue/es')['TabPane']
ATabs: typeof import('ant-design-vue/es')['Tabs'] ATabs: typeof import('ant-design-vue/es')['Tabs']
ATag: typeof import('ant-design-vue/es')['Tag']
ATextarea: typeof import('ant-design-vue/es')['Textarea']
ATooltip: typeof import('ant-design-vue/es')['Tooltip'] ATooltip: typeof import('ant-design-vue/es')['Tooltip']
AUpload: typeof import('ant-design-vue/es')['Upload'] AUpload: typeof import('ant-design-vue/es')['Upload']
BaseButton: typeof import('./src/core/components/BaseButton/index.ts')['default'] BaseButton: typeof import('./src/core/components/BaseButton/index.ts')['default']
@@ -81,7 +81,7 @@ defineExpose({
@prefix: ~'@{prefixCls}-pophoverstatus'; @prefix: ~'@{prefixCls}-pophoverstatus';
.ant-popover, .ant-popover,
.ant-tooltip { .ant-tooltip {
z-index: 10 !important; z-index: 1001 !important;
} }
.@{prefix} { .@{prefix} {
@@ -82,7 +82,7 @@ defineExpose({
@prefix: ~'@{prefixCls}-pophoverstatus'; @prefix: ~'@{prefixCls}-pophoverstatus';
.ant-popover, .ant-popover,
.ant-tooltip { .ant-tooltip {
z-index: 10 !important; z-index: 1001 !important;
} }
.@{prefix} { .@{prefix} {
@@ -403,7 +403,7 @@ defineExpose({
@prefix: ~'@{prefixCls}-pophoverstatus'; @prefix: ~'@{prefixCls}-pophoverstatus';
.ant-popover, .ant-popover,
.ant-tooltip { .ant-tooltip {
z-index: 10 !important; z-index: 1001 !important;
} }
.@{prefix} { .@{prefix} {
@@ -81,7 +81,7 @@ defineExpose({
@prefix: ~'@{prefixCls}-pophoverstatus'; @prefix: ~'@{prefixCls}-pophoverstatus';
.ant-popover, .ant-popover,
.ant-tooltip { .ant-tooltip {
z-index: 10 !important; z-index: 1001 !important;
} }
.@{prefix} { .@{prefix} {
@@ -82,7 +82,7 @@ defineExpose({
@prefix: ~'@{prefixCls}-pophoverstatus'; @prefix: ~'@{prefixCls}-pophoverstatus';
.ant-popover, .ant-popover,
.ant-tooltip { .ant-tooltip {
z-index: 10 !important; z-index: 1001 !important;
} }
.@{prefix} { .@{prefix} {
@@ -589,7 +589,7 @@ async function setTimeActive(start: string, end: string) {
@prefix: ~'@{prefixCls}-pophoverstatus'; @prefix: ~'@{prefixCls}-pophoverstatus';
.ant-popover, .ant-popover,
.ant-tooltip { .ant-tooltip {
z-index: 10 !important; z-index: 1001 !important;
} }
.@{prefix} { .@{prefix} {
+184 -174
View File
@@ -3,35 +3,34 @@
<!-- <BasicMainCard>--> <!-- <BasicMainCard>-->
<div class="flex w-full h-full"> <div class="flex w-full h-full">
<tbl <tbl
ref="table" ref="table"
class="w-full h-full" class="w-full h-full"
@info="info" @info="info"
@edit="edit" @edit="edit"
@add="add" @add="add"
@chargeMoney="walletMoneyCharge" @chargeMoney="walletMoneyCharge"
@chargeGold="walletGoldCharge" @chargeGold="walletGoldCharge"
/> />
<!-- <BasicMenu :menu="menu" width="13rem" @onChange="tabSelected" /> <!-- <BasicMenu :menu="menu" width="13rem" @onChange="tabSelected" />
<component :is="selectedComponent" class="mr-5" />--> <component :is="selectedComponent" class="mr-5" />-->
<!-- <BasicShowContext title="پروژه ها"> <Search /> </BasicShowContext>--> <!-- <BasicShowContext title="پروژه ها"> <Search /> </BasicShowContext>-->
</div> </div>
<!-- </BasicMainCard>-->n <!-- </BasicMainCard>-->n
<BasicModal <BasicModal
v-model:visible="addUserVisible" v-model:visible="addUserVisible"
width="50rem" width="50rem"
:title="`${editId ? 'ویرایش' : 'افزودن'} محصول`" :title="`${editId ? 'ویرایش' : 'افزودن'} محصول`"
@ok="ok" @ok="ok"
:loading="loading" :loading="loading"
@close="addUserVisible = false" @close="addUserVisible = false"
> >
<Collapse class="grid grid-cols-1 gap-2" v-model:activeKey="activeKey_"> <Collapse class="grid grid-cols-1 gap-2" v-model:activeKey="activeKey_">
<BaseCollapse title="اطلاعات محصول" active-key="0" :actives="activeKey_"> <BaseCollapse title="اطلاعات محصول" active-key="0" :actives="activeKey_">
<template #content> <template #content>
<!-- <div class="flex justify-between h-full w-full">--> <!-- <div class="flex justify-between h-full w-full">-->
<div <div
v-if="form.group_type === '' || form.group_type !== 'آبشده'" v-if="form.group_type === '' || form.group_type !== 'آبشده'"
class="md:flex justify-between border-1 border-solid rounded-lg border-gray-200 p-2" class="md:flex justify-between border-1 border-solid rounded-lg border-gray-200 p-2"
> >
<div class="items-center"> <div class="items-center">
<span class="ml-4">دریافت قیمت از :</span> <span class="ml-4">دریافت قیمت از :</span>
@@ -43,28 +42,28 @@
<div> <div>
<div v-if="methodOption === '1'" class="md:flex items-center justify-between md:w-[25rem]"> <div v-if="methodOption === '1'" class="md:flex items-center justify-between md:w-[25rem]">
<div>قیمت وسط :</div> <div>قیمت وسط :</div>
<BasicInput class="mt-1 md:mt-unset" addon-before="ریال" type="price" v-model:value="form.price" /> <BasicInput class="mt-1 md:mt-unset" addon-before="ریال" type="price" v-model:value="form.price"/>
<AButton <AButton
class="border-green text-green mt-1 md:mt-unset rounded-full aspect-square" class="border-green text-green mt-1 md:mt-unset rounded-full aspect-square"
size="small" size="small"
shape="circle" shape="circle"
@click="addPrice()" @click="addPrice()"
> >
<template #icon> <template #icon>
<div class="flex items-center justify-center"> <div class="flex items-center justify-center">
<Icon icon="vuesax-linear:add" size="20" /> <Icon icon="vuesax-linear:add" size="20"/>
</div> </div>
</template> </template>
</AButton> </AButton>
<AButton <AButton
class="border-red text-red mr-1 md:mr-unset rounded-full" class="border-red text-red mr-1 md:mr-unset rounded-full"
size="small" size="small"
shape="circle" shape="circle"
@click="minusPrice()" @click="minusPrice()"
> >
<template #icon> <template #icon>
<div class="flex items-center justify-center"> <div class="flex items-center justify-center">
<Icon icon="vuesax-linear:minus" size="20" /> <Icon icon="vuesax-linear:minus" size="20"/>
</div> </div>
</template> </template>
</AButton> </AButton>
@@ -73,12 +72,12 @@
<div class="ml-4">قیمت :</div> <div class="ml-4">قیمت :</div>
<div class=""> <div class="">
<BasicSelect <BasicSelect
class="w-11rem method_style" class="w-11rem method_style"
allowClear allowClear
:items="pricesList" :items="pricesList"
valueName="name" valueName="name"
keyName="id" keyName="id"
v-model:value="form.reading_method" v-model:value="form.reading_method"
/> />
</div> </div>
</div> </div>
@@ -96,7 +95,7 @@
<div v-if="weightOption === '1'" class="flex items-center"> <div v-if="weightOption === '1'" class="flex items-center">
<span class="ml-4 ">وزن به گرم :</span> <span class="ml-4 ">وزن به گرم :</span>
<div class=""> <div class="">
<BasicInput v-model:value="form.amount" type="number" /> <BasicInput v-model:value="form.amount" type="number"/>
</div> </div>
<div class="mt-1 mr-4" v-if="form.amount && form.amount < 1 && 0 < form.amount"> <div class="mt-1 mr-4" v-if="form.amount && form.amount < 1 && 0 < form.amount">
معادل {{ form.amount * 1000 }} سوت معادل {{ form.amount * 1000 }} سوت
@@ -106,99 +105,110 @@
<a-form :model="form" ref="formRef" autocomplete="off"> <a-form :model="form" ref="formRef" autocomplete="off">
<div class="grid md:grid-cols-2 gap-4"> <div class="grid md:grid-cols-2 gap-4">
<a-form-item label="عنوان" name="title" :rules="inputRules()"> <a-form-item label="عنوان" name="title" :rules="inputRules()">
<BasicInput v-model:value="form.title" /> <BasicInput v-model:value="form.title"/>
</a-form-item> </a-form-item>
<a-form-item v-if="getConfigApp('name') === 'garoosi'" label="دسته بندی" name="group_type" :rules="inputRules()"> <a-form-item v-if="getConfigApp('name') === 'garoosi'" label="دسته بندی" name="group_type"
:rules="inputRules()">
<BasicSelect <BasicSelect
v-model:value="form.group_type" v-model:value="form.group_type"
:items="GaroosiCategoryItems" :items="GaroosiCategoryItems"
valueName="value" valueName="value"
keyName="value" keyName="value"
/> />
</a-form-item> </a-form-item>
<a-form-item v-else label="دسته بندی" name="group_type" :rules="inputRules()"> <a-form-item v-else label="دسته بندی" name="group_type" :rules="inputRules()">
<BasicSelect <BasicSelect
v-model:value="form.group_type" v-model:value="form.group_type"
:items="categoryItems" :items="categoryItems"
valueName="value" valueName="value"
keyName="value" keyName="value"
/> />
</a-form-item> </a-form-item>
<a-form-item label="جنس فلز" name="metal_id" :rules="inputRules()"> <a-form-item label="جنس فلز" name="metal_id" :rules="inputRules()">
<BasicSelect <BasicSelect
v-model:value="form.metal_id" v-model:value="form.metal_id"
:items="metalItems" :items="metalItems"
valueName="value" valueName="value"
keyName="key" keyName="key"
/> />
</a-form-item> </a-form-item>
<a-form-item label="واحد" name="unit" :rules="inputRules()"> <a-form-item label="واحد" name="unit" :rules="inputRules()">
<BasicSelect <BasicSelect
v-model:value="form.unit" v-model:value="form.unit"
:items="unitItems" :items="unitItems"
valueName="value" valueName="value"
keyName="value" keyName="value"
/> />
</a-form-item> </a-form-item>
<!-- <a-form-item v-if="weightOption === '1'" label="وزن به گرم" name="amount" :rules="inputRules()"> <!-- <a-form-item v-if="weightOption === '1'" label="وزن به گرم" name="amount" :rules="inputRules()">
<BasicInput v-model:value="form.amount" type="number" /> <BasicInput v-model:value="form.amount" type="number" />
</a-form-item>--> </a-form-item>-->
vite build
<a-form-item v-if="form.group_type === '' || form.group_type !== 'آبشده'" <a-form-item v-if="form.group_type === '' || form.group_type !== 'آبشده'"
name="percent_fee_buy" :rules="inputRules()"> name="percent_fee_buy" :rules="inputRules()">
<template #label> <template #label>
<span class="inline-flex items-center gap-1"> <span class="inline-flex items-center gap-1">
کارمزد درصدی موقع خرید کارمزد درصدی موقع خرید
<a-tooltip placement="bottom" class="cursor-pointer">
<template #title> <a-tooltip
<span>مقدار باید به اعشار وارد گردد بعنوان مثال 1 درصد به صورت 0.01 باید وارد گردد.</span> placement="top"
</template> >
<Icon icon="vuesax-linear:info-circle" class="cursor-pointer" color="#e3bf00" /> <template #title>
</a-tooltip> مقدار باید به اعشار وارد گردد بعنوان مثال 1 درصد به صورت 0.01 باید وارد گردد.
</span> </template>
<span class="inline-flex cursor-pointer">
<Icon
icon="vuesax-linear:info-circle"
color="#e3bf00"
/>
</span>
</a-tooltip>
</span>
</template> </template>
<BasicInput v-model:value="form.percent_fee_buy" type="number" /> <BasicInput v-model:value="form.percent_fee_buy" type="number"/>
</a-form-item> </a-form-item>
<a-form-item v-if="form.group_type === '' || form.group_type !== 'آبشده'" <a-form-item v-if="form.group_type === '' || form.group_type !== 'آبشده'"
label="هزینه نقدی موقع خرید" name="cash_fee_buy" :rules="inputRules()"> label="هزینه نقدی موقع خرید" name="cash_fee_buy" :rules="inputRules()">
<BasicInput v-model:value="form.cash_fee_buy" type="number" /> <BasicInput v-model:value="form.cash_fee_buy" type="number"/>
</a-form-item> </a-form-item>
<a-form-item v-if="form.group_type === '' || form.group_type !== 'آبشده'" <a-form-item v-if="form.group_type === '' || form.group_type !== 'آبشده'"
name="percent_fee_sell" :rules="inputRules()"> name="percent_fee_sell" :rules="inputRules()">
<template #label> <template #label>
<span class="inline-flex items-center gap-1"> <span class="inline-flex items-center gap-1">
کارمزد درصدی موقع فروش کارمزد درصدی موقع فروش
<a-tooltip placement="bottom" class="cursor-pointer"> <a-tooltip placement="top" class="cursor-pointer" :zIndex="9999">
<template #title> <template #title>
<span>مقدار باید به اعشار وارد گردد بعنوان مثال 1 درصد به صورت 0.01 باید وارد گردد</span> <span>مقدار باید به اعشار وارد گردد بعنوان مثال 1 درصد به صورت 0.01 باید وارد گردد</span>
</template> </template>
<Icon icon="vuesax-linear:info-circle" class="cursor-pointer" color="#e3bf00" /> <Icon icon="vuesax-linear:info-circle" class="cursor-pointer" color="#e3bf00"/>
</a-tooltip> </a-tooltip>
</span> </span>
</template> </template>
<BasicInput v-model:value="form.percent_fee_sell" type="number" /> <BasicInput v-model:value="form.percent_fee_sell" type="number"/>
</a-form-item> </a-form-item>
<a-form-item v-if="form.group_type === '' || form.group_type !== 'آبشده'" <a-form-item v-if="form.group_type === '' || form.group_type !== 'آبشده'"
label="هزینه نقدی موقع فروش" name="cash_fee_sell" :rules="inputRules()"> label="هزینه نقدی موقع فروش" name="cash_fee_sell" :rules="inputRules()">
<BasicInput v-model:value="form.cash_fee_sell" type="number" /> <BasicInput v-model:value="form.cash_fee_sell" type="number"/>
</a-form-item> </a-form-item>
<a-form-item label="زمان شروع فعال سازی" name="auto_open_at"> <a-form-item label="زمان شروع فعال سازی" name="auto_open_at">
<TimePicker <TimePicker
v-model:value="form.auto_open_at" v-model:value="form.auto_open_at"
:locale="customLocale" :locale="customLocale"
placeholder="انتخاب زمان" placeholder="انتخاب زمان"
:defaultValue="dayjs('00:00:00', 'HH:mm:ss')" :defaultValue="dayjs('00:00:00', 'HH:mm:ss')"
/> />
<!-- <a-time-picker v-model:value="form.auto_open_at"/>--> <!-- <a-time-picker v-model:value="form.auto_open_at"/>-->
</a-form-item> </a-form-item>
<a-form-item label="زمان پایان فعال سازی" name="auto_close_at"> <a-form-item label="زمان پایان فعال سازی" name="auto_close_at">
<TimePicker <TimePicker
v-model:value="form.auto_close_at" v-model:value="form.auto_close_at"
:locale="customLocale" :locale="customLocale"
placeholder="انتخاب زمان" placeholder="انتخاب زمان"
:defaultValue="dayjs('00:00:00', 'HH:mm:ss')" :defaultValue="dayjs('00:00:00', 'HH:mm:ss')"
/> />
<!-- <a-time-picker v-model:value="form.auto_close_at"/>--> <!-- <a-time-picker v-model:value="form.auto_close_at"/>-->
</a-form-item> </a-form-item>
@@ -210,14 +220,14 @@
<template #content> <template #content>
<div class="flex gap-2"> <div class="flex gap-2">
<IndexImageUploader <IndexImageUploader
v-model:file-list="ProductIndexImage" v-model:file-list="ProductIndexImage"
@ok="uploadedIndexFile" @ok="uploadedIndexFile"
@delete="deleteIndexFile" @delete="deleteIndexFile"
/> />
<ProductImageUploader <ProductImageUploader
v-model:file-list="ImageFileList" v-model:file-list="ImageFileList"
@ok="uploadedFile" @ok="uploadedFile"
@delete="deleteFile" @delete="deleteFile"
/> />
</div> </div>
</template> </template>
@@ -226,12 +236,12 @@
</BasicModal> </BasicModal>
<BasicModal <BasicModal
v-model:visible="userInfoVisible" v-model:visible="userInfoVisible"
width="100vw" width="100vw"
title="اطلاعات کاربر" title="اطلاعات کاربر"
:loading="loading" :loading="loading"
custom-footer custom-footer
@close="userInfoVisible = false" @close="userInfoVisible = false"
> >
<a-tabs v-model:activeKey="activeKey"> <a-tabs v-model:activeKey="activeKey">
<a-tab-pane key="اطلاعات جامع" tab="اطلاعات جامع"> <a-tab-pane key="اطلاعات جامع" tab="اطلاعات جامع">
@@ -244,17 +254,17 @@
<div class="flex flex-col justify-center items-center pl-3"> <div class="flex flex-col justify-center items-center pl-3">
<div class="flex flex-col justify-center items-center"> <div class="flex flex-col justify-center items-center">
<Icon <Icon
:icon=" :icon="
userInfo.is_legal === 0 userInfo.is_legal === 0
? 'vuesax-linear:close-circle' ? 'vuesax-linear:close-circle'
: 'vuesax-linear:verify' : 'vuesax-linear:verify'
" "
:key="userInfo.is_legal" :key="userInfo.is_legal"
:color="userInfo.is_legal === 0 ? '#ff0000' : '#008000'" :color="userInfo.is_legal === 0 ? '#ff0000' : '#008000'"
/> />
<p <p
class="text-[11px] mt-2" class="text-[11px] mt-2"
:class="userInfo.is_legal === 0 ? 'reject' : 'success'" :class="userInfo.is_legal === 0 ? 'reject' : 'success'"
> >
{{ userStatus(userInfo.is_legal).title }} {{ userStatus(userInfo.is_legal).title }}
</p> </p>
@@ -262,169 +272,169 @@
<div>{{ toJalaliNoTime(userInfo?.created_at) }}</div> <div>{{ toJalaliNoTime(userInfo?.created_at) }}</div>
<div class="mt-2"> <div class="mt-2">
<CustomTag <CustomTag
:textColor="userInfo?.active ? '#25855A' : '#C53030'" :textColor="userInfo?.active ? '#25855A' : '#C53030'"
:bgColor="userInfo?.active ? '#E3F4E9' : '#FECACA'" :bgColor="userInfo?.active ? '#E3F4E9' : '#FECACA'"
class="font-bold px-6" class="font-bold px-6"
> >
{{ userInfo?.active ? "فعال" : "غیرفعال" }} {{ userInfo?.active ? "فعال" : "غیرفعال" }}
</CustomTag> </CustomTag>
</div> </div>
</div> </div>
</div> </div>
<BasicInfoItem title="کد کاربری" :value="userInfo?.id" /> <BasicInfoItem title="کد کاربری" :value="userInfo?.id"/>
<BasicInfoItem title="نوع کاربر" :value="userInfo?.type_str" /> <BasicInfoItem title="نوع کاربر" :value="userInfo?.type_str"/>
<BasicInfoItem <BasicInfoItem
title="تاریخ تولد" title="تاریخ تولد"
:value="userInfo?.birth_date ? toJalaliNoTime(userInfo?.birth_date) : '_'" :value="userInfo?.birth_date ? toJalaliNoTime(userInfo?.birth_date) : '_'"
/> />
<BasicInfoItem title="شماره ملی" :value="userInfo?.n_code ?? '_'" /> <BasicInfoItem title="شماره ملی" :value="userInfo?.n_code ?? '_'"/>
<BasicInfoItem title="نام استان" :value="userInfo?.province ?? '_'" /> <BasicInfoItem title="نام استان" :value="userInfo?.province ?? '_'"/>
<BasicInfoItem title="نام شهر" :value="userInfo?.city ?? '_'" /> <BasicInfoItem title="نام شهر" :value="userInfo?.city ?? '_'"/>
<BasicInfoItem <BasicInfoItem
title="سقف اعتبار" title="سقف اعتبار"
:value="userInfo?.gram ? `${userInfo?.gram} گرم` : '_'" :value="userInfo?.gram ? `${userInfo?.gram} گرم` : '_'"
/> />
<BasicInfoItem title="کد معرف" :value="userInfo?.referral_id" /> <BasicInfoItem title="کد معرف" :value="userInfo?.referral_id"/>
<BasicInfoItem <BasicInfoItem
title="کد معرف کاربر" title="کد معرف کاربر"
:value="userInfo?.referral ? userInfo?.referral?.id : '_'" :value="userInfo?.referral ? userInfo?.referral?.id : '_'"
/> />
<BasicInfoItem <BasicInfoItem
title="نام معرف کاربر" title="نام معرف کاربر"
:value="userInfo?.referral ? userInfo?.referral?.name : '_'" :value="userInfo?.referral ? userInfo?.referral?.name : '_'"
/> />
<BasicInfoItem <BasicInfoItem
title="میزان سود معرفی" title="میزان سود معرفی"
:value="userInfo?.profit_amount ? `${userInfo?.profit_amount} گرم` : '_'" :value="userInfo?.profit_amount ? `${userInfo?.profit_amount} گرم` : '_'"
/> />
<BasicInfoItem <BasicInfoItem
title="حداکثر معرفی" title="حداکثر معرفی"
:value="userInfo?.add_user_limit ? `${userInfo?.add_user_limit} نفر` : '_'" :value="userInfo?.add_user_limit ? `${userInfo?.add_user_limit} نفر` : '_'"
/> />
<BasicInfoItem title="آخرین بازدید" :value="toJalali(userInfo?.last_seen_at)" /> <BasicInfoItem title="آخرین بازدید" :value="toJalali(userInfo?.last_seen_at)"/>
<BasicInfoItem title="وضعیت سفارش دهی"> <BasicInfoItem title="وضعیت سفارش دهی">
<CustomTag <CustomTag
:textColor="userInfo?.trade_active === 1 ? '#25855A' : '#C53030'" :textColor="userInfo?.trade_active === 1 ? '#25855A' : '#C53030'"
:bgColor="userInfo?.trade_active === 1 ? '#E3F4E9' : '#FECACA'" :bgColor="userInfo?.trade_active === 1 ? '#E3F4E9' : '#FECACA'"
class="font-bold px-6" class="font-bold px-6"
> >
{{ userInfo?.trade_active === 1 ? "مجاز" : "غیر مجاز" }} {{ userInfo?.trade_active === 1 ? "مجاز" : "غیر مجاز" }}
</CustomTag> </CustomTag>
</BasicInfoItem> </BasicInfoItem>
<div class="col-span-4 grid grid-cols-2 gap-3"> <div class="col-span-4 grid grid-cols-2 gap-3">
<div <div
v-for="(item, index) in userInfo.wallet" v-for="(item, index) in userInfo.wallet"
:key="index" :key="index"
class="grid grid-cols-2 bg-orange-50 gap-2 rounded-lg p-2" class="grid grid-cols-2 bg-orange-50 gap-2 rounded-lg p-2"
> >
<BasicInfoItem <BasicInfoItem
title="نام قلک" title="نام قلک"
:value="item?.fund ? item?.fund?.title : 'کیف پول طلایی'" :value="item?.fund ? item?.fund?.title : 'کیف پول طلایی'"
/> />
<BasicInfoItem title="مقدار طلا" :value="`${item?.gold} گرم`" /> <BasicInfoItem title="مقدار طلا" :value="`${item?.gold} گرم`"/>
</div> </div>
</div> </div>
</div> </div>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="لیست سفارشات" tab="لیست سفارشات"> <a-tab-pane key="لیست سفارشات" tab="لیست سفارشات">
<orders-tbl ref="orderTable" :customerId="userInfo?.id" @info="infoOrder" /> <orders-tbl ref="orderTable" :customerId="userInfo?.id" @info="infoOrder"/>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="لیست تراکنش ها" tab="لیست تراکنش ها"> <a-tab-pane key="لیست تراکنش ها" tab="لیست تراکنش ها">
<transactions-tbl ref="transactionTable" :customerId="userInfo?.id" /> <transactions-tbl ref="transactionTable" :customerId="userInfo?.id"/>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="پیامک ها" tab="پیامک ها"> <a-tab-pane key="پیامک ها" tab="پیامک ها">
<sms-tbl ref="smsTable" :mobile="userInfo?.mobile" /> <sms-tbl ref="smsTable" :mobile="userInfo?.mobile"/>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="معرفی کرده ها" tab="معرفی کرده ها"> <a-tab-pane key="معرفی کرده ها" tab="معرفی کرده ها">
<ReferralsTable ref="referralTable" :customerId="userInfo?.id" /> <ReferralsTable ref="referralTable" :customerId="userInfo?.id"/>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="قلک ها" tab="قلک ها"> <a-tab-pane key="قلک ها" tab="قلک ها">
<FundsTable ref="fundTable" :customerId="userInfo?.id" /> <FundsTable ref="fundTable" :customerId="userInfo?.id"/>
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>
</BasicModal> </BasicModal>
<BasicModal <BasicModal
v-model:visible="showMoneyWalletCharge" v-model:visible="showMoneyWalletCharge"
width="20rem" width="20rem"
title="شارژ کیف پول ریالی" title="شارژ کیف پول ریالی"
@ok="chargeMoneyWallet" @ok="chargeMoneyWallet"
:loading="loading" :loading="loading"
@close="showMoneyWalletCharge = false" @close="showMoneyWalletCharge = false"
> >
<a-form :model="formCharge" ref="formChargeRef" autocomplete="off"> <a-form :model="formCharge" ref="formChargeRef" autocomplete="off">
<a-form-item label="مقدار شارژ " name="value" :rules="inputRules()"> <a-form-item label="مقدار شارژ " name="value" :rules="inputRules()">
<BasicInput addon-before="ریال" v-model:value="formCharge.value" type="price" /> <BasicInput addon-before="ریال" v-model:value="formCharge.value" type="price"/>
<div v-show="formCharge.value > 10"> <div v-show="formCharge.value > 10">
معادل {{ usePrice(formCharge.value / 10, true, "تومان") }} معادل {{ usePrice(formCharge.value / 10, true, "تومان") }}
</div> </div>
</a-form-item> </a-form-item>
<a-form-item label="علت شارژ " name="value" :rules="inputRules()"> <a-form-item label="علت شارژ " name="value" :rules="inputRules()">
<BasicInput v-model:value="formCharge.note" /> <BasicInput v-model:value="formCharge.note"/>
</a-form-item> </a-form-item>
</a-form> </a-form>
</BasicModal> </BasicModal>
<BasicModal <BasicModal
v-model:visible="showGoldWalletCharge" v-model:visible="showGoldWalletCharge"
width="20rem" width="20rem"
title="شارژ کیف پول طلایی" title="شارژ کیف پول طلایی"
@ok="chargeGoldWallet" @ok="chargeGoldWallet"
:loading="loading" :loading="loading"
@close="showGoldWalletCharge = false" @close="showGoldWalletCharge = false"
> >
<a-form :model="formCharge" ref="formChargeRef" autocomplete="off"> <a-form :model="formCharge" ref="formChargeRef" autocomplete="off">
<a-form-item label="مقدار شارژ " name="value" :rules="inputRules()"> <a-form-item label="مقدار شارژ " name="value" :rules="inputRules()">
<BasicInput addon-before="گرم" v-model:value="formCharge.value" type="number" /> <BasicInput addon-before="گرم" v-model:value="formCharge.value" type="number"/>
<!-- <div v-show="formCharge.value > 10"> <!-- <div v-show="formCharge.value > 10">
معادل {{ usePrice(formCharge.value / 10, true, 'تومان') }} معادل {{ usePrice(formCharge.value / 10, true, 'تومان') }}
</div>--> </div>-->
</a-form-item> </a-form-item>
<a-form-item label="علت شارژ " name="value" :rules="inputRules()"> <a-form-item label="علت شارژ " name="value" :rules="inputRules()">
<BasicInput v-model:value="formCharge.note" /> <BasicInput v-model:value="formCharge.note"/>
</a-form-item> </a-form-item>
</a-form> </a-form>
</BasicModal> </BasicModal>
<BasicInfoModal <BasicInfoModal
v-model:visible="userInfoOrderVisible" v-model:visible="userInfoOrderVisible"
@close="userInfoOrderVisible = false" @close="userInfoOrderVisible = false"
:title="infoParams.title" :title="infoParams.title"
:date="infoParams.date" :date="infoParams.date"
:time="infoParams.time" :time="infoParams.time"
:type="infoParams.type" :type="infoParams.type"
:name="infoParams.name" :name="infoParams.name"
:items="infoParams.items" :items="infoParams.items"
/> />
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
// import BasicInfoModal from '@/components/BasicInfoModal' // import BasicInfoModal from '@/components/BasicInfoModal'
import { Collapse, FormItem, message, Textarea, Form, TimePicker } from "ant-design-vue"; import {Collapse, FormItem, message, Textarea, Form, TimePicker} from "ant-design-vue";
import { inputLenRules, inputRules } from "@/utils/inputRules"; import {inputLenRules, inputRules} from "@/utils/inputRules";
import { useStaticApiListsStore } from "@/store/staticApisStore"; import {useStaticApiListsStore} from "@/store/staticApisStore";
import { ref, watch } from "vue"; import {ref, watch} from "vue";
import tbl from "./components/table.vue"; import tbl from "./components/table.vue";
import type { FormInstance } from "ant-design-vue"; import type {FormInstance} from "ant-design-vue";
import BasicInfoModal from "@/components/BasicInfoModal/index.vue"; import BasicInfoModal from "@/components/BasicInfoModal/index.vue";
import type { Info } from "@/components/BasicInfoModal/model/Info"; import type {Info} from "@/components/BasicInfoModal/model/Info";
import { toJalali, toJalaliNoTime, toTime } from "@core/utils/useDataTime"; import {toJalali, toJalaliNoTime, toTime} from "@core/utils/useDataTime";
import { confirmDeleteItem } from "@/utils/confirmModal"; import {confirmDeleteItem} from "@/utils/confirmModal";
import { cloneDeep } from "lodash"; import {cloneDeep} from "lodash";
import type { Item } from "@/model/Item"; import type {Item} from "@/model/Item";
import type { Customer } from "@/model/customer"; import type {Customer} from "@/model/customer";
import { createProduct, deleteCustomer, updateCustomer } from "@/api/product"; import {createProduct, deleteCustomer, updateCustomer} from "@/api/product";
import type { Charge } from "@/model/wallet"; import type {Charge} from "@/model/wallet";
import customers from "@/router/routes/products"; import customers from "@/router/routes/products";
import { chargeWallet } from "@/api/wallet"; import {chargeWallet} from "@/api/wallet";
import { usePrice } from "@core/utils/usePrice"; import {usePrice} from "@core/utils/usePrice";
import jalaliday from "jalaliday"; import jalaliday from "jalaliday";
import ordersTbl from "@/pages/menuPages/orders/components/table.vue"; import ordersTbl from "@/pages/menuPages/orders/components/table.vue";
import transactionsTbl from "@/pages/menuPages/transactions/components/table.vue"; import transactionsTbl from "@/pages/menuPages/transactions/components/table.vue";
import smsTbl from "@/pages/menuPages/sms/components/table.vue"; import smsTbl from "@/pages/menuPages/sms/components/table.vue";
import FundsTable from "@/pages/menuPages/customers/base/components/fundsTable.vue"; import FundsTable from "@/pages/menuPages/customers/base/components/fundsTable.vue";
import ReferralsTable from "@/pages/menuPages/customers/base/components/referralsTable.vue"; import ReferralsTable from "@/pages/menuPages/customers/base/components/referralsTable.vue";
import type { Order } from "@/model/order"; import type {Order} from "@/model/order";
import Icon from "@core/components/BaseIcon/src/Icon.vue"; import Icon from "@core/components/BaseIcon/src/Icon.vue";
import type { MethodePrices, Product } from "@/model/product"; import type {MethodePrices, Product} from "@/model/product";
import IndexImageUploader from "@/components/ProductUploader/IndexImageUploader.vue"; import IndexImageUploader from "@/components/ProductUploader/IndexImageUploader.vue";
import ProductImageUploader from "@/components/ProductUploader/ProductImageUploader.vue"; import ProductImageUploader from "@/components/ProductUploader/ProductImageUploader.vue";
@@ -468,8 +478,8 @@ function deleteFile() {
} }
import BaseCollapse from "@/pages/menuPages/products/base/components/BaseCollapse.vue"; import BaseCollapse from "@/pages/menuPages/products/base/components/BaseCollapse.vue";
import { methodePrices } from "@/api/price"; import {methodePrices} from "@/api/price";
import { getAllPrices } from "@/api/dashboard"; import {getAllPrices} from "@/api/dashboard";
import dayjs from "dayjs"; import dayjs from "dayjs";
const ProductIndexImage = ref<Array<FileList>>([]); const ProductIndexImage = ref<Array<FileList>>([]);
@@ -885,7 +895,7 @@ const minusPrice = () => {
import customParseFormat from "dayjs/plugin/customParseFormat"; import customParseFormat from "dayjs/plugin/customParseFormat";
import locale from "ant-design-vue/es/date-picker/locale/fa_IR"; import locale from "ant-design-vue/es/date-picker/locale/fa_IR";
import { getConfigApp } from '@/utils/config' import {getConfigApp} from '@/utils/config'
dayjs.extend(customParseFormat); dayjs.extend(customParseFormat);
const customLocale = ref({ const customLocale = ref({