import { Button, Paper, TextField, Select, MenuItem, FormControl, InputLabel, } from "@mui/material"; import { observer } from "mobx-react-lite"; import { ArrowLeft, Save } from "lucide-react"; import { Loader2 } from "lucide-react"; import { useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; import { carrierStore, cityStore, mediaStore, languageStore, useSelectedCity, } from "@shared"; import { useState, useEffect } from "react"; import { ImageUploadCard, LanguageSwitcher } from "@widgets"; import { SelectMediaDialog, UploadMediaDialog, PreviewMediaDialog, } from "@shared"; export const CarrierCreatePage = observer(() => { const navigate = useNavigate(); const { createCarrierData, setCreateCarrierData } = carrierStore; const { language } = languageStore; const { selectedCityId } = useSelectedCity(); const [selectedMediaId, setSelectedMediaId] = useState(null); const [isLoading, setIsLoading] = useState(false); const [isSelectMediaOpen, setIsSelectMediaOpen] = useState(false); const [isUploadMediaOpen, setIsUploadMediaOpen] = useState(false); const [isPreviewMediaOpen, setIsPreviewMediaOpen] = useState(false); const [mediaId, setMediaId] = useState(""); const [activeMenuType, setActiveMenuType] = useState< "thumbnail" | "watermark_lu" | "watermark_rd" | "image" | null >(null); useEffect(() => { cityStore.getCities("ru"); mediaStore.getMedia(); languageStore.setLanguage("ru"); }, []); useEffect(() => { if (selectedCityId && !createCarrierData.city_id) { setCreateCarrierData( createCarrierData[language].full_name, createCarrierData[language].short_name, selectedCityId, createCarrierData[language].slogan, selectedMediaId || "", language ); } }, [selectedCityId, createCarrierData.city_id]); const handleCreate = async () => { try { setIsLoading(true); await carrierStore.createCarrier(); toast.success("Перевозчик успешно создан"); navigate("/carrier"); } catch (error) { toast.error("Ошибка при создании перевозчика"); } finally { setIsLoading(false); } }; const handleMediaSelect = (media: { id: string; filename: string; media_name?: string; media_type: number; }) => { setSelectedMediaId(media.id); setCreateCarrierData( createCarrierData[language].full_name, createCarrierData[language].short_name, createCarrierData.city_id, createCarrierData[language].slogan, media.id, language ); }; const selectedMedia = selectedMediaId ? mediaStore.media.find((m) => m.id === selectedMediaId) : null; return (

Создание перевозчика

Город setCreateCarrierData( e.target.value, createCarrierData[language].short_name, createCarrierData.city_id, createCarrierData[language].slogan, selectedMediaId || "", language ) } /> setCreateCarrierData( createCarrierData[language].full_name, e.target.value, createCarrierData.city_id, createCarrierData[language].slogan, selectedMediaId || "", language ) } /> setCreateCarrierData( createCarrierData[language].full_name, createCarrierData[language].short_name, createCarrierData.city_id, e.target.value, selectedMediaId || "", language ) } />
{ setIsPreviewMediaOpen(true); setMediaId(selectedMedia?.id ?? ""); }} onDeleteImageClick={() => { setSelectedMediaId(null); setActiveMenuType(null); setCreateCarrierData( createCarrierData[language].full_name, createCarrierData[language].short_name, createCarrierData.city_id, createCarrierData[language].slogan, "", language ); }} onSelectFileClick={() => { setActiveMenuType("image"); setIsSelectMediaOpen(true); }} setUploadMediaOpen={() => { setIsUploadMediaOpen(true); setActiveMenuType("image"); }} />
setIsSelectMediaOpen(false)} onSelectMedia={handleMediaSelect} mediaType={1} /> setIsUploadMediaOpen(false)} contextObjectName={createCarrierData[language].full_name} contextType="carrier" afterUpload={handleMediaSelect} hardcodeType={activeMenuType} /> setIsPreviewMediaOpen(false)} mediaId={mediaId} />
); });