From 9f432a4314a19f68ae9e5304560b5ffd3618e826 Mon Sep 17 00:00:00 2001 From: andrei Date: Sun, 9 Mar 2025 21:30:28 +0500 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=88=D0=B0=D0=B3=D0=BE=D0=B2=D1=83=D1=8E=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=B4=D0=B0=D1=87=D1=83=20=D0=BB=D0=B8=D0=BD=D0=B7=D1=8B,=20?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BA=D0=B0=20=D0=B1=D0=B5=D0=B7=20?= =?UTF-8?q?=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lens_issues/LensIssueFormModal.jsx | 140 +++++++++++++++--- web-app/src/pages/IssuesPage.jsx | 6 +- 2 files changed, 121 insertions(+), 25 deletions(-) diff --git a/web-app/src/components/lens_issues/LensIssueFormModal.jsx b/web-app/src/components/lens_issues/LensIssueFormModal.jsx index fd827aa..45aa3f8 100644 --- a/web-app/src/components/lens_issues/LensIssueFormModal.jsx +++ b/web-app/src/components/lens_issues/LensIssueFormModal.jsx @@ -1,11 +1,10 @@ import {useEffect, useState} from "react"; -import {Modal, Form, Input, Select, Button, notification, Typography, Collapse, Steps} from "antd"; +import {Modal, Input, Button, notification, Typography, Collapse, Steps, Row, Alert, Col} from "antd"; import PropTypes from "prop-types"; import getAllPatients from "../../api/patients/GetAllPatients.jsx"; import getAllLenses from "../../api/lenses/GetAllLenses.jsx"; import {useAuth} from "../../AuthContext.jsx"; -const {Option} = Select; const LensIssueFormModal = ({visible, onCancel, onSubmit}) => { const {user} = useAuth(); @@ -14,6 +13,7 @@ const LensIssueFormModal = ({visible, onCancel, onSubmit}) => { const [searchPatientString, setSearchPatientString] = useState(""); const [searchLensString, setSearchLensString] = useState(""); + const [issueDate, setIssueDate] = useState(null); const [selectedPatient, setSelectedPatient] = useState(null); const [selectedLens, setSelectedLens] = useState(null); @@ -196,15 +196,70 @@ const LensIssueFormModal = ({visible, onCancel, onSubmit}) => { const ConfirmStep = () => { return ( -
- - {selectedPatient.last_name} {selectedPatient.first_name} - -

Дата рождения: {new Date(selectedPatient.birthday).toLocaleDateString("ru-RU")}

-

Email: {selectedPatient.email}

-

Телефон: {selectedPatient.phone}

-

Линза: {selectedLens.diameter} {selectedLens.tor} {selectedLens.preset_refraction}

-
+ <> + + + + + + Дата выдачи будет установлена автоматически: {issueDate.toLocaleDateString("ru-RU")} + + + + + + + + +
+ + {selectedPatient.last_name} {selectedPatient.first_name} + +

Дата рождения: {new Date(selectedPatient.birthday).toLocaleDateString("ru-RU")}

+

Email: {selectedPatient.email}

+

Телефон: {selectedPatient.phone}

+

Линза: {selectedLens.diameter} {selectedLens.tor} {selectedLens.preset_refraction}

+
+ +
+ + {selectedLens.diameter} {selectedLens.tor} {selectedLens.preset_refraction} + +

Диаметр: {selectedLens.diameter}

+

Тор: {selectedLens.tor}

+

Пресетная рефракция: {selectedLens.preset_refraction}

+

Диаметр: {selectedLens.diameter}

+

FVC: {selectedLens.fvc}

+

Острота зрения (Trial): {selectedLens.trial}

+

Периферийная торичность: {selectedLens.periphery_toricity}

+

Сторона: {selectedLens.side}

+

Esa: {selectedLens.esa}

+
+ ) }; @@ -221,7 +276,23 @@ const LensIssueFormModal = ({visible, onCancel, onSubmit}) => { title: 'Подтверждение', content: , }, - ] + ]; + + const isActiveNextButton = () => { + if (currentStep === 0 && !selectedPatient) { + return false; + } + + return !(currentStep === 1 && !selectedLens); + }; + + const isActivePrevButton = () => { + return currentStep > 0; + }; + + const isActiveFinishButton = () => { + return currentStep === steps.length - 1; + }; return ( { onCancel={() => { setSelectedPatient(null); setSelectedLens(null); + setCurrentStep(0); onCancel(); }} - onOk={handleOk} - okText="Сохранить" - cancelText="Отмена" + footer={null} maskClosable={false} + width={window.innerWidth > 768 ? 700 : "90%"} centered > - {steps[currentStep].content} - +
+ {steps[currentStep].content} +
+ {window.innerWidth > 768 && ( + 768 ? "horizontal" : "vertical"} + /> + )} + + + + +
); diff --git a/web-app/src/pages/IssuesPage.jsx b/web-app/src/pages/IssuesPage.jsx index 2768634..a05b78f 100644 --- a/web-app/src/pages/IssuesPage.jsx +++ b/web-app/src/pages/IssuesPage.jsx @@ -31,10 +31,10 @@ const IssuesPage = () => { useEffect(() => { if (!isModalVisible) { - const interval = setInterval(fetchLensIssues, 5000); - return () => clearInterval(interval); + const intervalId = setInterval(fetchLensIssues, 5000); + return () => clearInterval(intervalId); } - }, [user]); + }, [user, isModalVisible]); const fetchLensIssuesWithCache = async () => { const cachedData = localStorage.getItem("lensIssuesData");