diff --git a/resources/js/components/admin/manage/purchases/PurchasePosForm.vue b/resources/js/components/admin/manage/purchases/PurchasePosForm.vue index 67cb369..70b8da9 100644 --- a/resources/js/components/admin/manage/purchases/PurchasePosForm.vue +++ b/resources/js/components/admin/manage/purchases/PurchasePosForm.vue @@ -5,7 +5,6 @@ import { computed, ref, watch } from 'vue'; import { toast } from 'vue-sonner'; import PosCatalogCard from '@/components/admin/manage/PosCatalogCard.vue'; import PosCatalogVariantThumb from '@/components/admin/manage/PosCatalogVariantThumb.vue'; -import MediaImageUpload from '@/components/media/MediaImageUpload.vue'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; @@ -22,6 +21,7 @@ import { FieldLabel, FieldSet, } from '@/components/ui/field'; +import { ImageUploadField } from '@/components/ui/image-upload-field'; import { Input } from '@/components/ui/input'; import { RupiahInput } from '@/components/ui/rupiah-input'; import { @@ -38,7 +38,6 @@ import { getFirstCoverImage } from '@/lib/catalog-cover'; import { formErrors } from '@/lib/form'; import { formatRupiah, parseRupiah } from '@/lib/rupiah'; import type { MediaItem } from '@/types/media'; -import { appendRootPhotosToFormData, createMediaUploadState } from '@/types/media'; import type { PurchaseCartItem, PurchaseCatalogItem, SelectOption } from '@/types/purchase'; const props = defineProps<{ suppliers: SelectOption[]; @@ -57,12 +56,15 @@ const props = defineProps<{ const search = ref(''); const cart = ref([]); +const existingPhotoId = ref(null); + +const currentPhotoUrl = computed(() => props.initialData?.photos?.url ?? null); const form = useForm({ supplier_id: '', discount: '', notes: '', - media: createMediaUploadState(), + photo: null as File | null, }); function populateForm() { @@ -73,7 +75,8 @@ function populateForm() { form.supplier_id = props.initialData.supplier_id; form.discount = props.initialData.discount; form.notes = props.initialData.notes; - form.media = createMediaUploadState(props.initialData.photos ? [props.initialData.photos] : []); + form.photo = null; + existingPhotoId.value = props.initialData.photos?.id ?? null; cart.value = props.initialData.items.map((item) => ({ ...item })); } @@ -176,7 +179,13 @@ function buildFormData(): FormData { formData.append(`items[${index}][quantity]`, item.quantity); }); - appendRootPhotosToFormData(formData, form.media); + if (form.photo) { + formData.append('photos[]', form.photo); + + if (existingPhotoId.value) { + formData.append('remove_media_ids[]', String(existingPhotoId.value)); + } + } return formData; } @@ -378,8 +387,8 @@ function submit() { - +