From 7700f534cc2bd84282904261ec1a443fd90f09ec Mon Sep 17 00:00:00 2001 From: Tamara Date: Thu, 16 Nov 2023 16:33:01 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B8=D0=BA=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=81=D0=BA=D0=B8=D0=B4=D0=BE=D0=BA(=D0=B2=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DiscountManagement/CreateDiscount.tsx | 496 ++++++++++-------- .../Content/Tariffs/CreateTariff.tsx | 6 - 2 files changed, 267 insertions(+), 235 deletions(-) diff --git a/src/pages/dashboard/Content/DiscountManagement/CreateDiscount.tsx b/src/pages/dashboard/Content/DiscountManagement/CreateDiscount.tsx index 4c78723..c20e856 100644 --- a/src/pages/dashboard/Content/DiscountManagement/CreateDiscount.tsx +++ b/src/pages/dashboard/Content/DiscountManagement/CreateDiscount.tsx @@ -24,6 +24,19 @@ import { enqueueSnackbar } from "notistack"; import { DiscountType, discountTypes } from "@root/model/discount"; import { createDiscount } from "@root/api/discounts"; import usePrivileges from "@root/utils/hooks/usePrivileges"; +import { Formik, Field, Form, FormikHelpers } from "formik"; + +interface Values { + discountNameField: string, + discountDescriptionField: string, + discountFactorField: string, + serviceType: string, + discountType: DiscountType, + purchasesAmountField: string, + cartPurchasesAmountField: string, + discountMinValueField: string, + privilegeIdField: string, +} export default function CreateDiscount() { const theme = useTheme(); @@ -54,15 +67,30 @@ export default function CreateDiscount() { setServiceType(event.target.value as ServiceType); }; - async function handleCreateDiscount() { - const purchasesAmount = parseFloat(purchasesAmountField.replace(",", ".")); + const initialValues: Values = { + discountNameField: "", + discountDescriptionField: "", + discountFactorField: "", + serviceType: "", + discountType: "purchasesAmount", + purchasesAmountField: "", + cartPurchasesAmountField: "", + discountMinValueField: "", + privilegeIdField: "", + } + + async function handleCreateDiscount( + values: Values, + formikHelpers: FormikHelpers + ) { //валидация? + const purchasesAmount = parseFloat(values.purchasesAmountField.replace(",", ".")); const discountFactor = - (100 - parseFloat(discountFactorField.replace(",", "."))) / 100; + (100 - parseFloat(values.discountFactorField.replace(",", "."))) / 100; const cartPurchasesAmount = parseFloat( - cartPurchasesAmountField.replace(",", ".") + values.cartPurchasesAmountField.replace(",", ".") ); const discountMinValue = parseFloat( - discountMinValueField.replace(",", ".") + values.discountMinValueField.replace(",", ".") ); if (!isFinite(purchasesAmount)) @@ -87,13 +115,13 @@ export default function CreateDiscount() { discountFactor, discountMinValue, purchasesAmount, - discountDescription: discountDescriptionField, - discountName: discountNameField, + discountDescription: values.discountDescriptionField, + discountName: values.discountNameField, startDate: new Date().toISOString(), endDate: new Date(Date.now() + 1000 * 3600 * 24 * 30).toISOString(), - serviceType, - discountType, - privilegeId: privilegeIdField, + serviceType: values.serviceType, + discountType: values.discountType, + privilegeId: values.privilegeIdField, }); if (createdDiscountError) { @@ -108,225 +136,235 @@ export default function CreateDiscount() { } return ( - - setDiscountNameField(e.target.value)} - /> - setDiscountDescriptionField(e.target.value)} - /> - - Условия: - - setDiscountFactorField(e.target.value)} - /> - - - Тип скидки - - - {Object.keys(discountTypes).map((type) => ( - } - label={discountTypes[type as DiscountType]} - /> - ))} - - - {discountType === "purchasesAmount" && ( - setPurchasesAmountField(e.target.value)} - /> - )} - {discountType === "cartPurchasesAmount" && ( - setCartPurchasesAmountField(e.target.value)} - /> - )} - {discountType === "service" && ( - <> - - setDiscountMinValueField(e.target.value)} - /> - - )} - {discountType === "privilege" && ( - <> - - - Привилегия - - - - setDiscountMinValueField(e.target.value)} - /> - - )} - - - - + {(props) => ( +
+ + + + + Условия: + + + + + Тип скидки + + + {Object.keys(discountTypes).map((type) => ( + } + label={discountTypes[type as DiscountType]} + /> + ))} + + + {discountType === "purchasesAmount" && ( + + )} + {discountType === "cartPurchasesAmount" && ( + + )} + {discountType === "service" && ( + <> + + {SERVICE_LIST.map((service) => ( + + {service.displayName} + + ))} + + + + )} + {discountType === "privilege" && ( + <> + + + Привилегия + + + {privileges.map((privilege, index) => ( + + {privilege.description} + + ))} + + + + + )} + + + +
+ + )} + + ); } diff --git a/src/pages/dashboard/Content/Tariffs/CreateTariff.tsx b/src/pages/dashboard/Content/Tariffs/CreateTariff.tsx index 8001eae..b1d2b7f 100644 --- a/src/pages/dashboard/Content/Tariffs/CreateTariff.tsx +++ b/src/pages/dashboard/Content/Tariffs/CreateTariff.tsx @@ -247,12 +247,6 @@ export default function CreateTariff() { > Создать - )}