setting better performance

This commit is contained in:
2026-06-07 10:58:23 +03:30
parent c1b33b5063
commit 2cee31105d
6 changed files with 278 additions and 49 deletions
@@ -96,6 +96,20 @@
<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-form-item>
<a-form-item label="محدودیت مبلغ سفارش" name="order_limit_enabled">
<a-switch v-model:checked="form.order_limit_enabled" @change="onOrderLimitChange" />
</a-form-item>
<template v-if="form.order_limit_enabled">
<div class="col-span-2 text-xs text-gray-500 -mt-2 mb-1">
حداقل یکی از «حداقل» یا «حداکثر» الزامی است؛ می‌توانید فقط یکی را پر کنید.
</div>
<a-form-item label="حداقل مبلغ سفارش (ریال)" name="min_order_cash">
<BasicInput v-model:value="form.min_order_cash" addon-before="ریال" type="price" />
</a-form-item>
<a-form-item label="حداکثر مبلغ سفارش (ریال)" name="max_order_cash">
<BasicInput v-model:value="form.max_order_cash" addon-before="ریال" type="price" />
</a-form-item>
</template>
</div>
</a-form>
</template>
@@ -124,7 +138,7 @@ import IndexImageUploader from '@/components/ProductUploader/IndexImageUploader.
import { getConfigApp } from '@/utils/config'
import dayjs from 'dayjs'
defineProps<{
const props = defineProps<{
form: any
formRef: any
methodOption: string
@@ -142,6 +156,13 @@ defineProps<{
editId?: number
}>()
function onOrderLimitChange(checked: boolean) {
if (!checked) {
props.form.min_order_cash = undefined
props.form.max_order_cash = undefined
}
}
defineEmits<{
(e: 'addPrice'): void
(e: 'minusPrice'): void
+14 -2
View File
@@ -72,6 +72,7 @@ import {
resolveProductImageSrc,
unwrapApiRecord
} from '@/utils/file'
import { normalizeProductOrderLimitForm, validateProductOrderLimitForm } from '@/utils/productOrderLimit'
dayjs.extend(customParseFormat)
@@ -241,13 +242,13 @@ async function edit(record: Product) {
? dayjs(productData.auto_close_at, 'HH:mm:ss')
: dayjs('00:00:00', 'HH:mm:ss')
form.value = {
form.value = normalizeProductOrderLimitForm({
...productData,
price_offset_percent: productData.price_offset_percent ?? 0,
direct_price: productData.direct_price ?? 0,
auto_open_at: start.isValid() ? start : dayjs('00:00:00', 'HH:mm:ss'),
auto_close_at: close.isValid() ? close : dayjs('00:00:00', 'HH:mm:ss')
}
})
await setProductIndexImage(productData, record.id)
}
@@ -281,6 +282,9 @@ function resetData() {
direct_price: 0,
file_id: undefined,
file: undefined,
order_limit_enabled: false,
min_order_cash: undefined,
max_order_cash: undefined,
auto_open_at: dayjs('00:00:00', 'HH:mm:ss'),
auto_close_at: dayjs('00:00:00', 'HH:mm:ss')
}
@@ -296,6 +300,12 @@ async function ok() {
loading.value = true
try {
const payload = cloneDeep(form.value)
const limitError = validateProductOrderLimitForm(payload)
if (limitError) {
message.error(limitError)
loading.value = false
return
}
if (methodOption.value === '1') {
delete payload.reading_method
payload.price_offset_percent = 0
@@ -322,6 +332,8 @@ async function ok() {
delete payload.file
}
normalizeProductOrderLimitForm(payload)
if (editId) {
await updateCustomer(editId, payload)
} else {