|
|
|
@@ -3,35 +3,34 @@
|
|
|
|
|
<!-- <BasicMainCard>-->
|
|
|
|
|
<div class="flex w-full h-full">
|
|
|
|
|
<tbl
|
|
|
|
|
ref="table"
|
|
|
|
|
class="w-full h-full"
|
|
|
|
|
@info="info"
|
|
|
|
|
@edit="edit"
|
|
|
|
|
@add="add"
|
|
|
|
|
@chargeMoney="walletMoneyCharge"
|
|
|
|
|
@chargeGold="walletGoldCharge"
|
|
|
|
|
ref="table"
|
|
|
|
|
class="w-full h-full"
|
|
|
|
|
@info="info"
|
|
|
|
|
@edit="edit"
|
|
|
|
|
@add="add"
|
|
|
|
|
@chargeMoney="walletMoneyCharge"
|
|
|
|
|
@chargeGold="walletGoldCharge"
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
|
|
<!-- <BasicMenu :menu="menu" width="13rem" @onChange="tabSelected" />
|
|
|
|
|
<component :is="selectedComponent" class="mr-5" />-->
|
|
|
|
|
<!-- <BasicShowContext title="پروژه ها"> <Search /> </BasicShowContext>-->
|
|
|
|
|
</div>
|
|
|
|
|
<!-- </BasicMainCard>-->n
|
|
|
|
|
<BasicModal
|
|
|
|
|
v-model:visible="addUserVisible"
|
|
|
|
|
width="50rem"
|
|
|
|
|
:title="`${editId ? 'ویرایش' : 'افزودن'} محصول`"
|
|
|
|
|
@ok="ok"
|
|
|
|
|
:loading="loading"
|
|
|
|
|
@close="addUserVisible = false"
|
|
|
|
|
v-model:visible="addUserVisible"
|
|
|
|
|
width="50rem"
|
|
|
|
|
:title="`${editId ? 'ویرایش' : 'افزودن'} محصول`"
|
|
|
|
|
@ok="ok"
|
|
|
|
|
:loading="loading"
|
|
|
|
|
@close="addUserVisible = false"
|
|
|
|
|
>
|
|
|
|
|
<Collapse class="grid grid-cols-1 gap-2" v-model:activeKey="activeKey_">
|
|
|
|
|
<BaseCollapse title="اطلاعات محصول" active-key="0" :actives="activeKey_">
|
|
|
|
|
<template #content>
|
|
|
|
|
<!-- <div class="flex justify-between h-full w-full">-->
|
|
|
|
|
<div
|
|
|
|
|
v-if="form.group_type === '' || form.group_type !== 'آبشده'"
|
|
|
|
|
class="md:flex justify-between border-1 border-solid rounded-lg border-gray-200 p-2"
|
|
|
|
|
v-if="form.group_type === '' || form.group_type !== 'آبشده'"
|
|
|
|
|
class="md:flex justify-between border-1 border-solid rounded-lg border-gray-200 p-2"
|
|
|
|
|
>
|
|
|
|
|
<div class="items-center">
|
|
|
|
|
<span class="ml-4">دریافت قیمت از :</span>
|
|
|
|
@@ -43,28 +42,28 @@
|
|
|
|
|
<div>
|
|
|
|
|
<div v-if="methodOption === '1'" class="md:flex items-center justify-between md:w-[25rem]">
|
|
|
|
|
<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
|
|
|
|
|
class="border-green text-green mt-1 md:mt-unset rounded-full aspect-square"
|
|
|
|
|
size="small"
|
|
|
|
|
shape="circle"
|
|
|
|
|
@click="addPrice()"
|
|
|
|
|
class="border-green text-green mt-1 md:mt-unset rounded-full aspect-square"
|
|
|
|
|
size="small"
|
|
|
|
|
shape="circle"
|
|
|
|
|
@click="addPrice()"
|
|
|
|
|
>
|
|
|
|
|
<template #icon>
|
|
|
|
|
<div class="flex items-center justify-center">
|
|
|
|
|
<Icon icon="vuesax-linear:add" size="20" />
|
|
|
|
|
<Icon icon="vuesax-linear:add" size="20"/>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
</AButton>
|
|
|
|
|
<AButton
|
|
|
|
|
class="border-red text-red mr-1 md:mr-unset rounded-full"
|
|
|
|
|
size="small"
|
|
|
|
|
shape="circle"
|
|
|
|
|
@click="minusPrice()"
|
|
|
|
|
class="border-red text-red mr-1 md:mr-unset rounded-full"
|
|
|
|
|
size="small"
|
|
|
|
|
shape="circle"
|
|
|
|
|
@click="minusPrice()"
|
|
|
|
|
>
|
|
|
|
|
<template #icon>
|
|
|
|
|
<div class="flex items-center justify-center">
|
|
|
|
|
<Icon icon="vuesax-linear:minus" size="20" />
|
|
|
|
|
<Icon icon="vuesax-linear:minus" size="20"/>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
</AButton>
|
|
|
|
@@ -73,12 +72,12 @@
|
|
|
|
|
<div class="ml-4">قیمت :</div>
|
|
|
|
|
<div class="">
|
|
|
|
|
<BasicSelect
|
|
|
|
|
class="w-11rem method_style"
|
|
|
|
|
allowClear
|
|
|
|
|
:items="pricesList"
|
|
|
|
|
valueName="name"
|
|
|
|
|
keyName="id"
|
|
|
|
|
v-model:value="form.reading_method"
|
|
|
|
|
class="w-11rem method_style"
|
|
|
|
|
allowClear
|
|
|
|
|
:items="pricesList"
|
|
|
|
|
valueName="name"
|
|
|
|
|
keyName="id"
|
|
|
|
|
v-model:value="form.reading_method"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
@@ -96,7 +95,7 @@
|
|
|
|
|
<div v-if="weightOption === '1'" class="flex items-center">
|
|
|
|
|
<span class="ml-4 ">وزن به گرم :</span>
|
|
|
|
|
<div class="">
|
|
|
|
|
<BasicInput v-model:value="form.amount" type="number" />
|
|
|
|
|
<BasicInput v-model:value="form.amount" type="number"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="mt-1 mr-4" v-if="form.amount && form.amount < 1 && 0 < form.amount">
|
|
|
|
|
معادل {{ form.amount * 1000 }} سوت
|
|
|
|
@@ -106,99 +105,110 @@
|
|
|
|
|
<a-form :model="form" ref="formRef" autocomplete="off">
|
|
|
|
|
<div class="grid md:grid-cols-2 gap-4">
|
|
|
|
|
<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 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
|
|
|
|
|
v-model:value="form.group_type"
|
|
|
|
|
:items="GaroosiCategoryItems"
|
|
|
|
|
valueName="value"
|
|
|
|
|
keyName="value"
|
|
|
|
|
v-model:value="form.group_type"
|
|
|
|
|
:items="GaroosiCategoryItems"
|
|
|
|
|
valueName="value"
|
|
|
|
|
keyName="value"
|
|
|
|
|
/>
|
|
|
|
|
</a-form-item>
|
|
|
|
|
<a-form-item v-else label="دسته بندی" name="group_type" :rules="inputRules()">
|
|
|
|
|
<BasicSelect
|
|
|
|
|
v-model:value="form.group_type"
|
|
|
|
|
:items="categoryItems"
|
|
|
|
|
valueName="value"
|
|
|
|
|
keyName="value"
|
|
|
|
|
v-model:value="form.group_type"
|
|
|
|
|
:items="categoryItems"
|
|
|
|
|
valueName="value"
|
|
|
|
|
keyName="value"
|
|
|
|
|
/>
|
|
|
|
|
</a-form-item>
|
|
|
|
|
|
|
|
|
|
<a-form-item label="جنس فلز" name="metal_id" :rules="inputRules()">
|
|
|
|
|
<BasicSelect
|
|
|
|
|
v-model:value="form.metal_id"
|
|
|
|
|
:items="metalItems"
|
|
|
|
|
valueName="value"
|
|
|
|
|
keyName="key"
|
|
|
|
|
v-model:value="form.metal_id"
|
|
|
|
|
:items="metalItems"
|
|
|
|
|
valueName="value"
|
|
|
|
|
keyName="key"
|
|
|
|
|
/>
|
|
|
|
|
</a-form-item>
|
|
|
|
|
<a-form-item label="واحد" name="unit" :rules="inputRules()">
|
|
|
|
|
<BasicSelect
|
|
|
|
|
v-model:value="form.unit"
|
|
|
|
|
:items="unitItems"
|
|
|
|
|
valueName="value"
|
|
|
|
|
keyName="value"
|
|
|
|
|
v-model:value="form.unit"
|
|
|
|
|
:items="unitItems"
|
|
|
|
|
valueName="value"
|
|
|
|
|
keyName="value"
|
|
|
|
|
/>
|
|
|
|
|
</a-form-item>
|
|
|
|
|
<!-- <a-form-item v-if="weightOption === '1'" label="وزن به گرم" name="amount" :rules="inputRules()">
|
|
|
|
|
<BasicInput v-model:value="form.amount" type="number" />
|
|
|
|
|
</a-form-item>-->
|
|
|
|
|
vite build
|
|
|
|
|
<a-form-item v-if="form.group_type === '' || form.group_type !== 'آبشده'"
|
|
|
|
|
name="percent_fee_buy" :rules="inputRules()">
|
|
|
|
|
<template #label>
|
|
|
|
|
<span class="inline-flex items-center gap-1">
|
|
|
|
|
کارمزد درصدی موقع خرید
|
|
|
|
|
<a-tooltip placement="bottom" class="cursor-pointer">
|
|
|
|
|
<template #title>
|
|
|
|
|
<span>مقدار باید به اعشار وارد گردد بعنوان مثال 1 درصد به صورت 0.01 باید وارد گردد.</span>
|
|
|
|
|
</template>
|
|
|
|
|
<Icon icon="vuesax-linear:info-circle" class="cursor-pointer" color="#e3bf00" />
|
|
|
|
|
</a-tooltip>
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
<a-tooltip
|
|
|
|
|
placement="top"
|
|
|
|
|
>
|
|
|
|
|
<template #title>
|
|
|
|
|
مقدار باید به اعشار وارد گردد بعنوان مثال 1 درصد به صورت 0.01 باید وارد گردد.
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<span class="inline-flex cursor-pointer">
|
|
|
|
|
<Icon
|
|
|
|
|
icon="vuesax-linear:info-circle"
|
|
|
|
|
color="#e3bf00"
|
|
|
|
|
/>
|
|
|
|
|
</span>
|
|
|
|
|
</a-tooltip>
|
|
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
</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 v-if="form.group_type === '' || form.group_type !== 'آبشده'"
|
|
|
|
|
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 v-if="form.group_type === '' || form.group_type !== 'آبشده'"
|
|
|
|
|
name="percent_fee_sell" :rules="inputRules()">
|
|
|
|
|
<template #label>
|
|
|
|
|
<span class="inline-flex items-center gap-1">
|
|
|
|
|
کارمزد درصدی موقع فروش
|
|
|
|
|
<a-tooltip placement="bottom" class="cursor-pointer">
|
|
|
|
|
<template #title>
|
|
|
|
|
<span>مقدار باید به اعشار وارد گردد بعنوان مثال 1 درصد به صورت 0.01 باید وارد گردد</span>
|
|
|
|
|
</template>
|
|
|
|
|
<Icon icon="vuesax-linear:info-circle" class="cursor-pointer" color="#e3bf00" />
|
|
|
|
|
<a-tooltip placement="top" class="cursor-pointer" :zIndex="9999">
|
|
|
|
|
<template #title>
|
|
|
|
|
<span>مقدار باید به اعشار وارد گردد بعنوان مثال 1 درصد به صورت 0.01 باید وارد گردد</span>
|
|
|
|
|
</template>
|
|
|
|
|
<Icon icon="vuesax-linear:info-circle" class="cursor-pointer" color="#e3bf00"/>
|
|
|
|
|
</a-tooltip>
|
|
|
|
|
</span>
|
|
|
|
|
</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 v-if="form.group_type === '' || form.group_type !== 'آبشده'"
|
|
|
|
|
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 label="زمان شروع فعال سازی" name="auto_open_at">
|
|
|
|
|
<TimePicker
|
|
|
|
|
v-model:value="form.auto_open_at"
|
|
|
|
|
:locale="customLocale"
|
|
|
|
|
placeholder="انتخاب زمان"
|
|
|
|
|
:defaultValue="dayjs('00:00:00', 'HH:mm:ss')"
|
|
|
|
|
v-model:value="form.auto_open_at"
|
|
|
|
|
:locale="customLocale"
|
|
|
|
|
placeholder="انتخاب زمان"
|
|
|
|
|
:defaultValue="dayjs('00:00:00', 'HH:mm:ss')"
|
|
|
|
|
/>
|
|
|
|
|
<!-- <a-time-picker v-model:value="form.auto_open_at"/>-->
|
|
|
|
|
</a-form-item>
|
|
|
|
|
<a-form-item label="زمان پایان فعال سازی" name="auto_close_at">
|
|
|
|
|
<TimePicker
|
|
|
|
|
v-model:value="form.auto_close_at"
|
|
|
|
|
:locale="customLocale"
|
|
|
|
|
placeholder="انتخاب زمان"
|
|
|
|
|
:defaultValue="dayjs('00:00:00', 'HH:mm:ss')"
|
|
|
|
|
v-model:value="form.auto_close_at"
|
|
|
|
|
:locale="customLocale"
|
|
|
|
|
placeholder="انتخاب زمان"
|
|
|
|
|
:defaultValue="dayjs('00:00:00', 'HH:mm:ss')"
|
|
|
|
|
/>
|
|
|
|
|
<!-- <a-time-picker v-model:value="form.auto_close_at"/>-->
|
|
|
|
|
</a-form-item>
|
|
|
|
@@ -210,14 +220,14 @@
|
|
|
|
|
<template #content>
|
|
|
|
|
<div class="flex gap-2">
|
|
|
|
|
<IndexImageUploader
|
|
|
|
|
v-model:file-list="ProductIndexImage"
|
|
|
|
|
@ok="uploadedIndexFile"
|
|
|
|
|
@delete="deleteIndexFile"
|
|
|
|
|
v-model:file-list="ProductIndexImage"
|
|
|
|
|
@ok="uploadedIndexFile"
|
|
|
|
|
@delete="deleteIndexFile"
|
|
|
|
|
/>
|
|
|
|
|
<ProductImageUploader
|
|
|
|
|
v-model:file-list="ImageFileList"
|
|
|
|
|
@ok="uploadedFile"
|
|
|
|
|
@delete="deleteFile"
|
|
|
|
|
v-model:file-list="ImageFileList"
|
|
|
|
|
@ok="uploadedFile"
|
|
|
|
|
@delete="deleteFile"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
@@ -226,12 +236,12 @@
|
|
|
|
|
</BasicModal>
|
|
|
|
|
|
|
|
|
|
<BasicModal
|
|
|
|
|
v-model:visible="userInfoVisible"
|
|
|
|
|
width="100vw"
|
|
|
|
|
title="اطلاعات کاربر"
|
|
|
|
|
:loading="loading"
|
|
|
|
|
custom-footer
|
|
|
|
|
@close="userInfoVisible = false"
|
|
|
|
|
v-model:visible="userInfoVisible"
|
|
|
|
|
width="100vw"
|
|
|
|
|
title="اطلاعات کاربر"
|
|
|
|
|
:loading="loading"
|
|
|
|
|
custom-footer
|
|
|
|
|
@close="userInfoVisible = false"
|
|
|
|
|
>
|
|
|
|
|
<a-tabs v-model:activeKey="activeKey">
|
|
|
|
|
<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">
|
|
|
|
|
<Icon
|
|
|
|
|
:icon="
|
|
|
|
|
:icon="
|
|
|
|
|
userInfo.is_legal === 0
|
|
|
|
|
? 'vuesax-linear:close-circle'
|
|
|
|
|
: 'vuesax-linear:verify'
|
|
|
|
|
"
|
|
|
|
|
:key="userInfo.is_legal"
|
|
|
|
|
:color="userInfo.is_legal === 0 ? '#ff0000' : '#008000'"
|
|
|
|
|
:key="userInfo.is_legal"
|
|
|
|
|
:color="userInfo.is_legal === 0 ? '#ff0000' : '#008000'"
|
|
|
|
|
/>
|
|
|
|
|
<p
|
|
|
|
|
class="text-[11px] mt-2"
|
|
|
|
|
:class="userInfo.is_legal === 0 ? 'reject' : 'success'"
|
|
|
|
|
class="text-[11px] mt-2"
|
|
|
|
|
:class="userInfo.is_legal === 0 ? 'reject' : 'success'"
|
|
|
|
|
>
|
|
|
|
|
{{ userStatus(userInfo.is_legal).title }}
|
|
|
|
|
</p>
|
|
|
|
@@ -262,169 +272,169 @@
|
|
|
|
|
<div>{{ toJalaliNoTime(userInfo?.created_at) }}</div>
|
|
|
|
|
<div class="mt-2">
|
|
|
|
|
<CustomTag
|
|
|
|
|
:textColor="userInfo?.active ? '#25855A' : '#C53030'"
|
|
|
|
|
:bgColor="userInfo?.active ? '#E3F4E9' : '#FECACA'"
|
|
|
|
|
class="font-bold px-6"
|
|
|
|
|
:textColor="userInfo?.active ? '#25855A' : '#C53030'"
|
|
|
|
|
:bgColor="userInfo?.active ? '#E3F4E9' : '#FECACA'"
|
|
|
|
|
class="font-bold px-6"
|
|
|
|
|
>
|
|
|
|
|
{{ userInfo?.active ? "فعال" : "غیرفعال" }}
|
|
|
|
|
</CustomTag>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<BasicInfoItem title="کد کاربری" :value="userInfo?.id" />
|
|
|
|
|
<BasicInfoItem title="نوع کاربر" :value="userInfo?.type_str" />
|
|
|
|
|
<BasicInfoItem title="کد کاربری" :value="userInfo?.id"/>
|
|
|
|
|
<BasicInfoItem title="نوع کاربر" :value="userInfo?.type_str"/>
|
|
|
|
|
<BasicInfoItem
|
|
|
|
|
title="تاریخ تولد"
|
|
|
|
|
:value="userInfo?.birth_date ? toJalaliNoTime(userInfo?.birth_date) : '_'"
|
|
|
|
|
title="تاریخ تولد"
|
|
|
|
|
:value="userInfo?.birth_date ? toJalaliNoTime(userInfo?.birth_date) : '_'"
|
|
|
|
|
/>
|
|
|
|
|
<BasicInfoItem title="شماره ملی" :value="userInfo?.n_code ?? '_'" />
|
|
|
|
|
<BasicInfoItem title="نام استان" :value="userInfo?.province ?? '_'" />
|
|
|
|
|
<BasicInfoItem title="نام شهر" :value="userInfo?.city ?? '_'" />
|
|
|
|
|
<BasicInfoItem title="شماره ملی" :value="userInfo?.n_code ?? '_'"/>
|
|
|
|
|
<BasicInfoItem title="نام استان" :value="userInfo?.province ?? '_'"/>
|
|
|
|
|
<BasicInfoItem title="نام شهر" :value="userInfo?.city ?? '_'"/>
|
|
|
|
|
<BasicInfoItem
|
|
|
|
|
title="سقف اعتبار"
|
|
|
|
|
:value="userInfo?.gram ? `${userInfo?.gram} گرم` : '_'"
|
|
|
|
|
title="سقف اعتبار"
|
|
|
|
|
:value="userInfo?.gram ? `${userInfo?.gram} گرم` : '_'"
|
|
|
|
|
/>
|
|
|
|
|
<BasicInfoItem title="کد معرف" :value="userInfo?.referral_id" />
|
|
|
|
|
<BasicInfoItem title="کد معرف" :value="userInfo?.referral_id"/>
|
|
|
|
|
<BasicInfoItem
|
|
|
|
|
title="کد معرف کاربر"
|
|
|
|
|
:value="userInfo?.referral ? userInfo?.referral?.id : '_'"
|
|
|
|
|
title="کد معرف کاربر"
|
|
|
|
|
:value="userInfo?.referral ? userInfo?.referral?.id : '_'"
|
|
|
|
|
/>
|
|
|
|
|
<BasicInfoItem
|
|
|
|
|
title="نام معرف کاربر"
|
|
|
|
|
:value="userInfo?.referral ? userInfo?.referral?.name : '_'"
|
|
|
|
|
title="نام معرف کاربر"
|
|
|
|
|
:value="userInfo?.referral ? userInfo?.referral?.name : '_'"
|
|
|
|
|
/>
|
|
|
|
|
<BasicInfoItem
|
|
|
|
|
title="میزان سود معرفی"
|
|
|
|
|
:value="userInfo?.profit_amount ? `${userInfo?.profit_amount} گرم` : '_'"
|
|
|
|
|
title="میزان سود معرفی"
|
|
|
|
|
:value="userInfo?.profit_amount ? `${userInfo?.profit_amount} گرم` : '_'"
|
|
|
|
|
/>
|
|
|
|
|
<BasicInfoItem
|
|
|
|
|
title="حداکثر معرفی"
|
|
|
|
|
:value="userInfo?.add_user_limit ? `${userInfo?.add_user_limit} نفر` : '_'"
|
|
|
|
|
title="حداکثر معرفی"
|
|
|
|
|
: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="وضعیت سفارش دهی">
|
|
|
|
|
<CustomTag
|
|
|
|
|
:textColor="userInfo?.trade_active === 1 ? '#25855A' : '#C53030'"
|
|
|
|
|
:bgColor="userInfo?.trade_active === 1 ? '#E3F4E9' : '#FECACA'"
|
|
|
|
|
class="font-bold px-6"
|
|
|
|
|
:textColor="userInfo?.trade_active === 1 ? '#25855A' : '#C53030'"
|
|
|
|
|
:bgColor="userInfo?.trade_active === 1 ? '#E3F4E9' : '#FECACA'"
|
|
|
|
|
class="font-bold px-6"
|
|
|
|
|
>
|
|
|
|
|
{{ userInfo?.trade_active === 1 ? "مجاز" : "غیر مجاز" }}
|
|
|
|
|
</CustomTag>
|
|
|
|
|
</BasicInfoItem>
|
|
|
|
|
<div class="col-span-4 grid grid-cols-2 gap-3">
|
|
|
|
|
<div
|
|
|
|
|
v-for="(item, index) in userInfo.wallet"
|
|
|
|
|
:key="index"
|
|
|
|
|
class="grid grid-cols-2 bg-orange-50 gap-2 rounded-lg p-2"
|
|
|
|
|
v-for="(item, index) in userInfo.wallet"
|
|
|
|
|
:key="index"
|
|
|
|
|
class="grid grid-cols-2 bg-orange-50 gap-2 rounded-lg p-2"
|
|
|
|
|
>
|
|
|
|
|
<BasicInfoItem
|
|
|
|
|
title="نام قلک"
|
|
|
|
|
:value="item?.fund ? item?.fund?.title : 'کیف پول طلایی'"
|
|
|
|
|
title="نام قلک"
|
|
|
|
|
:value="item?.fund ? item?.fund?.title : 'کیف پول طلایی'"
|
|
|
|
|
/>
|
|
|
|
|
<BasicInfoItem title="مقدار طلا" :value="`${item?.gold} گرم`" />
|
|
|
|
|
<BasicInfoItem title="مقدار طلا" :value="`${item?.gold} گرم`"/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</a-tab-pane>
|
|
|
|
|
<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 key="لیست تراکنش ها" tab="لیست تراکنش ها">
|
|
|
|
|
<transactions-tbl ref="transactionTable" :customerId="userInfo?.id" />
|
|
|
|
|
<transactions-tbl ref="transactionTable" :customerId="userInfo?.id"/>
|
|
|
|
|
</a-tab-pane>
|
|
|
|
|
<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 key="معرفی کرده ها" tab="معرفی کرده ها">
|
|
|
|
|
<ReferralsTable ref="referralTable" :customerId="userInfo?.id" />
|
|
|
|
|
<ReferralsTable ref="referralTable" :customerId="userInfo?.id"/>
|
|
|
|
|
</a-tab-pane>
|
|
|
|
|
<a-tab-pane key="قلک ها" tab="قلک ها">
|
|
|
|
|
<FundsTable ref="fundTable" :customerId="userInfo?.id" />
|
|
|
|
|
<FundsTable ref="fundTable" :customerId="userInfo?.id"/>
|
|
|
|
|
</a-tab-pane>
|
|
|
|
|
</a-tabs>
|
|
|
|
|
</BasicModal>
|
|
|
|
|
<BasicModal
|
|
|
|
|
v-model:visible="showMoneyWalletCharge"
|
|
|
|
|
width="20rem"
|
|
|
|
|
title="شارژ کیف پول ریالی"
|
|
|
|
|
@ok="chargeMoneyWallet"
|
|
|
|
|
:loading="loading"
|
|
|
|
|
@close="showMoneyWalletCharge = false"
|
|
|
|
|
v-model:visible="showMoneyWalletCharge"
|
|
|
|
|
width="20rem"
|
|
|
|
|
title="شارژ کیف پول ریالی"
|
|
|
|
|
@ok="chargeMoneyWallet"
|
|
|
|
|
:loading="loading"
|
|
|
|
|
@close="showMoneyWalletCharge = false"
|
|
|
|
|
>
|
|
|
|
|
<a-form :model="formCharge" ref="formChargeRef" autocomplete="off">
|
|
|
|
|
<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">
|
|
|
|
|
معادل {{ usePrice(formCharge.value / 10, true, "تومان") }}
|
|
|
|
|
</div>
|
|
|
|
|
</a-form-item>
|
|
|
|
|
<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>
|
|
|
|
|
</BasicModal>
|
|
|
|
|
<BasicModal
|
|
|
|
|
v-model:visible="showGoldWalletCharge"
|
|
|
|
|
width="20rem"
|
|
|
|
|
title="شارژ کیف پول طلایی"
|
|
|
|
|
@ok="chargeGoldWallet"
|
|
|
|
|
:loading="loading"
|
|
|
|
|
@close="showGoldWalletCharge = false"
|
|
|
|
|
v-model:visible="showGoldWalletCharge"
|
|
|
|
|
width="20rem"
|
|
|
|
|
title="شارژ کیف پول طلایی"
|
|
|
|
|
@ok="chargeGoldWallet"
|
|
|
|
|
:loading="loading"
|
|
|
|
|
@close="showGoldWalletCharge = false"
|
|
|
|
|
>
|
|
|
|
|
<a-form :model="formCharge" ref="formChargeRef" autocomplete="off">
|
|
|
|
|
<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">
|
|
|
|
|
معادل {{ usePrice(formCharge.value / 10, true, 'تومان') }}
|
|
|
|
|
</div>-->
|
|
|
|
|
</a-form-item>
|
|
|
|
|
<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>
|
|
|
|
|
</BasicModal>
|
|
|
|
|
<BasicInfoModal
|
|
|
|
|
v-model:visible="userInfoOrderVisible"
|
|
|
|
|
@close="userInfoOrderVisible = false"
|
|
|
|
|
:title="infoParams.title"
|
|
|
|
|
:date="infoParams.date"
|
|
|
|
|
:time="infoParams.time"
|
|
|
|
|
:type="infoParams.type"
|
|
|
|
|
:name="infoParams.name"
|
|
|
|
|
:items="infoParams.items"
|
|
|
|
|
v-model:visible="userInfoOrderVisible"
|
|
|
|
|
@close="userInfoOrderVisible = false"
|
|
|
|
|
:title="infoParams.title"
|
|
|
|
|
:date="infoParams.date"
|
|
|
|
|
:time="infoParams.time"
|
|
|
|
|
:type="infoParams.type"
|
|
|
|
|
:name="infoParams.name"
|
|
|
|
|
:items="infoParams.items"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
|
// import BasicInfoModal from '@/components/BasicInfoModal'
|
|
|
|
|
import { Collapse, FormItem, message, Textarea, Form, TimePicker } from "ant-design-vue";
|
|
|
|
|
import { inputLenRules, inputRules } from "@/utils/inputRules";
|
|
|
|
|
import { useStaticApiListsStore } from "@/store/staticApisStore";
|
|
|
|
|
import { ref, watch } from "vue";
|
|
|
|
|
import {Collapse, FormItem, message, Textarea, Form, TimePicker} from "ant-design-vue";
|
|
|
|
|
import {inputLenRules, inputRules} from "@/utils/inputRules";
|
|
|
|
|
import {useStaticApiListsStore} from "@/store/staticApisStore";
|
|
|
|
|
import {ref, watch} from "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 type { Info } from "@/components/BasicInfoModal/model/Info";
|
|
|
|
|
import { toJalali, toJalaliNoTime, toTime } from "@core/utils/useDataTime";
|
|
|
|
|
import { confirmDeleteItem } from "@/utils/confirmModal";
|
|
|
|
|
import { cloneDeep } from "lodash";
|
|
|
|
|
import type { Item } from "@/model/Item";
|
|
|
|
|
import type { Customer } from "@/model/customer";
|
|
|
|
|
import { createProduct, deleteCustomer, updateCustomer } from "@/api/product";
|
|
|
|
|
import type { Charge } from "@/model/wallet";
|
|
|
|
|
import type {Info} from "@/components/BasicInfoModal/model/Info";
|
|
|
|
|
import {toJalali, toJalaliNoTime, toTime} from "@core/utils/useDataTime";
|
|
|
|
|
import {confirmDeleteItem} from "@/utils/confirmModal";
|
|
|
|
|
import {cloneDeep} from "lodash";
|
|
|
|
|
import type {Item} from "@/model/Item";
|
|
|
|
|
import type {Customer} from "@/model/customer";
|
|
|
|
|
import {createProduct, deleteCustomer, updateCustomer} from "@/api/product";
|
|
|
|
|
import type {Charge} from "@/model/wallet";
|
|
|
|
|
import customers from "@/router/routes/products";
|
|
|
|
|
import { chargeWallet } from "@/api/wallet";
|
|
|
|
|
import { usePrice } from "@core/utils/usePrice";
|
|
|
|
|
import {chargeWallet} from "@/api/wallet";
|
|
|
|
|
import {usePrice} from "@core/utils/usePrice";
|
|
|
|
|
import jalaliday from "jalaliday";
|
|
|
|
|
import ordersTbl from "@/pages/menuPages/orders/components/table.vue";
|
|
|
|
|
import transactionsTbl from "@/pages/menuPages/transactions/components/table.vue";
|
|
|
|
|
import smsTbl from "@/pages/menuPages/sms/components/table.vue";
|
|
|
|
|
import FundsTable from "@/pages/menuPages/customers/base/components/fundsTable.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 type { MethodePrices, Product } from "@/model/product";
|
|
|
|
|
import type {MethodePrices, Product} from "@/model/product";
|
|
|
|
|
import IndexImageUploader from "@/components/ProductUploader/IndexImageUploader.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 { methodePrices } from "@/api/price";
|
|
|
|
|
import { getAllPrices } from "@/api/dashboard";
|
|
|
|
|
import {methodePrices} from "@/api/price";
|
|
|
|
|
import {getAllPrices} from "@/api/dashboard";
|
|
|
|
|
import dayjs from "dayjs";
|
|
|
|
|
|
|
|
|
|
const ProductIndexImage = ref<Array<FileList>>([]);
|
|
|
|
@@ -885,7 +895,7 @@ const minusPrice = () => {
|
|
|
|
|
|
|
|
|
|
import customParseFormat from "dayjs/plugin/customParseFormat";
|
|
|
|
|
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);
|
|
|
|
|
const customLocale = ref({
|
|
|
|
|