panel admin

This commit is contained in:
2021-01-07 23:58:49 -06:00
parent 4e10a9015f
commit f92f0fcc32
9 changed files with 1459 additions and 351 deletions
+14 -14
View File
@@ -1,14 +1,14 @@
module.exports = {
root: true,
env: {
node: true
},
extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
parserOptions: {
parser: "babel-eslint"
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off"
}
};
module.exports = {
root: true,
env: {
node: true
},
extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
parserOptions: {
parser: "babel-eslint"
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off"
}
};
+996 -199
View File
File diff suppressed because it is too large Load Diff
+6 -4
View File
@@ -8,13 +8,13 @@
"lint": "vue-cli-service lint"
},
"dependencies": {
"axios": "^0.19.2",
"axios": "^0.21.1",
"bootstrap": "^4.5.2",
"bootstrap-vue": "^2.21.2",
"core-js": "^3.6.5",
"jquery": "^3.5.1",
"popper.js": "^1.16.1",
"sweetalert2": "^10.5.1",
"sweetalert2": "^10.13.0",
"vue": "^2.6.11",
"vue-router": "^3.3.4",
"vuex": "^3.6.0"
@@ -25,9 +25,11 @@
"@vue/cli-service": "~4.4.0",
"@vue/eslint-config-prettier": "^6.0.0",
"babel-eslint": "^10.1.0",
"eslint": "^6.7.2",
"eslint": "^7.17.0",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-prettier": "^3.1.3",
"eslint-plugin-vue": "^6.2.2",
"eslint-plugin-vue": "^7.4.1",
"prettier": "1.19.1",
"vue-template-compiler": "^2.6.11"
}
+99 -30
View File
@@ -8,23 +8,25 @@
<b-row class="mb-2">
<b-col>
<b-form-input
id="inline-form-input-name"
id="isbn"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="ISBN"
v-model="isbn"
></b-form-input>
</b-col>
<b-col>
<b-form-input
id="inline-form-input-name"
id="titulo"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Titulo"
v-model="titulo"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-dropdown v-bind:text="categoria" block split split-variant="outline-primary" variant="primary" class="m-2">
<b-dropdown v-model="categoria" v-bind:text="categoria" block split split-variant="outline-primary" variant="primary" class="m-2">
<b-dropdown-item @click="categoria='Ciencias Socioeconómicas'" >Ciencias Socioeconómicas</b-dropdown-item>
<b-dropdown-item @click="categoria='Diseño y Edificación'" >Diseño y Edificación</b-dropdown-item>
<b-dropdown-item @click="categoria='Enseñanza de Idiomas'" >Enseñanza de Idiomas</b-dropdown-item>
@@ -36,48 +38,56 @@
</b-col>
<b-col>
<b-form-input
id="inline-form-input-name"
id="autor"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Autor"
v-model="autor"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Numero de paginas"
id="paginas"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Numero de paginas"
v-model="paginas"
type="number"
></b-form-input>
</b-col>
<b-col>
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Precio"
id="precio"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Precio"
v-model="precio"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Versión"
id="version"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Versión"
v-model="version"
></b-form-input>
</b-col>
<b-col>
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Año de publicación"
id="year"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Año de publicación"
v-model="year"
type="number"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-file
v-model="file1"
id="pdf"
v-model="pdf"
placeholder="Seleccione el PDF o arrastre..."
accept=".pdf"
></b-form-file>
@@ -85,7 +95,8 @@
<b-col>
<b-form-file
v-model="file1"
id="imagen"
v-model="imagen"
placeholder="Seleccione la imagen o arrastre..."
accept=".png"
></b-form-file>
@@ -94,8 +105,19 @@
<b-row class="mb-2">
<b-col>
<b-form-textarea
id="textarea"
v-model="text"
id="descripcion"
v-model="impresion"
placeholder="Ediciones (Primera edición: 2016)"
rows="3"
max-rows="6"
></b-form-textarea>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-textarea
id="descripcion"
v-model="descripcion"
placeholder="Descripción"
rows="3"
max-rows="6"
@@ -106,13 +128,16 @@
<b-row class="mb-2">
<b-col class="mb-5">
<div style="margin-top: 2rem;">
<b-button block variant="success">Agregar</b-button>
<b-button block variant="success" @click="agregarLibro()">Agregar</b-button>
</div>
</b-col>
</b-row>
</b-container>
</template>
<script>
import axios from "axios";
import config from "../config/config.js";
import Swal from 'sweetalert2'
export default {
props: {
nombreLibro: String,
@@ -120,7 +145,7 @@ export default {
},
data() {
return {
isbn: "example asa12",
isbn: "",
titulo: "",
categoria:"Categoria",
autor:"",
@@ -129,14 +154,58 @@ export default {
precio:"",
version:"",
descripcion:"",
year:""
year:"",
imagen: null,
pdf: null
};
},
methods:{
faltaCampo(campo){
Swal.fire(
`Te falta por llenar el campo de ${campo}`,
'',
'warning'
)
},
async agregarLibro(){
try{
var formData = new FormData();
var imagen = document.querySelector('#imagen');
var pdf = document.querySelector('#pdf');
if(this.isbn !== "") formData.append("isbn", this.isbn); else return this.faltaCampo("ISBN");
if(this.titulo !== "") formData.append("titulo", this.titulo); else return this.faltaCampo("Titulo");
if(this.categoria !== "Categoria") formData.append("categoria", this.categoria); else return this.faltaCampo("Categoria");
if(this.autor !== "") formData.append("autor", this.autor); else return this.faltaCampo("Autor");
if(this.paginas !== "") formData.append("paginas", this.paginas); else return this.faltaCampo("Paginas");
if(this.impresion !== "") formData.append("edicion", this.impresion); else return this.faltaCampo("Edición");
if(this.precio !== "") formData.append("precio", this.precio); else return this.faltaCampo("Precio");
if(this.version !== "") formData.append("version", this.version); else return this.faltaCampo("Versión");
if(this.descripcion !== "") formData.append("descripcion", this.descripcion); else return this.faltaCampo("Descripción");
if(this.year !== "") formData.append("year", this.year); else return this.faltaCampo("Año de publicación");
if(imagen.files.length > 0) formData.append("imagen", imagen.files[0]); else return this.faltaCampo("Imagen");
if(pdf.files.length > 0) formData.append("pdf", pdf.files[0]); else return this.faltaCampo("Pdf");
await axios.post( `${config.api}/agregarLibro`, formData ,{ headers: { 'Content-Type': 'multipart/form-data' } });
await Swal.fire(
'Libro agregada con exito',
'',
'success'
);
location.reload();
}
catch(error){
console.log(error);
Swal.fire({
icon: 'error',
title: 'El libro no pudo ser agregada',
text: `Algo salio mal, ${error}`,
});
}
}
}
}
</script>
<style scoped>
b{
text-align: left;
}
</style>
</script>
+73 -9
View File
@@ -5,24 +5,25 @@
<b-row>
<b-col class="p-0" cols="8">
<b-form-file
v-model="file1"
v-model="nuevaImagenBanner"
id="nuevaImagenBanner"
block
placeholder="Seleccione la imagen o arrastre aqui..."
accept=".png"
></b-form-file>
</b-col>
<b-col>
<b-button block variant="success">Agregar</b-button>
<b-button block variant="success" @click="agregarImagen()">Agregar</b-button>
</b-col>
</b-row>
</div>
<h1 class="mb-4" style="text-align:left;">Eliminar Imagen</h1>
<div class="divMaster row ">
<div class=" d-flex flex-wrap " style="justify-content: space-between;">
<div v-bind:key="libro.id" v-for="(libro, idx) in Libros" :class="{ active: idx == 0 }">
<div v-bind:key="libro.id" v-for="libro in imagenesBanner" >
<b-card class="mb-3" style="width: 28rem;">
<b-card-img :src="libro.img" alt="Image" ></b-card-img>
<b-card-footer><b-button variant="danger">Eliminar</b-button></b-card-footer>
<b-card-footer><b-button variant="danger" @click="eliminarImagen(libro.nombreImagen)">Eliminar</b-button></b-card-footer>
</b-card>
</div>
</div>
@@ -33,23 +34,86 @@
<script>
import axios from "axios";
import config from "../config/config.js";
import Swal from 'sweetalert2'
export default {
name: "editarBanner",
data() {
return {
Libros: [],
imagenesBanner: [],
nuevaImagenBanner: "",
};
},
methods:{
async eliminarImagen(nombreImagenBanner){
const swalWithBootstrapButtons = Swal.mixin({
customClass: {
confirmButton: 'btn btn-outline-success',
cancelButton: 'btn btn-outline-danger'
},
buttonsStyling: false
})
swalWithBootstrapButtons.fire({
title: '¿Estás seguro de que quieres eliminar la imagen?',
icon: 'warning',
showCancelButton: true,
confirmButtonText: 'Si, eliminar',
cancelButtonText: 'No, cancelar',
reverseButtons: true
}).then(async (result) => {
if (result.isConfirmed) {
try{
await axios.post( `${config.api}/eliminarImagenCarrusel`,{nombre: nombreImagenBanner} );
await swalWithBootstrapButtons.fire(
'Eliminado!',
'Se ha eliminado la imagen con exito.',
'success'
);
location.reload();
}
catch(error){
console.log(error);
Swal.fire({
icon: 'error',
title: 'La imagen no pudo ser eliminada',
text: 'algo salio mal, mensaje en consola',
});
}
}
})
},
async agregarImagen(){
try{
let formData = new FormData();
let imagenBanner = document.querySelector('#nuevaImagenBanner');
formData.append("imagen", imagenBanner.files[0]);
await axios.post( `${config.api}/agregarImagenCarrusel`, formData ,{ headers: {'Content-Type': 'multipart/form-data'}} );
await Swal.fire(
'Imagen agregada con exito',
'',
'success'
);
location.reload();
}
catch(error){
console.log(error);
Swal.fire({
icon: 'error',
title: 'La imagen no pudo ser agregada',
text: 'Algo salio mal, mensaje en consola',
});
}
}
},
async created() {
try {
let path = `${config.api}/imagenCarrusel?nombre=`;
let nombres = await axios.get(`${config.api}/nombreCarrusel`);
nombres = nombres.data.data;
for (let i = 0; i < nombres.length; i++) {
//console.log(path);
let config = {
// example url
url: `${path}${nombres[i]}`,
method: "GET",
responseType: "blob"
@@ -58,7 +122,7 @@ export default {
let reader = new FileReader();
reader.readAsDataURL(response.data);
reader.onload = () => {
this.Libros.push({ id: i, img: reader.result });
this.imagenesBanner.push({ id: i, img: reader.result, nombreImagen: nombres[i]});
};
});
}
+107 -24
View File
@@ -5,43 +5,91 @@
<b-input-group-prepend is-text>
<b-icon icon="search"></b-icon>
</b-input-group-prepend>
<b-form-input type="search" placeholder="Buscar" ></b-form-input>
<b-form-input type="search" placeholder="Buscar" v-model="searchLibro" ></b-form-input>
</b-input-group>
</div>
<div class="divMaster row ">
<div class=" d-flex flex-wrap " style="justify-content: space-between;">
<div v-bind:key="libro.id" v-for="(libro, idx) in Libros" :class="{ active: idx == 0 }">
<b-card class="mb-3" style="width: 14rem; height: 22rem;">
<b-card-img :src="libro.img" alt="Image" style="max-width: 20rem; height: 15rem;" no-body ></b-card-img>
<div v-bind:key="libro.id" v-for="libro in listaLibroFiltrada" >
<b-card class="mb-3" style="width: 14rem; height: 25rem;">
<b-card-img :src="libro.img" alt="Image" style="max-width: 20rem; height: 15rem;" ></b-card-img>
<p class="mt-1" style="text-align: left; font-size: 15px;">{{nombreLibro(libro.titulo)}}</p>
<template #footer>
<b-button variant="outline-warning" class="float-left" v-b-modal.modalEditarLibro>Editar</b-button>
<b-button variant="outline-danger" class="float-right" >Eliminar</b-button>
<b-button variant="outline-warning" class="float-left" @click="libroSelect=libro" v-b-modal.modalEditarLibro>Editar</b-button>
<b-button variant="outline-danger" class="float-right" @click="eliminarLibro(libro.idLibro)" >Eliminar</b-button>
</template>
</b-card>
</div>
</div>
</div>
<ModalEditar nombreLibro="uno" value="valueCampo" />
<ModalEditar v-bind:libro="libroSelect" value="valueCampo" />
</b-container>
</template>
<script>
import axios from "axios";
import config from "../config/config.js";
import ModalEditar from './modalEditar.vue'
import ModalEditar from './modalEditar.vue';
import Swal from 'sweetalert2';
export default {
components: {
ModalEditar,
},
data() {
return {
Libros: []
Libros: [],
searchLibro: "",
libroSelect: null,
};
},
methods: {
async eliminarLibro(idLibro){
const swalWithBootstrapButtons = Swal.mixin({
customClass: {
confirmButton: 'btn btn-outline-success',
cancelButton: 'btn btn-outline-danger'
},
buttonsStyling: false
})
swalWithBootstrapButtons.fire({
title: '¿Estás seguro de que quieres eliminar el libro?',
icon: 'warning',
showCancelButton: true,
confirmButtonText: 'Si, eliminar',
cancelButtonText: 'No, cancelar',
reverseButtons: true
}).then(async (result) => {
if (result.isConfirmed) {
try{
await axios.post( `${config.api}/eliminarLibro`,{idLibro: idLibro} );
await swalWithBootstrapButtons.fire(
'Eliminado!',
'Se ha eliminado el libro con exito.',
'success'
);
location.reload();
}
catch(error){
console.log(error);
Swal.fire({
icon: 'error',
title: 'El libro no pudo ser eliminado',
text: 'algo salio mal, mensaje en consola',
});
}
}
})
},
nombreLibro(nombreLibro){
let maxLengthtitulo = 40;
if(nombreLibro.length < maxLengthtitulo)
return nombreLibro;
return `${nombreLibro.substring(0, maxLengthtitulo)}...`;
},
async descripcion(idLibro) {
//console.log(` Este es el id del libro ${idLibro}`);
localStorage.clear();
window.localStorage.setItem("idLibro", idLibro);
this.$router.push("/desc");
@@ -49,30 +97,51 @@ export default {
},
async created() {
try {
let novedades = await axios.get(`${config.api}/librosNovedades`);
let todosLibros = await axios.get(`${config.api}/getTodosLibros`);
let path = `${config.api}/libroImagen?idLibro=`;
novedades = novedades.data.data;
//console.log(`${novedades}`);
for (let i = 0; i < novedades.length; i++) {
//alert(novedades[i].titulo);
//this.Libros[i].title = novedades[i].titulo;
todosLibros = todosLibros.data.data;
for (let i = 0; i < todosLibros.length; i++) {
let config = {
// example url
url: `${path}${novedades[i].idLibro}`,
url: `${path}${todosLibros[i].idLibro}`,
method: "GET",
responseType: "blob"
};
try {
await axios(config).then(response => {
axios(config).then(response => {
let reader = new FileReader();
reader.readAsDataURL(response.data);
reader.onload = () => {
this.Libros.push({
id: novedades[i].idLibro,
title: novedades[i].titulo,
img: reader.result
id: todosLibros[i].idLibro,
titulo: todosLibros[i].titulo,
img: reader.result,
idLibro: todosLibros[i].idLibro,
isbn: todosLibros[i].isbn,
categoria: todosLibros[i].categoria,
autor: todosLibros[i].autor,
paginas: todosLibros[i].paginas,
impresion: todosLibros[i].impresion,
precio: todosLibros[i].precio,
version: todosLibros[i].version,
descripcion: todosLibros[i].descripcion,
year: todosLibros[i].year,
});
};
}).catch(() =>{
this.Libros.push({
id: todosLibros[i].idLibro,
titulo: todosLibros[i].titulo,
idLibro: todosLibros[i].idLibro,
isbn: todosLibros[i].isbn,
categoria: todosLibros[i].categoria,
autor: todosLibros[i].autor,
paginas: todosLibros[i].paginas,
impresion: todosLibros[i].impresion,
precio: todosLibros[i].precio,
version: todosLibros[i].version,
descripcion: todosLibros[i].descripcion,
year: todosLibros[i].year,
});
});
} catch (error) {
console.log(`No existe esa imagen`);
@@ -81,7 +150,21 @@ export default {
} catch (error) {
console.log(`Ocurrio un error ${error}`);
}
}
},
computed:{
listaLibroFiltrada: function()
{
return this.Libros.filter( (item)=>{
let searchTitulo = (item.titulo).toLowerCase().includes(this.searchLibro.toLowerCase()) ;
let searchAutor = (item.autor).toLowerCase().includes(this.searchLibro.toLowerCase()) ;
let searchCategoria = (item.categoria).toLowerCase().includes(this.searchLibro.toLowerCase()) ;
if(searchTitulo || searchAutor || searchCategoria)
return true;
return false;
}
);
}
}
};
</script>
+161 -69
View File
@@ -3,172 +3,204 @@
<b-container fluid>
<b-row class="mb-2">
<b-col >
<h1 style="text-align:center;">Editar {{nombreLibro}}</h1>
<h2 style="text-align:left;"> {{libro.titulo}}</h2>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="checked" name="check-button" switch><b>ISBN:</b></b-form-checkbox>
<b-form-checkbox v-model="isActiveIsbn" name="check-button" switch><b>ISBN:</b></b-form-checkbox>
</b-col>
<b-col>
<label class="mr-sm-2">{{isbn}}</label>
<label class="mr-sm-2">{{libro.isbn}}</label>
</b-col>
<b-col cols="6">
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
v-model="isbn"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="checked" name="check-button" switch><b>Titulo:</b></b-form-checkbox>
<b-form-checkbox v-model="isActiveTitulo" name="check-button" switch><b>Titulo:</b></b-form-checkbox>
</b-col>
<b-col>
<label class="mr-sm-2">{{titulo}}</label>
<label class="mr-sm-2">{{libro.titulo}}</label>
</b-col>
<b-col cols="6">
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
v-model="titulo"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="checked" name="check-button" switch><b>Categoria:</b></b-form-checkbox>
<b-form-checkbox v-model="isActiveCategoria" name="check-button" switch><b>Categoria:</b></b-form-checkbox>
</b-col>
<b-col>
<label class="mr-sm-2">{{categoria}}</label>
<label class="mr-sm-2">{{libro.categoria}}</label>
</b-col>
<b-col cols="6">
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
></b-form-input>
<b-dropdown v-model="categoria" v-bind:text="categoria" block split split-variant="outline-primary" variant="primary" class="m-2">
<b-dropdown-item @click="categoria='Ciencias Socioeconómicas'" >Ciencias Socioeconómicas</b-dropdown-item>
<b-dropdown-item @click="categoria='Diseño y Edificación'" >Diseño y Edificación</b-dropdown-item>
<b-dropdown-item @click="categoria='Enseñanza de Idiomas'" >Enseñanza de Idiomas</b-dropdown-item>
<b-dropdown-item @click="categoria='Estudios de Posgrado'" >Estudios de Posgrado</b-dropdown-item>
<b-dropdown-item @click="categoria='Humanidades'" >Humanidades</b-dropdown-item>
<b-dropdown-item @click="categoria='Matemáticas e Ingenieria'" >Matemáticas e Ingenieria</b-dropdown-item>
<b-dropdown-item @click="categoria='Universidad Abierta y Educación a Distancia'" >Universidad Abierta y Educación a Distancia</b-dropdown-item>
</b-dropdown>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="checked" name="check-button" switch><b>Autor:</b></b-form-checkbox>
<b-form-checkbox v-model="isActiveAutor" name="check-button" switch><b>Autor:</b></b-form-checkbox>
</b-col>
<b-col>
<label class="mr-sm-2">{{autor}}</label>
<label class="mr-sm-2">{{libro.autor}}</label>
</b-col>
<b-col cols="6">
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
v-model="autor"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="checked" name="check-button" switch><b>Numero de paginas:</b></b-form-checkbox>
<b-form-checkbox v-model="isActivePaginas" name="check-button" switch><b>Numero de paginas:</b></b-form-checkbox>
</b-col>
<b-col>
<label class="mr-sm-2">{{paginas}}</label>
<label class="mr-sm-2">{{libro.paginas}}</label>
</b-col>
<b-col cols="6">
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
v-model="paginas"
type="number"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="checked" name="check-button" switch><b>Precio:</b></b-form-checkbox>
<b-form-checkbox v-model="isActivePrecio" name="check-button" switch><b>Precio:</b></b-form-checkbox>
</b-col>
<b-col>
<label class="mr-sm-2">{{precio}}</label>
<label class="mr-sm-2">{{libro.precio}}</label>
</b-col>
<b-col cols="6">
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
v-model="precio"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="checked" name="check-button" switch><b>Versión:</b></b-form-checkbox>
<b-form-checkbox v-model="isActiveEdicion" name="check-button" switch><b>Edición:</b></b-form-checkbox>
</b-col>
<b-col>
<label class="mr-sm-2">{{version}}</label>
<label class="mr-sm-2">{{libro.impresion}}</label>
</b-col>
<b-col cols="6">
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
v-model="edicion"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="checked" name="check-button" switch><b>Año de publicación:</b></b-form-checkbox>
<b-form-checkbox v-model="isActiveVersion" name="check-button" switch><b>Versión:</b></b-form-checkbox>
</b-col>
<b-col>
<label class="mr-sm-2">{{year}}</label>
<label class="mr-sm-2">{{libro.version}}</label>
</b-col>
<b-col cols="6">
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
v-model="version"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="checked" name="check-button" switch><b>Descrpción:</b></b-form-checkbox>
<b-form-checkbox v-model="isActiveYear" name="check-button" switch><b>Año de publicación:</b></b-form-checkbox>
</b-col>
<b-col>
<label class="mr-sm-2">{{descripcion}}</label>
<label class="mr-sm-2">{{libro.year}}</label>
</b-col>
<b-col cols="6">
<b-form-input
id="inline-form-input-name"
class="mb-2 mr-sm-2 mb-sm-0"
placeholder="Editar"
v-model="year"
type="number"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="isActiveDescripcion" name="check-button" switch><b>Descrpción:</b></b-form-checkbox>
</b-col>
<b-col>
<label class="mr-sm-2" style="font-size: 12px">{{libro.descripcion}}</label>
</b-col>
<b-col cols="6">
<b-form-textarea
id="textarea"
v-model="text"
placeholder="Enter something..."
rows="3"
max-rows="6"
id="textarea"
v-model="descripcion"
placeholder="Editar"
rows="3"
max-rows="6"
></b-form-textarea>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="checked" name="check-button" switch><b>Imagen</b></b-form-checkbox>
<b-form-checkbox v-model="isActiveImagen" name="check-button" switch><b>Imagen</b></b-form-checkbox>
</b-col>
<b-col>
</b-col>
<b-col cols="6">
<b-form-file
v-model="file1"
placeholder="Seleccione la imagen o arrastre..."
accept=".png"
id="imagen"
></b-form-file>
</b-col>
</b-row>
<b-row class="mb-2">
<b-col>
<b-form-checkbox v-model="checked" name="check-button" switch><b>PDF Visualización</b></b-form-checkbox>
<b-form-checkbox v-model="isActivePdf" name="check-button" switch><b>PDF Visualización</b></b-form-checkbox>
</b-col>
<b-col>
</b-col>
<b-col cols="6">
<b-form-file
v-model="file1"
placeholder="Seleccione el PDF o arrastre..."
id="pdf"
accept=".pdf"
></b-form-file>
</b-col>
@@ -177,7 +209,7 @@
<b-row class="mb-2">
<b-col>
<div style="margin-top: 2rem;">
<b-button class="btn btn-outline-success float-right" @click="enviarFicha()" style="width: 30%; ">Enviar</b-button>
<b-button variant="outline-success" class="float-right" @click="actualizarLibro(libro.idLibro)" style="width: 30%; ">Actualizar</b-button>
<b-button @click="$bvModal.hide('modalEditarLibro')" variant="outline-danger" class="btn float-left" style="width: 30%; ">Cancelar</b-button>
</div>
</b-col>
@@ -185,26 +217,86 @@
</b-container>
</b-modal>
</template>
<script>
import axios from "axios";
import config from "../config/config.js";
import Swal from 'sweetalert2'
export default {
props: {
nombreLibro: String,
value: String
},
libro: Object,
value: String
},
data() {
return {
isbn: "example asa12",
titulo: "",
categoria:"",
autor:"",
paginas:"",
impresion:"",
precio:"",
version:"",
descripcion:"",
year:""
isbn: "",
titulo: "",
categoria:"Categoria",
autor:"",
paginas:"",
impresion:"",
precio:"",
version:"",
descripcion:"",
year:"",
edicion:"",
isActiveIsbn: false,
isActiveTitulo: false,
isActiveCategoria: false,
isActiveAutor: false,
isActivePaginas: false,
isActivePrecio: false,
isActiveVersion: false,
isActiveYear: false,
isActiveDescripcion: false,
isActiveImagen: false,
isActivePdf: false,
isActiveEdicion:false
};
},
methods:{
async actualizarLibro(idLibro){
try{
var formData = new FormData();
if(this.isActiveImagen){
var imagen = document.querySelector('#imagen');
formData.append("imagen", imagen.files[0]);
}
if(this.isActivePdf){
var pdf = document.querySelector('#pdf');
formData.append("pdf", pdf.files[0]);
}
if(this.isActiveIsbn) formData.append("isbn", this.isbn);
if(this.isActiveTitulo) formData.append("titulo", this.titulo);
if(this.isActiveCategoria) formData.append("categoria", this.categoria);
if(this.isActiveAutor) formData.append("autor", this.autor);
if(this.isActivePaginas) formData.append("paginas", this.paginas);
if(this.isActiveEdicion) formData.append("edicion", this.impresion);
if(this.isActivePrecio) formData.append("precio", this.precio);
if(this.isActiveVersion) formData.append("version", this.version);
if(this.isActiveDescripcion) formData.append("descripcion", this.descripcion);
if(this.isActiveYear) formData.append("year", this.year);
formData.append("idLibro", idLibro);
await axios.post( `${config.api}/actualizarLibro`, formData ,{ headers: { 'Content-Type': 'multipart/form-data' } });
await Swal.fire(
'Libro actualizado con exito',
'',
'success'
);
location.reload();
}
catch(error){
console.log(error);
Swal.fire({
icon: 'error',
title: 'El libro no pudo ser actualizado',
text: `Algo salio mal, ${error}`,
});
}
}
}
}
</script>
+2 -2
View File
@@ -3,12 +3,12 @@ const config = {
//api: "https://f8d86328e778.ngrok.io"
//Local
//api: "http://localhost:3000"
api: "http://localhost:3000"
//Pruebas
//api: "https://venus.acatlan.unam.mx/portal"
//Produccion
api: "https://venus.acatlan.unam.mx/portal_editorial"
//api: "https://venus.acatlan.unam.mx/portal_editorial"
};
module.exports = config;
+1
View File
@@ -12,6 +12,7 @@ Vue.use(Vuex)
Vue.use(BootstrapVue);
Vue.use(IconsPlugin);
Vue.use(VueRouter);
const router = new VueRouter({
routes
});