From 89a947cd2831611b9ad2c943b590c73a6a091bc6 Mon Sep 17 00:00:00 2001 From: andrei Date: Sun, 1 Jun 2025 13:21:41 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=20=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D1=82=D1=8C=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B8=D0=B5=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppointmentsPage/AppointmentsPage.jsx | 49 ++++++----- .../AppointmentFormModal.jsx | 45 ++++++---- .../useAppointmentFormModal.js | 14 ++- .../useAppointmentFormModalUI.js | 86 ++++++++++++++++--- .../Pages/AppointmentsPage/useAppointments.js | 62 ++++++------- .../AppointmentsPage/useAppointmentsUI.js | 31 +++---- web-app/src/Redux/Slices/appointmentsSlice.js | 3 +- 7 files changed, 177 insertions(+), 113 deletions(-) diff --git a/web-app/src/Components/Pages/AppointmentsPage/AppointmentsPage.jsx b/web-app/src/Components/Pages/AppointmentsPage/AppointmentsPage.jsx index 4c7541e..14fb209 100644 --- a/web-app/src/Components/Pages/AppointmentsPage/AppointmentsPage.jsx +++ b/web-app/src/Components/Pages/AppointmentsPage/AppointmentsPage.jsx @@ -1,31 +1,37 @@ -import {Button, FloatButton, Result, Tabs, Typography} from "antd"; -import {Splitter} from "antd"; -import {CalendarOutlined, TableOutlined, MenuFoldOutlined, MenuUnfoldOutlined, PlusOutlined} from "@ant-design/icons"; +import { Button, FloatButton, Result, Tabs, Typography } from "antd"; +import { Splitter } from "antd"; +import { CalendarOutlined, TableOutlined, MenuFoldOutlined, MenuUnfoldOutlined, PlusOutlined } from "@ant-design/icons"; import AppointmentsCalendarTab from "./Components/AppointmentCalendarTab/AppointmentsCalendarTab.jsx"; import AppointmentsTableTab from "./Components/AppointmentTableTab/AppointmentsTableTab.jsx"; import useAppointmentsUI from "./useAppointmentsUI.js"; import useAppointments from "./useAppointments.js"; import dayjs from 'dayjs'; import LoadingIndicator from "../../Widgets/LoadingIndicator.jsx"; -import AppointmentFormModal - from "./Components/AppointmentCalendarTab/Components/AppointmentFormModal/AppointmentFormModal.jsx"; +import AppointmentFormModal from "./Components/AppointmentCalendarTab/Components/AppointmentFormModal/AppointmentFormModal.jsx"; +import { useDispatch } from "react-redux"; +import { closeModal, openModal } from "../../../Redux/Slices/appointmentsSlice.js"; const AppointmentsPage = () => { const appointmentsData = useAppointments(); const appointmentsPageUI = useAppointmentsUI(appointmentsData.appointments, appointmentsData.scheduledAppointments); + const dispatch = useDispatch(); + + const handleCancelModal = () => { + dispatch(closeModal()); + }; const items = [ { key: "1", label: "Календарь приемов", - children: , - icon: , + children: , + icon: , }, { key: "2", label: "Таблица приемов", - children: , - icon: , + children: , + icon: , }, ]; @@ -40,7 +46,7 @@ const AppointmentsPage = () => { return ( <> {appointmentsData.isLoading ? ( - + ) : ( <> { min="25%" max="90%" > - + {appointmentsPageUI.showSplitterPanel && ( @@ -94,34 +100,33 @@ const AppointmentsPage = () => { } - tooltip={"Создать"} + icon={} + tooltip="Создать" > } - onClick={appointmentsPageUI.openCreateAppointmentModal} - tooltip={"Прием"} + icon={} + onClick={() => dispatch(openModal())} + tooltip="Прием" /> } + icon={} onClick={appointmentsPageUI.openCreateScheduledAppointmentModal} - tooltip={"Запланированный прием"} + tooltip="Запланированный прием" /> )} diff --git a/web-app/src/Components/Pages/AppointmentsPage/Components/AppointmentCalendarTab/Components/AppointmentFormModal/AppointmentFormModal.jsx b/web-app/src/Components/Pages/AppointmentsPage/Components/AppointmentCalendarTab/Components/AppointmentFormModal/AppointmentFormModal.jsx index da6bc83..39c525b 100644 --- a/web-app/src/Components/Pages/AppointmentsPage/Components/AppointmentCalendarTab/Components/AppointmentFormModal/AppointmentFormModal.jsx +++ b/web-app/src/Components/Pages/AppointmentsPage/Components/AppointmentCalendarTab/Components/AppointmentFormModal/AppointmentFormModal.jsx @@ -1,16 +1,26 @@ import ReactQuill from 'react-quill'; import 'react-quill/dist/quill.snow.css'; import dayjs from "dayjs"; -import {Button, DatePicker, Form, InputNumber, Modal, Result, Select} from "antd"; +import utc from "dayjs/plugin/utc"; +import timezone from "dayjs/plugin/timezone"; +import { Button, DatePicker, Form, InputNumber, Modal, Result, Select } from "antd"; import useAppointmentFormModal from "./useAppointmentFormModal.js"; import useAppointmentFormModalUI from "./useAppointmentFormModalUI.js"; import LoadingIndicator from "../../../../../../Widgets/LoadingIndicator.jsx"; -import {DefaultModalPropType} from "../../../../../../../Types/defaultModalPropType.js"; +import { DefaultModalPropType } from "../../../../../../../Types/defaultModalPropType.js"; +dayjs.extend(utc); +dayjs.extend(timezone); +dayjs.tz.setDefault('Europe/Moscow'); -const AppointmentFormModal = ({visible, onCancel, onSubmit}) => { +const AppointmentFormModal = ({ visible, onCancel }) => { const appointmentFormModalData = useAppointmentFormModal(); - const appointmentFormModalUI = useAppointmentFormModalUI(visible, onCancel, onSubmit); + const appointmentFormModalUI = useAppointmentFormModalUI( + visible, + onCancel, + appointmentFormModalData.createAppointment, + appointmentFormModalData.updateAppointment + ); if (appointmentFormModalData.isError) { return ( @@ -25,23 +35,23 @@ const AppointmentFormModal = ({visible, onCancel, onSubmit}) => { return ( <> {appointmentFormModalData.isLoading ? ( - + ) : (
{ {appointmentFormModalData.appointmentTypes.map(type => ( - {type.name} + {type.title} ))} @@ -85,23 +95,22 @@ const AppointmentFormModal = ({visible, onCancel, onSubmit}) => { - + - + - +