change edit product
This commit is contained in:
@@ -28,62 +28,64 @@
|
||||
<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
|
||||
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>
|
||||
<a-radio-group v-model:value="methodOption" name="radioGroup">
|
||||
<a-radio class="items-center" value="1">دستی</a-radio>
|
||||
<a-radio class="" value="2">اتوماتیک</a-radio>
|
||||
</a-radio-group>
|
||||
<!-- <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"
|
||||
>
|
||||
<div class="items-center">
|
||||
<span class="ml-4">دریافت قیمت از :</span>
|
||||
<a-radio-group v-model:value="methodOption" name="radioGroup">
|
||||
<a-radio class="items-center" value="1">دستی</a-radio>
|
||||
<a-radio class="" value="2">اتوماتیک</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
<div>
|
||||
<div v-if="methodOption === '1'" class="md:flex items-center justify-between md:w-[25rem]">
|
||||
<div class=" ">قیمت وسط :</div>
|
||||
<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()"
|
||||
>
|
||||
<template #icon>
|
||||
<div class="flex items-center justify-center">
|
||||
<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()"
|
||||
>
|
||||
<template #icon>
|
||||
<div class="flex items-center justify-center">
|
||||
<Icon icon="vuesax-linear:minus" size="20" />
|
||||
</div>
|
||||
</template>
|
||||
</AButton>
|
||||
</div>
|
||||
<div>
|
||||
<div v-if="methodOption === '1'" class="md:flex items-center justify-between md:w-[25rem]">
|
||||
<div class=" ">قیمت وسط :</div>
|
||||
<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()"
|
||||
>
|
||||
<template #icon>
|
||||
<div class="flex items-center justify-center">
|
||||
<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()"
|
||||
>
|
||||
<template #icon>
|
||||
<div class="flex items-center justify-center">
|
||||
<Icon icon="vuesax-linear:minus" size="20" />
|
||||
</div>
|
||||
</template>
|
||||
</AButton>
|
||||
</div>
|
||||
<div v-if="methodOption === '2'" class=" md:flex justify-between items-center">
|
||||
<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"
|
||||
/>
|
||||
</div>
|
||||
<div v-if="methodOption === '2'" class=" md:flex justify-between items-center">
|
||||
<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"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md:flex justify-between p-2 border-1 border-solid rounded-lg border-gray-200 mt-2">
|
||||
</div>
|
||||
<div v-if="form.group_type && form.group_type !== 'آبشده'"
|
||||
class="md:flex justify-between p-2 border-1 border-solid rounded-lg border-gray-200 mt-2">
|
||||
<div>
|
||||
<span class="ml-4">وزن :</span>
|
||||
<a-radio-group v-model:value="weightOption" name="radioGroup" class="">
|
||||
@@ -97,80 +99,84 @@
|
||||
<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}} سوت
|
||||
معادل {{ form.amount * 1000 }} سوت
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<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" />
|
||||
</a-form-item>
|
||||
<a-form-item label="دسته بندی" name="group_type" :rules="inputRules()">
|
||||
<BasicSelect
|
||||
v-model:value="form.group_type"
|
||||
:items="categoryItems"
|
||||
valueName="value"
|
||||
keyName="value"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item label="واحد" name="unit" :rules="inputRules()">
|
||||
<BasicSelect
|
||||
<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" />
|
||||
</a-form-item>
|
||||
<a-form-item label="دسته بندی" name="group_type" :rules="inputRules()">
|
||||
<BasicSelect
|
||||
v-model:value="form.group_type"
|
||||
:items="categoryItems"
|
||||
valueName="value"
|
||||
keyName="value"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item label="واحد" name="unit" :rules="inputRules()">
|
||||
<BasicSelect
|
||||
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>-->
|
||||
<a-form-item label="کارمزد درصدی موقع خرید" name="percent_fee_buy" :rules="inputRules()">
|
||||
<BasicInput v-model:value="form.percent_fee_buy" type="number" />
|
||||
</a-form-item>
|
||||
<a-form-item label="هزینه نقدی موقع خرید" name="cash_fee_buy" :rules="inputRules()">
|
||||
<BasicInput v-model:value="form.cash_fee_buy" type="number" />
|
||||
</a-form-item>
|
||||
<a-form-item label="کارمزد درصدی موقع فروش" name="percent_fee_sell" :rules="inputRules()">
|
||||
<BasicInput v-model:value="form.percent_fee_sell" type="number" />
|
||||
</a-form-item>
|
||||
<a-form-item label="هزینه نقدی موقع فروش" name="cash_fee_sell" :rules="inputRules()">
|
||||
<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"
|
||||
/>
|
||||
</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>-->
|
||||
<a-form-item v-if="form.group_type && form.group_type !== 'آبشده'"
|
||||
label="کارمزد درصدی موقع خرید" name="percent_fee_buy" :rules="inputRules()">
|
||||
<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" />
|
||||
</a-form-item>
|
||||
<a-form-item v-if="form.group_type && form.group_type !== 'آبشده'"
|
||||
label="کارمزد درصدی موقع فروش" name="percent_fee_sell" :rules="inputRules()">
|
||||
<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" />
|
||||
</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')"
|
||||
/>
|
||||
<!-- <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')"
|
||||
/>
|
||||
<!-- <a-time-picker v-model:value="form.auto_close_at"/>-->
|
||||
</a-form-item>
|
||||
</div>
|
||||
</a-form>
|
||||
: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')"
|
||||
/>
|
||||
<!-- <a-time-picker v-model:value="form.auto_close_at"/>-->
|
||||
</a-form-item>
|
||||
</div>
|
||||
</a-form>
|
||||
</template>
|
||||
</BaseCollapse>
|
||||
<BaseCollapse title="تصاویر محصول" active-key="1" :actives="activeKey_">
|
||||
<BaseCollapse title="تصاویر محصول" active-key="1" :actives="activeKey_">
|
||||
<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>
|
||||
@@ -219,7 +225,7 @@
|
||||
:bgColor="userInfo?.active ? '#E3F4E9' : '#FECACA'"
|
||||
class="font-bold px-6"
|
||||
>
|
||||
{{ userInfo?.active ? 'فعال' : 'غیرفعال' }}
|
||||
{{ userInfo?.active ? "فعال" : "غیرفعال" }}
|
||||
</CustomTag>
|
||||
</div>
|
||||
</div>
|
||||
@@ -261,7 +267,7 @@
|
||||
:bgColor="userInfo?.trade_active === 1 ? '#E3F4E9' : '#FECACA'"
|
||||
class="font-bold px-6"
|
||||
>
|
||||
{{ userInfo?.trade_active === 1 ? 'مجاز' : 'غیر مجاز' }}
|
||||
{{ userInfo?.trade_active === 1 ? "مجاز" : "غیر مجاز" }}
|
||||
</CustomTag>
|
||||
</BasicInfoItem>
|
||||
<div class="col-span-4 grid grid-cols-2 gap-3">
|
||||
@@ -308,7 +314,7 @@
|
||||
<a-form-item label="مقدار شارژ " name="value" :rules="inputRules()">
|
||||
<BasicInput addon-before="ریال" v-model:value="formCharge.value" type="price" />
|
||||
<div v-show="formCharge.value > 10">
|
||||
معادل {{ usePrice(formCharge.value / 10, true, 'تومان') }}
|
||||
معادل {{ usePrice(formCharge.value / 10, true, "تومان") }}
|
||||
</div>
|
||||
</a-form-item>
|
||||
<a-form-item label="علت شارژ " name="value" :rules="inputRules()">
|
||||
@@ -352,125 +358,131 @@
|
||||
<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 tbl from './components/table.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 { 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 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 customers from '@/router/routes/products'
|
||||
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 Icon from '@core/components/BaseIcon/src/Icon.vue'
|
||||
import type { Charge } from "@/model/wallet";
|
||||
import customers from "@/router/routes/products";
|
||||
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 Icon from "@core/components/BaseIcon/src/Icon.vue";
|
||||
import type { MethodePrices, Product } from "@/model/product";
|
||||
import IndexImageUploader from '@/components/ProductUploader/IndexImageUploader.vue'
|
||||
import ProductImageUploader from '@/components/ProductUploader/ProductImageUploader.vue'
|
||||
import IndexImageUploader from "@/components/ProductUploader/IndexImageUploader.vue";
|
||||
import ProductImageUploader from "@/components/ProductUploader/ProductImageUploader.vue";
|
||||
|
||||
//tabs
|
||||
const activeKey = ref('اطلاعات جامع')
|
||||
const activeKey = ref("اطلاعات جامع");
|
||||
|
||||
//loading
|
||||
const loading = ref<boolean>(false)
|
||||
const loading = ref<boolean>(false);
|
||||
|
||||
//define store
|
||||
const store = useStaticApiListsStore()
|
||||
const store = useStaticApiListsStore();
|
||||
|
||||
//define tbl
|
||||
const table = ref(null)
|
||||
const orderTable = ref(null)
|
||||
const transactionTable = ref(null)
|
||||
const smsTable = ref(null)
|
||||
const referralTable = ref(null)
|
||||
const fundTable = ref(null)
|
||||
const refreshTable = () => table?.value?.fetch()
|
||||
const refreshOrderTable = () => orderTable?.value?.fetch()
|
||||
const refreshTransactionTable = () => transactionTable?.value?.fetch()
|
||||
const refreshSMSTable = () => smsTable?.value?.fetch()
|
||||
const refreshReferralTable = () => referralTable?.value?.fetch()
|
||||
const refreshFundTable = () => fundTable?.value?.fetch()
|
||||
const methodOption = ref<string>('1')
|
||||
const weightOption = ref<string>('1')
|
||||
const table = ref(null);
|
||||
const orderTable = ref(null);
|
||||
const transactionTable = ref(null);
|
||||
const smsTable = ref(null);
|
||||
const referralTable = ref(null);
|
||||
const fundTable = ref(null);
|
||||
const refreshTable = () => table?.value?.fetch();
|
||||
const refreshOrderTable = () => orderTable?.value?.fetch();
|
||||
const refreshTransactionTable = () => transactionTable?.value?.fetch();
|
||||
const refreshSMSTable = () => smsTable?.value?.fetch();
|
||||
const refreshReferralTable = () => referralTable?.value?.fetch();
|
||||
const refreshFundTable = () => fundTable?.value?.fetch();
|
||||
const methodOption = ref<string>("1");
|
||||
const weightOption = ref<string>("1");
|
||||
|
||||
const activeKey_ = ref(["0"]);
|
||||
const ImageFileList = ref<Array<FileList>>([]);
|
||||
|
||||
const activeKey_ = ref(['0'])
|
||||
const ImageFileList = ref<Array<FileList>>([])
|
||||
function uploadedFile(id: number) {
|
||||
// console.log(id)
|
||||
let arr: number[] | undefined = form.value.image_ids
|
||||
arr?.push(id)
|
||||
form.value.image_ids = arr
|
||||
let arr: number[] | undefined = form.value.image_ids;
|
||||
arr?.push(id);
|
||||
form.value.image_ids = arr;
|
||||
}
|
||||
|
||||
function deleteFile() {
|
||||
form.value.image_ids = ImageFileList?.value.map((x: FileList) => x.uid)
|
||||
form.value.image_ids = ImageFileList?.value.map((x: FileList) => x.uid);
|
||||
}
|
||||
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 { getAllPrices } from "@/api/dashboard";
|
||||
import dayjs from "dayjs";
|
||||
const ProductIndexImage = ref<Array<FileList>>([])
|
||||
|
||||
const ProductIndexImage = ref<Array<FileList>>([]);
|
||||
|
||||
function uploadedIndexFile(id: number) {
|
||||
// console.log(id)
|
||||
form.value.original_image_id = id
|
||||
}
|
||||
function deleteIndexFile() {
|
||||
form.value.original_image_id = null
|
||||
form.value.original_image = null
|
||||
ProductIndexImage.value = []
|
||||
form.value.original_image_id = id;
|
||||
}
|
||||
|
||||
let updateKey = ref<number>(0)
|
||||
function deleteIndexFile() {
|
||||
form.value.original_image_id = null;
|
||||
form.value.original_image = null;
|
||||
ProductIndexImage.value = [];
|
||||
}
|
||||
|
||||
let updateKey = ref<number>(0);
|
||||
|
||||
|
||||
//role confirm items
|
||||
const confirmItems: Array<Item> = [
|
||||
{
|
||||
value: 'بله',
|
||||
value: "بله",
|
||||
key: true
|
||||
},
|
||||
{
|
||||
value: 'خیر',
|
||||
value: "خیر",
|
||||
key: false
|
||||
}
|
||||
]
|
||||
];
|
||||
const customerItems: Array<Item> = [
|
||||
{
|
||||
value: 'همکار',
|
||||
value: "همکار",
|
||||
key: 1
|
||||
},
|
||||
{
|
||||
value: 'خانگی',
|
||||
value: "خانگی",
|
||||
key: 2
|
||||
},
|
||||
{
|
||||
value: 'سرمایه گذار',
|
||||
value: "سرمایه گذار",
|
||||
key: 3
|
||||
}
|
||||
]
|
||||
];
|
||||
|
||||
//wallet
|
||||
const showMoneyWalletCharge = ref<boolean>(false)
|
||||
const showGoldWalletCharge = ref<boolean>(false)
|
||||
const userInfoOrderVisible = ref<boolean>(false)
|
||||
const showMoneyWalletCharge = ref<boolean>(false);
|
||||
const showGoldWalletCharge = ref<boolean>(false);
|
||||
const userInfoOrderVisible = ref<boolean>(false);
|
||||
|
||||
//form
|
||||
const form = ref<Partial<Product>>({
|
||||
auto_close_at: dayjs('00:00:00', 'HH:mm:ss'),
|
||||
auto_open_at: dayjs('00:00:00', 'HH:mm:ss')
|
||||
})
|
||||
auto_close_at: dayjs("00:00:00", "HH:mm:ss"),
|
||||
auto_open_at: dayjs("00:00:00", "HH:mm:ss")
|
||||
});
|
||||
|
||||
// const form = ref<Order>({
|
||||
// direction: 1,
|
||||
@@ -482,63 +494,63 @@ const form = ref<Partial<Product>>({
|
||||
// goldCash: undefined,
|
||||
// goldValue: undefined
|
||||
// })
|
||||
const formCharge = ref<Charge>({})
|
||||
const formRef = ref<FormInstance>()
|
||||
const formChargeRef = ref<FormInstance>()
|
||||
const formCharge = ref<Charge>({});
|
||||
const formRef = ref<FormInstance>();
|
||||
const formChargeRef = ref<FormInstance>();
|
||||
|
||||
//info
|
||||
let infoParams = reactive<Info>({})
|
||||
let infoParams = reactive<Info>({});
|
||||
|
||||
function infoOrder(val: Order) {
|
||||
infoParams.name = val.customer.name
|
||||
infoParams.type = val.customer.mobile
|
||||
infoParams.date = toJalaliNoTime(val.created_at)
|
||||
infoParams.time = toTime(val.created_at)
|
||||
infoParams.itemsTitle = 'اطلاعات کاربری'
|
||||
infoParams.name = val.customer.name;
|
||||
infoParams.type = val.customer.mobile;
|
||||
infoParams.date = toJalaliNoTime(val.created_at);
|
||||
infoParams.time = toTime(val.created_at);
|
||||
infoParams.itemsTitle = "اطلاعات کاربری";
|
||||
infoParams.items = [
|
||||
{
|
||||
key: 'مقدار (گرم)',
|
||||
value: val.amount ?? '-'
|
||||
key: "مقدار (گرم)",
|
||||
value: val.amount ?? "-"
|
||||
},
|
||||
{
|
||||
key: 'قیمت هر گرم طلا برای مشتری (ریال)',
|
||||
value: usePrice(val.price ?? 0) ?? '-'
|
||||
key: "قیمت هر گرم طلا برای مشتری (ریال)",
|
||||
value: usePrice(val.price ?? 0) ?? "-"
|
||||
},
|
||||
{
|
||||
key: 'قیمت کل برای مشتری (ریال)',
|
||||
value: usePrice(val.total_price ?? 0) ?? '-'
|
||||
key: "قیمت کل برای مشتری (ریال)",
|
||||
value: usePrice(val.total_price ?? 0) ?? "-"
|
||||
},
|
||||
{
|
||||
key: '/قیمت هر گرم طلا بدون سود (ریال)',
|
||||
value: usePrice(val.price_original ?? 0) ?? '-'
|
||||
key: "/قیمت هر گرم طلا بدون سود (ریال)",
|
||||
value: usePrice(val.price_original ?? 0) ?? "-"
|
||||
},
|
||||
{
|
||||
key: 'قیمت کل بدون سود (ریال)',
|
||||
value: usePrice(val.total_price_original ?? 0) ?? '-'
|
||||
key: "قیمت کل بدون سود (ریال)",
|
||||
value: usePrice(val.total_price_original ?? 0) ?? "-"
|
||||
},
|
||||
{
|
||||
key: 'سود هر گرم (ریال)',
|
||||
value: usePrice(val.fee ?? 0) ?? '-'
|
||||
key: "سود هر گرم (ریال)",
|
||||
value: usePrice(val.fee ?? 0) ?? "-"
|
||||
},
|
||||
{
|
||||
key: 'سود کل (ریال)',
|
||||
value: usePrice(val.total_fee ?? 0) ?? '-'
|
||||
key: "سود کل (ریال)",
|
||||
value: usePrice(val.total_fee ?? 0) ?? "-"
|
||||
},
|
||||
{
|
||||
key: 'کد کاربری',
|
||||
value: val.customer.id ?? '-'
|
||||
key: "کد کاربری",
|
||||
value: val.customer.id ?? "-"
|
||||
},
|
||||
{
|
||||
key: 'شماره ملی',
|
||||
value: val.customer.n_code ?? '-'
|
||||
key: "شماره ملی",
|
||||
value: val.customer.n_code ?? "-"
|
||||
},
|
||||
{
|
||||
key: 'کارمزد ریالی',
|
||||
key: "کارمزد ریالی",
|
||||
value: usePrice(val.service_charge_price ?? 0)
|
||||
},
|
||||
{
|
||||
key: 'کارمزد طلایی',
|
||||
value: val.service_charge ?? '-' + ' گرم'
|
||||
key: "کارمزد طلایی",
|
||||
value: val.service_charge ?? "-" + " گرم"
|
||||
},
|
||||
/* {
|
||||
key: 'تاریخ تولد',
|
||||
@@ -549,234 +561,235 @@ function infoOrder(val: Order) {
|
||||
value: val.customer.shop_name ?? '-'
|
||||
},*/
|
||||
{
|
||||
key: 'شماره تلفن',
|
||||
value: val.customer.phone_number ?? '-'
|
||||
key: "شماره تلفن",
|
||||
value: val.customer.phone_number ?? "-"
|
||||
},
|
||||
{
|
||||
key: 'نام استان',
|
||||
value: val.customer.province ?? '-'
|
||||
key: "نام استان",
|
||||
value: val.customer.province ?? "-"
|
||||
},
|
||||
{
|
||||
key: 'نام شهر',
|
||||
value: val.customer.city ?? '-'
|
||||
key: "نام شهر",
|
||||
value: val.customer.city ?? "-"
|
||||
}
|
||||
/* {
|
||||
key: 'نام چاپی',
|
||||
value: val.print_name ?? '-'
|
||||
}*/
|
||||
]
|
||||
userInfoOrderVisible.value = true
|
||||
];
|
||||
userInfoOrderVisible.value = true;
|
||||
}
|
||||
|
||||
async function info(val: Customer) {
|
||||
activeKey.value = 'اطلاعات جامع'
|
||||
userInfo.value = cloneDeep(val)
|
||||
userInfoVisible.value = true
|
||||
activeKey.value = "اطلاعات جامع";
|
||||
userInfo.value = cloneDeep(val);
|
||||
userInfoVisible.value = true;
|
||||
await nextTick(() => {
|
||||
loading.value = true
|
||||
refreshFundTable()
|
||||
refreshReferralTable()
|
||||
refreshSMSTable()
|
||||
refreshTransactionTable()
|
||||
refreshOrderTable()
|
||||
loading.value = false
|
||||
})
|
||||
loading.value = true;
|
||||
refreshFundTable();
|
||||
refreshReferralTable();
|
||||
refreshSMSTable();
|
||||
refreshTransactionTable();
|
||||
refreshOrderTable();
|
||||
loading.value = false;
|
||||
});
|
||||
}
|
||||
|
||||
//edit
|
||||
let editId: number | undefined = undefined
|
||||
let editId: number | undefined = undefined;
|
||||
|
||||
async function edit(record: Customer) {
|
||||
addUserVisible.value = true
|
||||
editId = record.id
|
||||
const customForm = cloneDeep(record)
|
||||
addUserVisible.value = true;
|
||||
editId = record.id;
|
||||
const customForm = cloneDeep(record);
|
||||
|
||||
form.value = cloneDeep(customForm)
|
||||
form.value = cloneDeep(customForm);
|
||||
|
||||
form.value.auto_open_at = dayjs(customForm.auto_open_at, 'HH:mm:ss')
|
||||
form.value.auto_close_at = dayjs(customForm.auto_close_at, 'HH:mm:ss')
|
||||
form.value.auto_open_at = dayjs(customForm.auto_open_at, "HH:mm:ss");
|
||||
form.value.auto_close_at = dayjs(customForm.auto_close_at, "HH:mm:ss");
|
||||
}
|
||||
|
||||
//add
|
||||
async function add() {
|
||||
loading.value = true
|
||||
editId = undefined
|
||||
loading.value = true;
|
||||
editId = undefined;
|
||||
// await store.getUsersList()
|
||||
addUserVisible.value = true
|
||||
updateKey.value++
|
||||
resetData()
|
||||
loading.value = false
|
||||
addUserVisible.value = true;
|
||||
updateKey.value++;
|
||||
resetData();
|
||||
loading.value = false;
|
||||
}
|
||||
|
||||
async function walletMoneyCharge(val: Customer) {
|
||||
showMoneyWalletCharge.value = true
|
||||
formCharge.value.customer_id = val.id
|
||||
showMoneyWalletCharge.value = true;
|
||||
formCharge.value.customer_id = val.id;
|
||||
}
|
||||
|
||||
async function walletGoldCharge(val: Customer) {
|
||||
showGoldWalletCharge.value = true
|
||||
formCharge.value.customer_id = val.id
|
||||
showGoldWalletCharge.value = true;
|
||||
formCharge.value.customer_id = val.id;
|
||||
}
|
||||
|
||||
async function chargeMoneyWallet() {
|
||||
formChargeRef.value?.validateFields().then(async () => {
|
||||
try {
|
||||
loading.value = true
|
||||
await chargeWallet(formCharge.value, 'money')
|
||||
formCharge.value.value = undefined
|
||||
message.success('افزایش اعتبار با موفقیت انجام شد')
|
||||
showMoneyWalletCharge.value = false
|
||||
loading.value = true;
|
||||
await chargeWallet(formCharge.value, "money");
|
||||
formCharge.value.value = undefined;
|
||||
message.success("افزایش اعتبار با موفقیت انجام شد");
|
||||
showMoneyWalletCharge.value = false;
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
console.log(e);
|
||||
} finally {
|
||||
loading.value = false
|
||||
loading.value = false;
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async function chargeGoldWallet() {
|
||||
formChargeRef.value?.validateFields().then(async () => {
|
||||
try {
|
||||
loading.value = true
|
||||
await chargeWallet(formCharge.value, 'gold')
|
||||
formCharge.value.value = undefined
|
||||
message.success('افزایش اعتبار با موفقیت انجام شد')
|
||||
showMoneyWalletCharge.value = false
|
||||
loading.value = true;
|
||||
await chargeWallet(formCharge.value, "gold");
|
||||
formCharge.value.value = undefined;
|
||||
message.success("افزایش اعتبار با موفقیت انجام شد");
|
||||
showMoneyWalletCharge.value = false;
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
console.log(e);
|
||||
} finally {
|
||||
loading.value = false
|
||||
loading.value = false;
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
//reset data
|
||||
const resetData = () => {
|
||||
formRef.value?.resetFields()
|
||||
formRef.value?.resetFields();
|
||||
form.value = {
|
||||
unit: '',
|
||||
group_type: '',
|
||||
unit: "",
|
||||
group_type: "سکه",
|
||||
amount: undefined,
|
||||
percent_fee_buy: 0,
|
||||
cash_fee_buy: 0,
|
||||
percent_fee_sell: 0,
|
||||
cash_fee_sell: 0,
|
||||
}
|
||||
}
|
||||
cash_fee_sell: 0
|
||||
};
|
||||
};
|
||||
|
||||
//delete
|
||||
const deleteItem = (id: number) => confirmDeleteItem('کاربر', id, deleteCustomer, refreshTable)
|
||||
const deleteItem = (id: number) => confirmDeleteItem("کاربر", id, deleteCustomer, refreshTable);
|
||||
|
||||
//define selects
|
||||
onMounted(async () => {
|
||||
loading.value = true
|
||||
loading.value = true;
|
||||
// await getResponsible()
|
||||
// await getQC()
|
||||
// await getManager()
|
||||
loading.value = false
|
||||
})
|
||||
loading.value = false;
|
||||
});
|
||||
|
||||
//add project modal
|
||||
const addUserVisible = ref<boolean>(false)
|
||||
const userInfoVisible = ref<boolean>(false)
|
||||
const userInfo = ref<Customer>()
|
||||
const addUserVisible = ref<boolean>(false);
|
||||
const userInfoVisible = ref<boolean>(false);
|
||||
const userInfo = ref<Customer>();
|
||||
|
||||
//submit user
|
||||
async function ok() {
|
||||
formRef.value?.validateFields().then(async () => {
|
||||
// console.log('salam', form.value)
|
||||
// return
|
||||
loading.value = true
|
||||
loading.value = true;
|
||||
try {
|
||||
if (methodOption.value === '1') delete form.value.reading_method
|
||||
else delete form.value.price
|
||||
if(weightOption.value === '2')
|
||||
form.value.amount = 1
|
||||
form.value.auto_open_at = dayjs(form.value.auto_open_at).format('HH:mm:ss')
|
||||
form.value.auto_close_at = dayjs(form.value.auto_close_at).format('HH:mm:ss')
|
||||
await methodePrices(form.value)
|
||||
if (methodOption.value === "1") delete form.value.reading_method;
|
||||
else delete form.value.price;
|
||||
if (weightOption.value === "2")
|
||||
form.value.amount = 1;
|
||||
form.value.auto_open_at = dayjs(form.value.auto_open_at).format("HH:mm:ss");
|
||||
form.value.auto_close_at = dayjs(form.value.auto_close_at).format("HH:mm:ss");
|
||||
await methodePrices(form.value);
|
||||
if (editId) {
|
||||
await updateCustomer(editId, form.value)
|
||||
await updateCustomer(editId, form.value);
|
||||
} else {
|
||||
await createProduct(form.value)
|
||||
await createProduct(form.value);
|
||||
}
|
||||
addUserVisible.value = false
|
||||
refreshTable()
|
||||
resetData()
|
||||
message.success('عملیات با موفقیت انجام شد')
|
||||
addUserVisible.value = false;
|
||||
refreshTable();
|
||||
resetData();
|
||||
message.success("عملیات با موفقیت انجام شد");
|
||||
// await getResponsible()
|
||||
// await getQC()
|
||||
// await getManager()
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
console.error(e);
|
||||
// message.error('خطا در بارگذاری اطلاعات')
|
||||
} finally {
|
||||
loading.value = false
|
||||
loading.value = false;
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
const result = {
|
||||
title: ''
|
||||
}
|
||||
title: ""
|
||||
};
|
||||
const userStatus = (status: number) => {
|
||||
switch (status) {
|
||||
case 0:
|
||||
result.title = 'احراز هویت نشده'
|
||||
break
|
||||
result.title = "احراز هویت نشده";
|
||||
break;
|
||||
case 1:
|
||||
result.title = 'احراز هویت شده توسط سامانه هوشمند'
|
||||
break
|
||||
result.title = "احراز هویت شده توسط سامانه هوشمند";
|
||||
break;
|
||||
case 2:
|
||||
result.title = 'احراز هویت شده توسط کارشناس'
|
||||
break
|
||||
result.title = "احراز هویت شده توسط کارشناس";
|
||||
break;
|
||||
}
|
||||
return result
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
const unitItems: Array<Item> = [
|
||||
{
|
||||
value: 'عدد',
|
||||
value: "عدد"
|
||||
},
|
||||
{
|
||||
value: 'گرم',
|
||||
},
|
||||
]
|
||||
value: "گرم"
|
||||
}
|
||||
];
|
||||
|
||||
const categoryItems: Array<Item> = [
|
||||
{
|
||||
value: 'آبشده',
|
||||
},
|
||||
{
|
||||
value: 'مکعب',
|
||||
},
|
||||
{
|
||||
value: 'گوی',
|
||||
},
|
||||
{
|
||||
value: 'سکه',
|
||||
value: "آبشده"
|
||||
},
|
||||
{
|
||||
value: 'سکه پارسیان',
|
||||
value: "مکعب"
|
||||
},
|
||||
{
|
||||
value: 'شمش',
|
||||
value: "گوی"
|
||||
},
|
||||
{
|
||||
value: 'شمش ونوس',
|
||||
value: "سکه"
|
||||
},
|
||||
{
|
||||
value: "سکه پارسیان"
|
||||
},
|
||||
{
|
||||
value: "شمش"
|
||||
},
|
||||
{
|
||||
value: "شمش ونوس"
|
||||
}
|
||||
|
||||
]
|
||||
];
|
||||
|
||||
const data = ref<MethodePrices[]>([])
|
||||
const data = ref<MethodePrices[]>([]);
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
data.value = await methodePrices()
|
||||
data.value = await methodePrices();
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
console.error(err);
|
||||
} finally {
|
||||
loading.value = false
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const pricesList = computed(() => {
|
||||
return data.value.map((x) => {
|
||||
@@ -784,44 +797,47 @@ const pricesList = computed(() => {
|
||||
id: `${x.name}`,
|
||||
// id: x.id,
|
||||
name: `${x.name}(${usePrice(x.price)})`
|
||||
}
|
||||
})
|
||||
})
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
fetchData()
|
||||
})
|
||||
fetchData();
|
||||
});
|
||||
|
||||
const addPrice = () => {
|
||||
if (form.value.price) form.value.price = parseInt(form.value.price) + 10000
|
||||
else form.value.price = 0 + 10000
|
||||
}
|
||||
if (form.value.price) form.value.price = parseInt(form.value.price) + 10000;
|
||||
else form.value.price = 0 + 10000;
|
||||
};
|
||||
|
||||
const minusPrice = () => {
|
||||
if (form.value.price) form.value.price = parseInt(form.value.price) - 10000
|
||||
else form.value.price = 0 - 10000
|
||||
}
|
||||
if (form.value.price) form.value.price = parseInt(form.value.price) - 10000;
|
||||
else form.value.price = 0 - 10000;
|
||||
};
|
||||
|
||||
import customParseFormat from 'dayjs/plugin/customParseFormat'
|
||||
import locale from 'ant-design-vue/es/date-picker/locale/fa_IR'
|
||||
dayjs.extend(customParseFormat)
|
||||
import customParseFormat from "dayjs/plugin/customParseFormat";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/fa_IR";
|
||||
|
||||
dayjs.extend(customParseFormat);
|
||||
const customLocale = ref({
|
||||
...locale,
|
||||
lang: {
|
||||
...locale.lang,
|
||||
now: "اکنون",
|
||||
ok: "ثبت",
|
||||
},
|
||||
})
|
||||
ok: "ثبت"
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.reject {
|
||||
color: #ff0000 !important;
|
||||
}
|
||||
|
||||
.success {
|
||||
color: #008000 !important;
|
||||
}
|
||||
|
||||
.method_style .ant-select-selector {
|
||||
width: 15rem !important;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user