From 65a6c963f2cd3b07e28a17c35287338832a0bd57 Mon Sep 17 00:00:00 2001 From: Samandar Turgunboyev Date: Wed, 5 Nov 2025 15:43:19 +0500 Subject: [PATCH] bug fix --- src/pages/tours/ui/StepOne.tsx | 51 +++++++++++++---------- src/pages/tours/ui/TicketsImagesModel.tsx | 35 +++++++++------- 2 files changed, 48 insertions(+), 38 deletions(-) diff --git a/src/pages/tours/ui/StepOne.tsx b/src/pages/tours/ui/StepOne.tsx index 184270a..f8fd3cb 100644 --- a/src/pages/tours/ui/StepOne.tsx +++ b/src/pages/tours/ui/StepOne.tsx @@ -335,9 +335,9 @@ const StepOne = ({ value.amenities?.forEach((e, i) => { formData.append(`ticket_amenities[${i}]`, String(e)); }); - value.images.forEach((e) => { + value.images.forEach((e, i) => { if (e instanceof File) { - formData.append("ticket_images", e); + formData.append(`ticket_images[${i}]`, e); } }); value.amenities?.forEach((e, i) => { @@ -354,13 +354,17 @@ const StepOne = ({ } }); value.ticket_itinerary?.forEach((itinerary, i) => { + itinerary.ticket_itinerary_image.forEach((img) => { + if (img.image instanceof File) { + formData.append(`ticket_itinerary[${i}]title`, itinerary.title); + formData.append(`ticket_itinerary[${i}]title_ru`, itinerary.title_ru); + formData.append( + `ticket_itinerary[${i}]duration`, + String(itinerary.duration), + ); + } + }); // Har bir itinerary uchun asosiy maydonlar - formData.append(`ticket_itinerary[${i}]title`, itinerary.title); - formData.append(`ticket_itinerary[${i}]title_ru`, itinerary.title_ru); - formData.append( - `ticket_itinerary[${i}]duration`, - String(itinerary.duration), - ); // 🖼 Rasmlar (faqat yangi yuklangan File-larni yuborish) if (Array.isArray(itinerary.ticket_itinerary_image)) { @@ -381,20 +385,23 @@ const StepOne = ({ } }); } - - // 📍 Destinations (yo‘nalishlar) - if (Array.isArray(itinerary.ticket_itinerary_destinations)) { - itinerary.ticket_itinerary_destinations.forEach((dest, k) => { - formData.append( - `ticket_itinerary[${i}]ticket_itinerary_destinations[${k}]name`, - dest.name, - ); - formData.append( - `ticket_itinerary[${i}]ticket_itinerary_destinations[${k}]name_ru`, - dest.name_ru, - ); - }); - } + itinerary.ticket_itinerary_image.forEach((img) => { + if (Array.isArray(itinerary.ticket_itinerary_destinations)) { + if (img.image instanceof File) { + // 📍 Destinations (yo‘nalishlar) + itinerary.ticket_itinerary_destinations.forEach((dest, k) => { + formData.append( + `ticket_itinerary[${i}]ticket_itinerary_destinations[${k}]name`, + dest.name, + ); + formData.append( + `ticket_itinerary[${i}]ticket_itinerary_destinations[${k}]name_ru`, + dest.name_ru, + ); + }); + } + } + }); }); value.hotel_meals.forEach((e, i) => { diff --git a/src/pages/tours/ui/TicketsImagesModel.tsx b/src/pages/tours/ui/TicketsImagesModel.tsx index 3a2b251..d585387 100644 --- a/src/pages/tours/ui/TicketsImagesModel.tsx +++ b/src/pages/tours/ui/TicketsImagesModel.tsx @@ -33,13 +33,13 @@ export default function TicketsImagesModel({ useEffect(() => { if (imageUrl) { - if (Array.isArray(imageUrl)) { - setPreviews(imageUrl); - } else { - setPreviews([imageUrl]); - } + const urls = Array.isArray(imageUrl) ? imageUrl : [imageUrl]; + setPreviews(urls); + + // 🔥 form bilan sinxronlash + form.setValue(name, urls); } - }, [imageUrl]); + }, [imageUrl, form, name]); return ( + URL.createObjectURL(file), + ), ]; - form.setValue(name, allFiles); - const urls = allFiles.map((file: File) => - URL.createObjectURL(file), - ); - setPreviews(urls); + setPreviews(newPreviews); } else { - // ✅ Faqat bitta rasm (banner) + // ✅ bitta rasm holati const singleFile = newFiles[0] || null; form.setValue(name, singleFile); setPreviews(