This commit is contained in:
Samandar Turgunboyev
2025-11-05 15:43:19 +05:00
parent 889b82c8c1
commit 65a6c963f2
2 changed files with 48 additions and 38 deletions

View File

@@ -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) => {
// Har bir itinerary uchun asosiy maydonlar
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
// 🖼 Rasmlar (faqat yangi yuklangan File-larni yuborish)
if (Array.isArray(itinerary.ticket_itinerary_image)) {
@@ -381,9 +385,10 @@ const StepOne = ({
}
});
}
// 📍 Destinations (yonalishlar)
itinerary.ticket_itinerary_image.forEach((img) => {
if (Array.isArray(itinerary.ticket_itinerary_destinations)) {
if (img.image instanceof File) {
// 📍 Destinations (yonalishlar)
itinerary.ticket_itinerary_destinations.forEach((dest, k) => {
formData.append(
`ticket_itinerary[${i}]ticket_itinerary_destinations[${k}]name`,
@@ -395,6 +400,8 @@ const StepOne = ({
);
});
}
}
});
});
value.hotel_meals.forEach((e, i) => {

View File

@@ -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 (
<FormField
@@ -62,20 +62,23 @@ export default function TicketsImagesModel({
const newFiles = e.target.files
? Array.from(e.target.files)
: [];
const currentValue = form.getValues(name) || [];
const currentUrls = previews || [];
if (multiple) {
// ✅ Bir nechta rasm
const allFiles = [
...(form.getValues(name) || []),
...newFiles,
];
form.setValue(name, allFiles);
const urls = allFiles.map((file: File) =>
// ✅ eski URLlarni va yangi fayllarni birlashtirish
const combined = [...currentValue, ...newFiles];
form.setValue(name, combined);
const newPreviews = [
...currentUrls,
...newFiles.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(