change edit product

This commit is contained in:
2025-11-18 13:02:47 +03:30
parent 6b918237fc
commit 3eaeb7bc07
+362 -346
View File
@@ -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;
}