From a67aa0b54eb0ec8b31800d2acb2864a8ae1037dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o?= Date: Thu, 23 Jan 2025 01:57:12 +0100 Subject: [PATCH] add image b64 --- src/views/Home.vue | 50 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/src/views/Home.vue b/src/views/Home.vue index baf186d..80b677d 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -13,6 +13,7 @@ import DataTable from 'primevue/datatable'; import Column from 'primevue/column'; import Tag from 'primevue/tag'; import Badge from 'primevue/badge'; +import FileUpload from 'primevue/fileupload'; import { ref, onMounted} from 'vue'; const toast = useToast(); @@ -24,6 +25,7 @@ const productDescription = ref(''); const productQuantity = ref('0'); const productAlert = ref(false); const productStockLimit = ref(null); +const base64Image = ref(null); const registerErrors = ref({name:'',description:'',quantity:'',alert_enabled:'',stock_limit:'',}); const editingRows = ref([]); @@ -40,7 +42,8 @@ async function create_product() { quantity: productQuantity.value, alert_enabled: productAlert.value, stock_limit: productStockLimit.value, - }) + image: base64Image.value, + }); products.value = await getProducts(); toast.add({ severity: 'success', life: 2500, summary:`${productName.value} crée`}); } catch (error){ @@ -118,6 +121,21 @@ const stockSeverity = (data) => { return 'warning'; } }; + +const handleFileUpload = (event) => { + const file = event.files[0]; + if (!file) return; + const reader = new FileReader(); + reader.onload = () => { + base64Image.value = reader.result; + toast.add({ severity: 'success', life: 2500, summary: 'Image ajouté avec succès.' }); + }; + reader.onerror = () => { + toast.add({ severity: 'error', life: 2500, summary: 'Erreur', detail: 'Impossible de lire le fichier.' }); + }; + reader.readAsDataURL(file); +}; + onMounted(async () => { try { products.value = await getProducts(); @@ -216,6 +234,24 @@ try { fluid /> + +
+ + Image : + + +
+
- -