feat: deal product services
This commit is contained in:
		@@ -1,9 +1,12 @@
 | 
			
		||||
import {ServiceSchema} from "../../../client";
 | 
			
		||||
import {ServicePriceRangeSchema, ServiceSchema} from "../../../client";
 | 
			
		||||
import {useForm} from "@mantine/form";
 | 
			
		||||
import {ContextModalProps} from "@mantine/modals";
 | 
			
		||||
import BaseFormModal, {CreateEditFormProps} from "../../ClientsPage/modals/BaseFormModal/BaseFormModal.tsx";
 | 
			
		||||
import {NumberInput, TextInput} from "@mantine/core";
 | 
			
		||||
import {TextInput} from "@mantine/core";
 | 
			
		||||
import ServiceCategorySelect from "../components/ServiceCategorySelect/ServiceCategorySelect.tsx";
 | 
			
		||||
import ServiceTypeSelect from "../components/ServiceTypeSelect/ServiceTypeSelect.tsx";
 | 
			
		||||
import ServicePriceInput from "../components/ServicePriceInput/ServicePriceInput.tsx";
 | 
			
		||||
import {PriceRangeInputType} from "../components/ServicePriceInput/RangePriceInput.tsx";
 | 
			
		||||
 | 
			
		||||
type Props = CreateEditFormProps<ServiceSchema>
 | 
			
		||||
const CreateServiceModal = ({
 | 
			
		||||
@@ -13,32 +16,35 @@ const CreateServiceModal = ({
 | 
			
		||||
                            }: ContextModalProps<Props>) => {
 | 
			
		||||
 | 
			
		||||
    const isEditing = 'onChange' in innerProps;
 | 
			
		||||
    const initialValues: ServiceSchema = isEditing ? {
 | 
			
		||||
        id: innerProps.element.id,
 | 
			
		||||
        name: innerProps.element.name,
 | 
			
		||||
        price: innerProps.element.price,
 | 
			
		||||
        category: innerProps.element.category,
 | 
			
		||||
    } : {
 | 
			
		||||
    const initialValues: ServiceSchema = isEditing ? innerProps.element : {
 | 
			
		||||
        id: -1,
 | 
			
		||||
        name: '',
 | 
			
		||||
        price: 0,
 | 
			
		||||
        category: {
 | 
			
		||||
            id: -1,
 | 
			
		||||
            name: ''
 | 
			
		||||
        }
 | 
			
		||||
        },
 | 
			
		||||
        serviceType: -1,
 | 
			
		||||
        priceRanges: [] as ServicePriceRangeSchema[]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const form = useForm<ServiceSchema>({
 | 
			
		||||
        initialValues: initialValues,
 | 
			
		||||
        validate: {
 | 
			
		||||
            name: (name: string) => name.trim() !== '' ? null : "Необходимо ввести название услуги",
 | 
			
		||||
            price: (price: number) => price > 0 ? null : "Цена должна быть больше 0",
 | 
			
		||||
            category: (category: {
 | 
			
		||||
                id: number,
 | 
			
		||||
                name: string
 | 
			
		||||
            }) => category.id !== -1 ? null : "Необходимо выбрать категорию"
 | 
			
		||||
            }) => category.id !== -1 ? null : "Необходимо выбрать категорию",
 | 
			
		||||
            serviceType: (serviceType: number) => serviceType !== -1 ? null : "Необходимо выбрать тип услуги",
 | 
			
		||||
            priceRanges: (value, values) => value.length > 0 || values.price > 0 ? null : "Необходимо добавить хотя бы один диапазон цен или указать цену за единицу услуги",
 | 
			
		||||
            price: (value, values) => value > 0 || values.priceRanges.length > 0 ? null : "Необходимо добавить хотя бы один диапазон цен или указать цену за единицу услуги"
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    console.log(form.values)
 | 
			
		||||
    const onCancelClick = () => {
 | 
			
		||||
        context.closeContextModal(id);
 | 
			
		||||
    }
 | 
			
		||||
@@ -62,12 +68,21 @@ const CreateServiceModal = ({
 | 
			
		||||
                        label={"Название услуги"}
 | 
			
		||||
                        {...form.getInputProps('name')}
 | 
			
		||||
                    />
 | 
			
		||||
                    <NumberInput
 | 
			
		||||
                        placeholder={"Введите стоимость услуги"}
 | 
			
		||||
                        label={"Стоимость услуги"}
 | 
			
		||||
                        hideControls
 | 
			
		||||
                        decimalScale={2}
 | 
			
		||||
                        {...form.getInputProps('price')}
 | 
			
		||||
                    <ServiceTypeSelect
 | 
			
		||||
                        placeholder={"Выберите тип услуги"}
 | 
			
		||||
                        label={"Тип услуги"}
 | 
			
		||||
                        {...form.getInputProps('serviceType')}
 | 
			
		||||
                    />
 | 
			
		||||
                    <ServicePriceInput
 | 
			
		||||
                        singlePriceInputProps={{
 | 
			
		||||
                            hideControls: true,
 | 
			
		||||
                            label: "Цена за единицу услуги",
 | 
			
		||||
                            placeholder: "Введите цену за одну услугу",
 | 
			
		||||
                            ...form.getInputProps('price'),
 | 
			
		||||
                        }}
 | 
			
		||||
                        priceRangeInputProps={{
 | 
			
		||||
                            ...form.getInputProps('priceRanges')
 | 
			
		||||
                        } as PriceRangeInputType}
 | 
			
		||||
                    />
 | 
			
		||||
                </>
 | 
			
		||||
            </BaseFormModal.Body>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user