Agregado csv input para canasta

This commit is contained in:
Alejandro Tasistro 2024-12-21 14:17:47 -03:00
parent bea8de2c8c
commit 5a4b933f11
2 changed files with 75 additions and 2 deletions

View File

@ -11,7 +11,9 @@
<div class="block pb-6" id="canasta-compras-seccion" <div class="block pb-6" id="canasta-compras-seccion"
:class="seccionActiva === 'canasta-compras-seccion' ? 'is-active' : 'is-hidden'"> :class="seccionActiva === 'canasta-compras-seccion' ? 'is-active' : 'is-hidden'">
<div class="block" id="canasta-compras-seccion"> <div class="block" id="canasta-compras-seccion">
<p> Todavía no hay nada por acá </p> <div class="buttons is-right">
<compras-canasta-input></compras-canasta-input>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -20,11 +22,13 @@
<script> <script>
import TabsSecciones from "../comunes/TabsSecciones.vue"; import TabsSecciones from "../comunes/TabsSecciones.vue";
import DropdownDescargar from "./DropdownDescargar.vue"; import DropdownDescargar from "./DropdownDescargar.vue";
import CanastaInput from "./CanastaInput.vue";
export default { export default {
components: { components: {
TabsSecciones, TabsSecciones,
DropdownDescargar, DropdownDescargar,
CanastaInput,
}, },
data() { data() {
return { return {
@ -32,7 +36,7 @@ export default {
{ id: "canasta-compras", nombre: "Canasta" }], { id: "canasta-compras", nombre: "Canasta" }],
tabActiva: "pedidos-compras", tabActiva: "pedidos-compras",
seccionActiva: "pedidos-compras-seccion", seccionActiva: "pedidos-compras-seccion",
hayAprobados: true, archivo: undefined,
} }
}, },
methods: { methods: {

View File

@ -0,0 +1,69 @@
<template>
<div class="block">
<div class="file has-name is-right">
<label class="file-label">
<input
class="file-input"
type="file"
name="canasta"
@change="onFileChange"
/>
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-cloud-upload-alt"></i>
</span>
<span class="file-label">Subir canasta</span>
</span>
<span class="file-name" v-if="archivo">
{{ archivo.nombre }}
</span>
</label>
</div>
</div>
</template>
<script>
import axios from "axios";
export default {
name: "CanastaInput",
data() {
return {
archivo: null,
cargando: false,
};
},
methods: {
async onFileChange(event) {
const archivo = event.target.files[0];
if (archivo && archivo.type === "text/csv") {
this.archivo = { file: archivo, nombre: archivo.name };
const formData = new FormData();
formData.append("file", this.archivo.file);
try {
this.cargando = true;
const response = await axios.post("/cargar-canasta", formData, {
headers: {
"Content-Type": "multipart/form-data",
},
});
this.$root.$toast(response.data.message || "Canasta cargada!");
} catch (error) {
this.$root.$toast(error.response?.data?.message || "Hubo errores.");
} finally {
this.cargando = false;
this.archivo = null;
}
} else {
this.$root.$toast("La canasta debe ser .CSV")
this.archivo = null;
}
},
},
};
</script>
<style scoped>
</style>