add image b64
This commit is contained in:
parent
4907ac7a55
commit
a67aa0b54e
@ -13,6 +13,7 @@ import DataTable from 'primevue/datatable';
|
|||||||
import Column from 'primevue/column';
|
import Column from 'primevue/column';
|
||||||
import Tag from 'primevue/tag';
|
import Tag from 'primevue/tag';
|
||||||
import Badge from 'primevue/badge';
|
import Badge from 'primevue/badge';
|
||||||
|
import FileUpload from 'primevue/fileupload';
|
||||||
|
|
||||||
import { ref, onMounted} from 'vue';
|
import { ref, onMounted} from 'vue';
|
||||||
const toast = useToast();
|
const toast = useToast();
|
||||||
@ -24,6 +25,7 @@ const productDescription = ref('');
|
|||||||
const productQuantity = ref('0');
|
const productQuantity = ref('0');
|
||||||
const productAlert = ref(false);
|
const productAlert = ref(false);
|
||||||
const productStockLimit = ref(null);
|
const productStockLimit = ref(null);
|
||||||
|
const base64Image = ref(null);
|
||||||
const registerErrors = ref({name:'',description:'',quantity:'',alert_enabled:'',stock_limit:'',});
|
const registerErrors = ref({name:'',description:'',quantity:'',alert_enabled:'',stock_limit:'',});
|
||||||
const editingRows = ref([]);
|
const editingRows = ref([]);
|
||||||
|
|
||||||
@ -40,7 +42,8 @@ async function create_product() {
|
|||||||
quantity: productQuantity.value,
|
quantity: productQuantity.value,
|
||||||
alert_enabled: productAlert.value,
|
alert_enabled: productAlert.value,
|
||||||
stock_limit: productStockLimit.value,
|
stock_limit: productStockLimit.value,
|
||||||
})
|
image: base64Image.value,
|
||||||
|
});
|
||||||
products.value = await getProducts();
|
products.value = await getProducts();
|
||||||
toast.add({ severity: 'success', life: 2500, summary:`${productName.value} crée`});
|
toast.add({ severity: 'success', life: 2500, summary:`${productName.value} crée`});
|
||||||
} catch (error){
|
} catch (error){
|
||||||
@ -118,6 +121,21 @@ const stockSeverity = (data) => {
|
|||||||
return 'warning';
|
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 () => {
|
onMounted(async () => {
|
||||||
try {
|
try {
|
||||||
products.value = await getProducts();
|
products.value = await getProducts();
|
||||||
@ -216,6 +234,24 @@ try {
|
|||||||
fluid
|
fluid
|
||||||
/>
|
/>
|
||||||
</InputGroup>
|
</InputGroup>
|
||||||
|
</div>
|
||||||
|
<div class="form">
|
||||||
|
<InputGroup >
|
||||||
|
<InputGroupAddon>Image :</InputGroupAddon>
|
||||||
|
<FileUpload
|
||||||
|
name="productImage"
|
||||||
|
accept="image/*"
|
||||||
|
mode="basic"
|
||||||
|
customUpload
|
||||||
|
:auto="true"
|
||||||
|
:multiple="false"
|
||||||
|
:maxFileSize="1000000"
|
||||||
|
:chooseLabel="'Choisir une image'"
|
||||||
|
@uploader="handleFileUpload"
|
||||||
|
/>
|
||||||
|
</InputGroup>
|
||||||
|
</div>
|
||||||
|
<div class="alert">
|
||||||
<p-message
|
<p-message
|
||||||
v-if="registerErrors.alert_enabled"
|
v-if="registerErrors.alert_enabled"
|
||||||
severity="error"
|
severity="error"
|
||||||
@ -229,7 +265,6 @@ try {
|
|||||||
{{ registerErrors.stock_limit }}
|
{{ registerErrors.stock_limit }}
|
||||||
</p-message>
|
</p-message>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
label="Créer"
|
label="Créer"
|
||||||
type="submit"
|
type="submit"
|
||||||
@ -257,6 +292,15 @@ try {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<Column field="image">
|
||||||
|
<template #body="slotProps">
|
||||||
|
<img
|
||||||
|
:src="slotProps.data.image"
|
||||||
|
style="width: 6rem"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</Column>
|
||||||
|
|
||||||
<Column field="is_stock_low" header="Stock" sortable>
|
<Column field="is_stock_low" header="Stock" sortable>
|
||||||
<template #body="slotProps">
|
<template #body="slotProps">
|
||||||
<Tag
|
<Tag
|
||||||
|
Loading…
x
Reference in New Issue
Block a user