Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fa96ab86b1 |
@@ -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"
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
|
||||
|
Before Width: | Height: | Size: 278 KiB |
|
Before Width: | Height: | Size: 278 KiB |
|
Before Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 293 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 902 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 8.4 KiB |
@@ -1 +0,0 @@
|
||||
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" type=image/png href=assets/icono.png><title>Portal Editorial Acatlán</title><link href=css/app.d2fdfe7d.css rel=preload as=style><link href=css/chunk-vendors.138628b4.css rel=preload as=style><link href=js/app.3c2f55de.js rel=preload as=script><link href=js/chunk-vendors.67046eec.js rel=preload as=script><link href=css/chunk-vendors.138628b4.css rel=stylesheet><link href=css/app.d2fdfe7d.css rel=stylesheet></head><body><noscript><strong>We're sorry but portal doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=js/chunk-vendors.67046eec.js></script><script src=js/app.3c2f55de.js></script></body></html>
|
||||
@@ -1,36 +1,30 @@
|
||||
{
|
||||
"name": "portal",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"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.13.0",
|
||||
"vue": "^2.6.11",
|
||||
"vue-router": "^3.3.4",
|
||||
"vuex": "^3.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "~4.4.0",
|
||||
"@vue/cli-plugin-eslint": "~4.4.0",
|
||||
"@vue/cli-service": "~4.4.0",
|
||||
"@vue/eslint-config-prettier": "^6.0.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"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": "^7.4.1",
|
||||
"prettier": "1.19.1",
|
||||
"vue-template-compiler": "^2.6.11"
|
||||
}
|
||||
}
|
||||
{
|
||||
"name": "portal",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"bootstrap": "^4.5.2",
|
||||
"core-js": "^3.6.5",
|
||||
"jquery": "^3.5.1",
|
||||
"popper.js": "^1.16.1",
|
||||
"vue": "^2.6.11",
|
||||
"vue-router": "^3.3.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "~4.4.0",
|
||||
"@vue/cli-plugin-eslint": "~4.4.0",
|
||||
"@vue/cli-service": "~4.4.0",
|
||||
"@vue/eslint-config-prettier": "^6.0.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-prettier": "^3.1.3",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"prettier": "^1.19.1",
|
||||
"vue-template-compiler": "^2.6.11"
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 278 KiB |
|
Before Width: | Height: | Size: 278 KiB |
|
Before Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 293 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 902 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 13 KiB |
@@ -4,8 +4,8 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="shortcut icon" type="image/png" href="assets/icono.png">
|
||||
<title>Portal Editorial Acatlán</title>
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
|
||||
@@ -26,8 +26,4 @@ export default {
|
||||
.row {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
.card-img-top {
|
||||
height: 18rem;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
Before Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 293 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 902 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 13 KiB |
@@ -1,279 +0,0 @@
|
||||
<template>
|
||||
<b-container fluid>
|
||||
<div v-if="!cargando">
|
||||
<b-row class="mb-2">
|
||||
<b-col class="mt-5 mb-3">
|
||||
<h1 style="text-align:center;">Agregar Libro</h1>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<b-form-input
|
||||
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="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-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-col>
|
||||
<b-form-input
|
||||
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="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="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-dropdown v-model="version" v-bind:text="version" block split split-variant="outline-primary" variant="primary" class="m-2">
|
||||
<b-dropdown-item @click="version='Impresa'" >Impresa</b-dropdown-item>
|
||||
<b-dropdown-item @click="version='Digital'" >Digital</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
</b-col>
|
||||
<b-col>
|
||||
<b-form-input
|
||||
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
|
||||
id="pdfNuevo"
|
||||
placeholder="Seleccione el PDF o arrastre..."
|
||||
accept=".pdf"
|
||||
></b-form-file>
|
||||
</b-col>
|
||||
|
||||
<b-col>
|
||||
<b-form-file
|
||||
id="imagenNuevo"
|
||||
placeholder="Seleccione la imagen o arrastre..."
|
||||
accept=".png, .jpg"
|
||||
></b-form-file>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<b-form-textarea
|
||||
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"
|
||||
></b-form-textarea>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col class="mb-5">
|
||||
<div style="margin-top: 2rem;">
|
||||
<b-button block variant="success" @click="agregarLibro()">Agregar</b-button>
|
||||
</div>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</div>
|
||||
<div v-else>
|
||||
<CargandoLibro v-bind:imageLoading="imageLoading" v-bind:pdfLoading="pdfLoading" v-bind:dataLoading="dataLoading" v-bind:imageSaved="imageSaved" v-bind:pdfSaved="pdfSaved" v-bind:dataSaved="dataSaved" />
|
||||
</div>
|
||||
</b-container>
|
||||
</template>
|
||||
<script>
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
import Swal from 'sweetalert2'
|
||||
import CargandoLibro from './cargandoDatos.vue';
|
||||
export default {
|
||||
components: {
|
||||
CargandoLibro
|
||||
},
|
||||
props: {
|
||||
nombreLibro: String,
|
||||
value: String
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isbn: "",
|
||||
titulo: "",
|
||||
categoria:"Categoria",
|
||||
autor:"",
|
||||
paginas:"",
|
||||
impresion:"",
|
||||
precio:"",
|
||||
version:"Versión",
|
||||
descripcion:"",
|
||||
year:"",
|
||||
cargando: false,
|
||||
imageLoading: true,
|
||||
pdfLoading: true,
|
||||
dataLoading: true,
|
||||
imageSaved: false,
|
||||
pdfSaved: false,
|
||||
dataSaved: false
|
||||
};
|
||||
},
|
||||
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('#imagenNuevo');
|
||||
var pdf = document.querySelector('#pdfNuevo');
|
||||
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 !== "Versión") 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) return this.faltaCampo("Imagen");
|
||||
if(pdf.files.length === 0) return this.faltaCampo("Pdf");
|
||||
formData.append("type", 'addLibro');
|
||||
formData.append("seccion", 'datos');
|
||||
if(imagen.files[0].size > 1200000){
|
||||
Swal.fire(
|
||||
`EL tamaño de la Imagen es muy grande`,
|
||||
'Por favor suba imagenes menores a 1MG',
|
||||
'warning'
|
||||
)
|
||||
return;
|
||||
}
|
||||
|
||||
if(pdf.files[0].size > 1200000){
|
||||
Swal.fire(
|
||||
`EL tamaño del PDF es muy grande`,
|
||||
'Por favor suba PDFs menores a 1MG',
|
||||
'warning'
|
||||
)
|
||||
return;
|
||||
}
|
||||
|
||||
this.cargando = true;
|
||||
let idLibro = null;
|
||||
let textoFinal = ``;
|
||||
await axios.post( `${config.api}/actualizarLibro`, formData ,{ headers: { 'Content-Type': 'multipart/form-data' } }).then(response =>{
|
||||
console.log('lo que responde datos:', response);
|
||||
idLibro = response.data.idLibro;
|
||||
this.dataLoading= false;
|
||||
this.dataSaved = true;
|
||||
}).catch(async () =>{
|
||||
this.dataLoading= false
|
||||
await Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'No se pudieron guardar los datos',
|
||||
text: `No se pudieron guardar los datos en la base de datos, intentelo en un otro momento`,
|
||||
});
|
||||
location.reload();
|
||||
return;
|
||||
});
|
||||
formData.delete('seccion');
|
||||
formData.append("seccion", 'imagen');
|
||||
formData.append("idLibro", idLibro);
|
||||
formData.append("imagen", imagen.files[0]);
|
||||
await axios.post( `${config.api}/actualizarLibro`, formData ,{ headers: { 'Content-Type': 'multipart/form-data' } }).then(() =>{
|
||||
this.imageLoading= false;
|
||||
this.imageSaved = true;
|
||||
}).catch(() => {
|
||||
this.imageLoading= false;
|
||||
textoFinal += `No su pudo guardar la imagen`;
|
||||
});
|
||||
formData.delete('seccion');
|
||||
formData.delete('imagen');
|
||||
formData.append("seccion", 'pdf');
|
||||
formData.append("pdf", pdf.files[0]);
|
||||
await axios.post( `${config.api}/actualizarLibro`, formData ,{ headers: { 'Content-Type': 'multipart/form-data' } }).then(() =>{
|
||||
this.pdfLoading= false;
|
||||
this.pdfSaved = true;
|
||||
}).catch(() =>{
|
||||
this.pdfLoading= false;
|
||||
textoFinal += `y tampoco se pude guardar el pdf`;
|
||||
});
|
||||
if(textoFinal!== ``)
|
||||
textoFinal += ` actualize los datos editando el libro`
|
||||
await Swal.fire(
|
||||
'Se termino de subir los datos',
|
||||
textoFinal,
|
||||
'success'
|
||||
);
|
||||
location.reload();
|
||||
}
|
||||
catch(error){
|
||||
console.log(error);
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'El libro no pudo ser agregado',
|
||||
text: `Algo salio mal, ${error}`,
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -1,81 +0,0 @@
|
||||
<template>
|
||||
<div class="container" style="margin-top: 3rem; margin-bottom: 3rem;">
|
||||
<div class="d-flex justify-content-center" >
|
||||
<b-card class="text-left " style="width: 20rem; margin-top: .8rem;" >
|
||||
<b-container v-if="dataLoading">
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
<b-spinner variant="primary" label="Spinning"></b-spinner>
|
||||
</b-col>
|
||||
<b-col >
|
||||
<b-card-text block>
|
||||
Guardando Datos...
|
||||
</b-card-text>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-container>
|
||||
<b-alert v-else-if="dataSaved" variant="success" show style="margin: 0rem">Datos Guardados</b-alert>
|
||||
<b-alert v-else show variant="danger">Los datos no se pudieron guardar</b-alert>
|
||||
</b-card>
|
||||
</div>
|
||||
<div class="d-flex justify-content-center">
|
||||
|
||||
<b-card class="text-left" style="width: 20rem; margin-top: .8rem;" >
|
||||
<b-container v-if="imageLoading">
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
<b-spinner variant="primary" label="Spinning"></b-spinner>
|
||||
</b-col>
|
||||
<b-col >
|
||||
<b-card-text block>
|
||||
Guardando Imagen...
|
||||
</b-card-text>
|
||||
</b-col>
|
||||
|
||||
</b-row>
|
||||
</b-container>
|
||||
<b-alert v-else-if="imageSaved" variant="success" show style="margin: 0rem">Imagen Guardada</b-alert>
|
||||
<b-alert v-else show variant="danger">La imagen no se pudo guardar</b-alert>
|
||||
</b-card>
|
||||
</div>
|
||||
<div class="d-flex justify-content-center">
|
||||
<b-card class="text-left" style="width: 20rem; margin-top: .8rem;" >
|
||||
<b-container v-if="pdfLoading">
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
<b-spinner variant="primary" label="Spinning"></b-spinner>
|
||||
</b-col>
|
||||
<b-col >
|
||||
<b-card-text block>
|
||||
Guardando PDF...
|
||||
</b-card-text>
|
||||
</b-col>
|
||||
|
||||
</b-row>
|
||||
</b-container>
|
||||
<b-alert v-else-if="pdfSaved" variant="success" show style="margin: 0rem">PDF Guardado</b-alert>
|
||||
<b-alert v-else show variant="danger">El pdf no se pudo guardar</b-alert>
|
||||
</b-card>
|
||||
</div>
|
||||
<h3 style="margin-top: 2rem;"><strong>Cargando...</strong></h3>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
imageLoading: Boolean,
|
||||
pdfLoading: Boolean,
|
||||
dataLoading: Boolean,
|
||||
imageSaved: Boolean,
|
||||
pdfSaved: Boolean,
|
||||
dataSaved: Boolean,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
}}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -1,87 +1,84 @@
|
||||
<template>
|
||||
<div class="divMaster row ">
|
||||
<div
|
||||
id="carouselExampleControls"
|
||||
class="carousel slide col-md-10 col-lg-10 col-xl-10 my-5 col-12 mx-auto"
|
||||
data-ride="carousel"
|
||||
>
|
||||
<div class="carousel-inner">
|
||||
<div
|
||||
class="carousel-item"
|
||||
v-bind:key="libro.id"
|
||||
v-for="(libro, idx) in Libros"
|
||||
:class="{ active: idx == 0 }"
|
||||
>
|
||||
<img :src="libro.img" class="d-block w-100 img-fluid" alt="img" />
|
||||
</div>
|
||||
</div>
|
||||
<a
|
||||
class="carousel-control-prev"
|
||||
href="#carouselExampleControls"
|
||||
role="button"
|
||||
data-slide="prev"
|
||||
>
|
||||
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||
<span class="sr-only">Previous</span>
|
||||
</a>
|
||||
<a
|
||||
class="carousel-control-next"
|
||||
href="#carouselExampleControls"
|
||||
role="button"
|
||||
data-slide="next"
|
||||
>
|
||||
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||
<span class="sr-only">Next</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
Libros: []
|
||||
};
|
||||
},
|
||||
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"
|
||||
};
|
||||
try{
|
||||
await axios(config).then(response => {
|
||||
let reader = new FileReader();
|
||||
reader.readAsDataURL(response.data);
|
||||
reader.onload = () => {
|
||||
this.Libros.push({ id: i, img: reader.result });
|
||||
};
|
||||
});
|
||||
}
|
||||
catch(error){
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(`Ocurrio un error msj: ${error}`);
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.divMaster {
|
||||
height: auto;
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<div class="divMaster row my-5">
|
||||
<div
|
||||
id="carouselExampleControls"
|
||||
class="carousel slide col-md-10 col-lg-10 col-xl-10 col-12 mx-auto"
|
||||
data-ride="carousel"
|
||||
>
|
||||
<div class="carousel-inner">
|
||||
<div
|
||||
class="carousel-item "
|
||||
v-bind:key="libro.id"
|
||||
v-for="(libro, idx) in Libros"
|
||||
:class="{ active: idx == 0 }"
|
||||
>
|
||||
<img :src="libro.img" class="d-block w-100 img-fluid" alt="img" />
|
||||
</div>
|
||||
<!-- <div class="carousel-item">
|
||||
<img
|
||||
src="https://www.unam.mx/sites/default/files/images/carrusel/bannermxok.jpg"
|
||||
class="d-block w-100 img-fluid"
|
||||
alt="img"
|
||||
/>
|
||||
</div>
|
||||
<div class="carousel-item">
|
||||
<img
|
||||
src="https://www.unam.mx/sites/default/files/images/carrusel/bannermxok.jpg"
|
||||
class="d-block w-100 img-fluid"
|
||||
alt="img"
|
||||
/>
|
||||
</div> -->
|
||||
</div>
|
||||
<a
|
||||
class="carousel-control-prev"
|
||||
href="#carouselExampleControls"
|
||||
role="button"
|
||||
data-slide="prev"
|
||||
>
|
||||
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||
<span class="sr-only">Previous</span>
|
||||
</a>
|
||||
<a
|
||||
class="carousel-control-next"
|
||||
href="#carouselExampleControls"
|
||||
role="button"
|
||||
data-slide="next"
|
||||
>
|
||||
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||
<span class="sr-only">Next</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
Libros: [
|
||||
{
|
||||
id: 0,
|
||||
img:
|
||||
"https://www.unam.mx/sites/default/files/images/carrusel/bannermxok.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
img:
|
||||
"https://www.unam.mx/sites/default/files/images/carrusel/bannermxok.jpg"
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
img:
|
||||
"https://www.unam.mx/sites/default/files/images/carrusel/bannermxok.jpg"
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.divMaster {
|
||||
height: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
style="width: 12rem;"
|
||||
v-bind:key="libro.id"
|
||||
v-for="libro in Libros"
|
||||
@click="descripcion(libro.id)"
|
||||
>
|
||||
<router-link :to="{ path: 'home' }" class="textt">
|
||||
<img :src="libro.img" class="card-img-top rounded" alt="libro" />
|
||||
@@ -22,56 +21,96 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
Libros: []
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
async descripcion(idLibro) {
|
||||
//console.log(` Este es el id del libro ${idLibro}`);
|
||||
localStorage.clear();
|
||||
window.localStorage.setItem("idLibro", idLibro);
|
||||
this.$router.push("/desc");
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
try {
|
||||
let novedades = await axios.get(`${config.api}/librosNovedades`);
|
||||
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;
|
||||
let config = {
|
||||
// example url
|
||||
url: `${path}${novedades[i].idLibro}`,
|
||||
method: "GET",
|
||||
responseType: "blob"
|
||||
};
|
||||
try {
|
||||
await 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
|
||||
});
|
||||
};
|
||||
});
|
||||
} catch (error) {
|
||||
console.log(`No existe esa imagen`);
|
||||
Libros: [
|
||||
{
|
||||
id: 0,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 0,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(`Ocurrio un error ${error}`);
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -2,33 +2,10 @@
|
||||
<div class="container">
|
||||
<div class="row ">
|
||||
<div class="col-md-6 col-sm-12 py-5">
|
||||
<img :src="src" alt="" class="libro" />
|
||||
<button class="button pre" @click="showModal()">
|
||||
Previsualizar
|
||||
</button>
|
||||
|
||||
<div v-if="Visible" @close="closeModal()">
|
||||
<transition name="modal">
|
||||
<div class="modal-backdrop" @click.self="closeModal()">
|
||||
<div
|
||||
class="modal"
|
||||
role="dialog"
|
||||
aria-labelledby="modalTitle"
|
||||
aria-describedby="modalDescription"
|
||||
>
|
||||
<section class="modal-body rounded" id="modalDescription">
|
||||
<iframe
|
||||
:src="PDF"
|
||||
width="100%"
|
||||
height="100%"
|
||||
frameborder="0"
|
||||
></iframe>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</transition>
|
||||
</div>
|
||||
<br /><br />
|
||||
<img v-bind:src="rutaIm" class="libro" />
|
||||
<button class="button pre">
|
||||
Previsualizar</button
|
||||
><br /><br />
|
||||
<div class="container">
|
||||
<div class="row izq">
|
||||
<b style="font-size: 18px;" class="izq">Compartir</b><br />
|
||||
@@ -72,33 +49,28 @@
|
||||
<p>{{ version }}</p>
|
||||
<b>Descripción:</b>
|
||||
<div class="overflow-auto">{{ desc }}</div>
|
||||
|
||||
<a
|
||||
href="https://tienda.acatlan.unam.mx/"
|
||||
class="button text-white d-flex justify-content-center align-items-center"
|
||||
>
|
||||
<p class="text-center">Comprar</p>
|
||||
</a>
|
||||
<button class="button ">
|
||||
{{ boton2 }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<Title title="Similares" />
|
||||
<div class="divMaster row ">
|
||||
<div class="col-10 offset-1 d-flex flex-wrap justify-content-center mb-5">
|
||||
<div class="divMaster row mb-5">
|
||||
<div class="col-10 offset-1 d-flex flex-wrap justify-content-center">
|
||||
<div
|
||||
class="card m-3"
|
||||
style="width: 12rem;"
|
||||
v-bind:key="libro.id"
|
||||
v-for="libro in Libros"
|
||||
@click="descripcion(libro.id)"
|
||||
>
|
||||
<div class="textt">
|
||||
<router-link :to="{ path: 'home' }" class="textt">
|
||||
<img :src="libro.img" class="card-img-top rounded" alt="libro" />
|
||||
<div class="card-body cd textt">
|
||||
<p class="card-text textt">
|
||||
{{ libro.title }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</router-link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -106,172 +78,54 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
import Title from "../components/titulo.vue";
|
||||
//import modal from "../components/previsual.vue";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
Title
|
||||
//modal
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
idLibro: "",
|
||||
titulo: "",
|
||||
autor: "",
|
||||
paginas: "",
|
||||
isbn: "",
|
||||
edicion: "",
|
||||
precio: "",
|
||||
src: "",
|
||||
version: "",
|
||||
desc: ``,
|
||||
boton2: "",
|
||||
categoria: "",
|
||||
Libros: [],
|
||||
Visible: false,
|
||||
|
||||
isModalVisible: false,
|
||||
//PDF: "http://www.ataun.eus/bibliotecagratuita/Cl%C3%A1sicos%20en%20Espa%C3%B1ol/Nicol%C3%A1s%20Maquiavelo/El%20pr%C3%ADncipe.pdf#toolbar=0&navpanes=0&scrollbar=0&zoom=80"
|
||||
PDF: "RUTA.pdf" //nombre del archivo de previsualizacion del libro
|
||||
// "https://www.imprentanacional.go.cr/editorialdigital/libros/literatura%20infantil/el_principito_edincr.pdf"
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
close() {
|
||||
this.$emit("close");
|
||||
},
|
||||
|
||||
async descripcion(idLibro) {
|
||||
localStorage.clear();
|
||||
window.localStorage.setItem("idLibro", idLibro);
|
||||
location.reload();
|
||||
},
|
||||
showModal() {
|
||||
this.Visible = true;
|
||||
},
|
||||
closeModal() {
|
||||
this.Visible = false;
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
let path = `${config.api}`;
|
||||
try {
|
||||
this.idLibro = window.localStorage.getItem("idLibro");
|
||||
let detalle = await axios.get(
|
||||
`${config.api}/libroDetalle?idLibro=${this.idLibro}`
|
||||
);
|
||||
|
||||
let detalleDatos = await detalle.data.datos;
|
||||
|
||||
this.titulo = detalleDatos.titulo;
|
||||
this.autor = detalleDatos.autor;
|
||||
this.paginas = detalleDatos.paginas;
|
||||
this.isbn = detalleDatos.isbn;
|
||||
this.edicion = detalleDatos.impresion;
|
||||
this.precio = detalleDatos.precio;
|
||||
this.version = detalleDatos.version;
|
||||
this.desc = detalleDatos.descripcion;
|
||||
this.categoria = detalleDatos.categoria;
|
||||
//let path = `${config.api}/PDFget/?nombrePDF=${nombre}`;
|
||||
this.PDF = `${config.api}/PDFget/?nombrePDF=${detalle.data.pdfVis}`;
|
||||
//console.log(`datos: `,detalleDatos.data );
|
||||
//console.log(`Esta es el nombred el pdf ${this.PDF}`);
|
||||
|
||||
window.localStorage.setItem("pdfVis", this.PDF);
|
||||
|
||||
if (detalleDatos.precio !== "Gratis") this.boton2 = "Comprar";
|
||||
else this.boton2 = "Descargar";
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
|
||||
try {
|
||||
let config = {
|
||||
// example url
|
||||
url: `${path}/libroImagen?idLibro=${this.idLibro}`,
|
||||
method: "GET",
|
||||
responseType: "blob"
|
||||
};
|
||||
await axios(config).then(response => {
|
||||
let reader = new FileReader();
|
||||
reader.readAsDataURL(response.data);
|
||||
reader.onload = () => {
|
||||
this.src = reader.result;
|
||||
};
|
||||
});
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
try {
|
||||
let similares = await axios.get(
|
||||
`${config.api}/librosSimilares?categoria=${this.categoria}`
|
||||
);
|
||||
similares = similares.data.data;
|
||||
//console.log(`${similares}`);
|
||||
for (let i = 0; i < similares.length; i++) {
|
||||
let config = {
|
||||
// example url
|
||||
url: `${path}/libroImagen?idLibro=${similares[i].idLibro}`,
|
||||
method: "GET",
|
||||
responseType: "blob"
|
||||
};
|
||||
try {
|
||||
await axios(config).then(response => {
|
||||
let reader = new FileReader();
|
||||
reader.readAsDataURL(response.data);
|
||||
reader.onload = () => {
|
||||
this.Libros.push({
|
||||
id: similares[i].idLibro,
|
||||
title: similares[i].titulo,
|
||||
img: reader.result
|
||||
});
|
||||
//this.Libros[i].img = reader.result;
|
||||
};
|
||||
});
|
||||
} catch (error) {
|
||||
console.log(`Este libro no se encuentra: ${error}`);
|
||||
titulo: "Competitive programing",
|
||||
autor: "HALIM",
|
||||
paginas: "300",
|
||||
isbn: "POSF-12-43",
|
||||
edicion: "Primera edicion",
|
||||
precio: "$3232.00",
|
||||
rutaIm:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg",
|
||||
version: "Electronica",
|
||||
desc: `En relación al estudio del álgebra, las expresiones algebraicas son el conjunto de números, y por símbolos representados por letras que manifiestan un valor desconocido, siendo llamado como incógnita o variable.\n\nLos símbolos se encuentran relacionados a través de signos que indican las operaciones que se necesitan efectuar, bien sea multiplicación, suma, resta, entre otros, con el objetivo de conseguir el resultado de las variables. En este sentido, los términos se distinguen o separan por medio de signos, y en el caso de estar separadas por el signo de igualdad se llama ecuación.`,
|
||||
boton2: "Comprar",
|
||||
Libros: [
|
||||
{
|
||||
id: 0,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title:
|
||||
"Some quick example text to build on the card title and make up the bulk of the cards content.",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(`Ocurrio un error ${error}`);
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.modal-backdrop {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.modal {
|
||||
background: #ffffff;
|
||||
box-shadow: 2px 2px 20px 1px;
|
||||
/* overflow-x: auto; */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
|
||||
width: 90%;
|
||||
height: 90%;
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
/* position: relative; */
|
||||
padding: 20px 10px;
|
||||
}
|
||||
.divMaster {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@@ -1,156 +0,0 @@
|
||||
<template>
|
||||
<b-container class="mt-5">
|
||||
<div class="mb-5">
|
||||
<h1 class="mb-4" style="text-align:left;">Agregar Imagen</h1>
|
||||
<b-row>
|
||||
<b-col class="p-0" cols="8">
|
||||
<b-form-file
|
||||
v-model="nuevaImagenBanner"
|
||||
id="nuevaImagenBanner"
|
||||
block
|
||||
placeholder="Seleccione la imagen o arrastre aqui..."
|
||||
accept=".png, .jpg"
|
||||
></b-form-file>
|
||||
</b-col>
|
||||
<b-col>
|
||||
<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=" row ">
|
||||
<div class="d-flex flex-wrap" style="justify-content: space-between;">
|
||||
<div v-bind:key="imagenBanner.id" v-for="imagenBanner in imagenesBanner" >
|
||||
<b-card class="m-3" style="width: 28rem;">
|
||||
<b-card-img :src="imagenBanner.img" alt="Image" ></b-card-img>
|
||||
<b-card-footer><b-button variant="danger" @click="eliminarImagen(imagenBanner.nombreImagen)">Eliminar</b-button></b-card-footer>
|
||||
</b-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</b-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
import Swal from 'sweetalert2'
|
||||
export default {
|
||||
name: "editarBanner",
|
||||
data() {
|
||||
return {
|
||||
imagenesBanner: [],
|
||||
nuevaImagenBanner: null,
|
||||
};
|
||||
},
|
||||
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 éxito.',
|
||||
'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');
|
||||
console.log('tamaño: ',imagenBanner.files.length);
|
||||
if(imagenBanner.files.length === 0){
|
||||
Swal.fire(
|
||||
'¿Aún no has seleccionado la imagen?',
|
||||
'',
|
||||
'question'
|
||||
);
|
||||
return;
|
||||
}
|
||||
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 éxito',
|
||||
'',
|
||||
'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++) {
|
||||
let config = {
|
||||
url: `${path}${nombres[i]}`,
|
||||
method: "GET",
|
||||
responseType: "blob"
|
||||
};
|
||||
try{
|
||||
await axios(config).then(response => {
|
||||
let reader = new FileReader();
|
||||
reader.readAsDataURL(response.data);
|
||||
reader.onload = () => {
|
||||
this.imagenesBanner.push({ id: i, img: reader.result, nombreImagen: nombres[i]});
|
||||
};
|
||||
});
|
||||
}
|
||||
catch(error){
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(`Ocurrio un error msj: ${error}`);
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<style scoped>
|
||||
.divMaster {
|
||||
height: auto;
|
||||
}
|
||||
</style>
|
||||
@@ -1,182 +0,0 @@
|
||||
<template>
|
||||
<b-container class="mt-2">
|
||||
<div style="margin-bottom: 2rem">
|
||||
<h4 style="text-align:left">Libros cargados </h4>
|
||||
<b-progress :max="librosTotales" height="1.5rem" >
|
||||
<b-progress-bar :value="Libros.length">
|
||||
<span>Cargados: <strong>{{ Libros.length }} / {{ librosTotales }}</strong></span>
|
||||
</b-progress-bar>
|
||||
</b-progress>
|
||||
</div>
|
||||
<div class=" divMaster row row d-flex flex-wrap justify-content-center mb-3">
|
||||
<b-input-group class="mb-2">
|
||||
<b-input-group-prepend is-text>
|
||||
<b-icon icon="search"></b-icon>
|
||||
</b-input-group-prepend>
|
||||
<b-form-input type="search" placeholder="Buscar por nombre del libro, autor o categoría" 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 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" @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 v-bind:libro="libroSelect" />
|
||||
</b-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
import ModalEditar from './modalEditar.vue';
|
||||
import Swal from 'sweetalert2';
|
||||
export default {
|
||||
components: {
|
||||
ModalEditar,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
Libros: [],
|
||||
searchLibro: "",
|
||||
libroSelect: null,
|
||||
librosTotales: 0,
|
||||
};
|
||||
},
|
||||
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 éxito.',
|
||||
'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 created() {
|
||||
try {
|
||||
let todosLibros = await axios.get(`${config.api}/getTodosLibros`);
|
||||
let path = `${config.api}/libroImagen?idLibro=`;
|
||||
todosLibros = todosLibros.data.data;
|
||||
this.librosTotales = todosLibros.length;
|
||||
|
||||
for (let i = 0; i < todosLibros.length; i++) {
|
||||
let config = {
|
||||
url: `${path}${todosLibros[i].idLibro}`,
|
||||
method: "GET",
|
||||
responseType: "blob"
|
||||
};
|
||||
try {
|
||||
axios(config).then( async response => {
|
||||
let reader = new FileReader();
|
||||
await reader.readAsDataURL(response.data);
|
||||
reader.onload = () => {
|
||||
this.Libros.push({
|
||||
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`);
|
||||
}
|
||||
}
|
||||
} 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>
|
||||
|
||||
<style scoped>
|
||||
.divMaster {
|
||||
height: auto;
|
||||
}
|
||||
</style>
|
||||
@@ -1,56 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="row d-flex align-items-center tamaño cuerpo">
|
||||
<div class="col-12 col-sm-12 col-md-4 col-lg-6 col-xl-6 p-0">
|
||||
<img class="card-img" :src="img" alt="Card image cap" />
|
||||
</div>
|
||||
<div class="col-12 col-sm-12 col-md-8 col-lg-6 col-xl-6 card-body ">
|
||||
<h5>{{ title }}</h5>
|
||||
<br />
|
||||
<p class="card-text-right">{{ text }}</p>
|
||||
<a
|
||||
:href="linkD"
|
||||
target="_blank"
|
||||
v-if="linkD != '' && linkW == ''"
|
||||
download
|
||||
>
|
||||
<span> Descargar aquí</span>
|
||||
</a>
|
||||
<a :href="linkW" target="_blank" v-if="linkD == '' && linkW != ''">
|
||||
<span> Visita nuestra página </span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: ["linkD", "linkW", "img", "text", "title"],
|
||||
data() {
|
||||
return {};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.tamaño {
|
||||
width: 40rem;
|
||||
}
|
||||
.cuerpo {
|
||||
-webkit-box-shadow: 1px 9px 17px 0px rgba(0, 0, 0, 0.75);
|
||||
-moz-box-shadow: 1px 9px 17px 0px rgba(0, 0, 0, 0.75);
|
||||
box-shadow: 1px 9px 17px 0px rgba(0, 0, 0, 0.75);
|
||||
}
|
||||
|
||||
@media (max-width: 440px) {
|
||||
.tamaño {
|
||||
width: 18rem;
|
||||
}
|
||||
.cuerpo {
|
||||
-webkit-box-shadow: 1px 9px 17px 0px rgba(0, 0, 0, 0.75);
|
||||
-moz-box-shadow: 1px 9px 17px 0px rgba(0, 0, 0, 0.75);
|
||||
box-shadow: 1px 9px 17px 0px rgba(0, 0, 0, 0.75);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,7 +1,26 @@
|
||||
<template>
|
||||
<footer class="container-fluid Azul-puma footer py-3 ">
|
||||
<container>
|
||||
<div row>
|
||||
<button type="button" class="col-md-6 col-sm-12 btn boton-footer uno">
|
||||
Comité Editorial
|
||||
</button>
|
||||
<button type="button" class="col-md-6 col-sm-12 btn boton-footer dos">
|
||||
Política Editorial y Lineamentos
|
||||
</button>
|
||||
<button type="button" class="col-md-6 col-sm-12 btn boton-footer tres">
|
||||
Proceso Editorial y Organismos
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="col-md-6 col-sm-12 btn boton-footer cuatro"
|
||||
>
|
||||
Puntos de Venta
|
||||
</button>
|
||||
</div>
|
||||
</container>
|
||||
<div row>
|
||||
<p class="mb-0 ">Hecho en México, todos los derechos reservados 2021.</p>
|
||||
<p class="mb-0 ">Hecho en México, todos los derechos reservados 2020.</p>
|
||||
<p class="my-0 ">
|
||||
Esta página puede ser reproducida con fines no lucrativos, siempre y
|
||||
cuando no se mutile, se cite la fuente
|
||||
|
||||
@@ -1,37 +1,39 @@
|
||||
<template>
|
||||
<div class="row divMaster header cl-12 azulUnam">
|
||||
<div
|
||||
class="logo_unam col-4 offset-1 d-inline-flex my-2 align-items-center"
|
||||
>
|
||||
<a href="https://www.unam.mx/" target="_blank">
|
||||
<img class="sizeImg" src="../assets/Logo-UNAM.png" alt="logo unam" />
|
||||
</a>
|
||||
</div>
|
||||
<container>
|
||||
<div class="row divMaster header cl-12 azulUnam">
|
||||
<div
|
||||
class="logo_unam col-4 offset-1 d-inline-flex my-2 align-items-center"
|
||||
>
|
||||
<a href="https://www.unam.mx/" target="_blank">
|
||||
<img class="sizeImg" src="../assets/Logo-UNAM.png" alt="logo unam" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="logo_acatlan col-4 offset-2 d-inline-flex justify-content-end my-2 align-items-center"
|
||||
>
|
||||
<a href="https://www.acatlan.unam.mx/" target="_blank">
|
||||
<img
|
||||
class="sizeImg"
|
||||
src="../assets/FES-editoriales.png"
|
||||
alt="logo unam"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
<div
|
||||
class="logo_acatlan col-4 offset-2 d-inline-flex justify-content-end my-2 align-items-center"
|
||||
>
|
||||
<a href="https://www.acatlan.unam.mx/" target="_blank">
|
||||
<img
|
||||
class="sizeImg"
|
||||
src="../assets/FES-editoriales.png"
|
||||
alt="logo unam"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="logo_acatlan_resp col-8 offset-2 d-flex justify-content-center my-2 align-items-center"
|
||||
>
|
||||
<a href="https://www.acatlan.unam.mx/" target="_blank">
|
||||
<img
|
||||
class="sizeImg"
|
||||
src="../assets/FES-editoriales.png"
|
||||
alt="logo unam"
|
||||
/>
|
||||
</a>
|
||||
<div
|
||||
class="logo_acatlan_resp col-8 offset-2 d-flex justify-content-center my-2 align-items-center"
|
||||
>
|
||||
<a href="https://www.acatlan.unam.mx/" target="_blank">
|
||||
<img
|
||||
class="sizeImg"
|
||||
src="../assets/FES-editoriales.png"
|
||||
alt="logo unam"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</container>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
|
||||
@@ -1,333 +0,0 @@
|
||||
<template>
|
||||
<b-modal size="lg" id="modalEditarLibro" hide-footer title="Editar Libro">
|
||||
|
||||
<b-container fluid v-if="!loading">
|
||||
<b-row class="mb-2">
|
||||
<b-col >
|
||||
<h2 style="text-align:left;"> {{libro.titulo}}</h2>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<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">{{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"
|
||||
v-model="isbn"
|
||||
></b-form-input>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<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">{{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"
|
||||
v-model="titulo"
|
||||
></b-form-input>
|
||||
</b-col>
|
||||
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<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">{{libro.categoria}}</label>
|
||||
</b-col>
|
||||
<b-col cols="6">
|
||||
<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="isActiveAutor" name="check-button" switch><b>Autor:</b></b-form-checkbox>
|
||||
</b-col>
|
||||
<b-col>
|
||||
<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"
|
||||
v-model="autor"
|
||||
></b-form-input>
|
||||
</b-col>
|
||||
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<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">{{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"
|
||||
v-model="paginas"
|
||||
type="number"
|
||||
></b-form-input>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<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">{{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"
|
||||
v-model="precio"
|
||||
></b-form-input>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<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">{{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"
|
||||
v-model="edicion"
|
||||
></b-form-input>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<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">{{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"
|
||||
v-model="version"
|
||||
></b-form-input>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<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">{{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="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="isActiveImagen" name="check-button" switch><b>Imagen</b></b-form-checkbox>
|
||||
</b-col>
|
||||
<b-col>
|
||||
</b-col>
|
||||
<b-col cols="6">
|
||||
<b-form-file
|
||||
placeholder="Seleccione la imagen o arrastre..."
|
||||
accept=".png, .jpg"
|
||||
id="imagen"
|
||||
></b-form-file>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<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
|
||||
placeholder="Seleccione el PDF o arrastre..."
|
||||
id="pdf"
|
||||
accept=".pdf"
|
||||
></b-form-file>
|
||||
</b-col>
|
||||
</b-row>
|
||||
|
||||
<b-row class="mb-2">
|
||||
<b-col>
|
||||
<div style="margin-top: 2rem;">
|
||||
<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>
|
||||
</b-row>
|
||||
</b-container>
|
||||
<b-container v-else>
|
||||
<div class="text-center">
|
||||
<b-spinner style="width: 10rem; height: 10rem; margin: 3rem;" variant="primary" label="Text Centered"></b-spinner><br />
|
||||
<strong><h1 style="margin: 3rem;">Guardando...</h1></strong>
|
||||
</div>
|
||||
</b-container>
|
||||
</b-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
import Swal from 'sweetalert2'
|
||||
export default {
|
||||
props: {
|
||||
libro: Object,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
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,
|
||||
loading: false
|
||||
};
|
||||
|
||||
},
|
||||
methods:{
|
||||
async actualizarLibro(idLibro){
|
||||
try{
|
||||
var formData = new FormData();
|
||||
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);
|
||||
if(this.isActiveImagen){
|
||||
var imagen = document.querySelector('#imagen');
|
||||
if(imagen.files[0].size > 1200000){
|
||||
Swal.fire(
|
||||
`EL tamaño de la Imagen es muy grande`,
|
||||
'Por favor suba imagenes menores a 1MG',
|
||||
'warning'
|
||||
)
|
||||
return;
|
||||
}
|
||||
formData.append("imagen", imagen.files[0]);
|
||||
}
|
||||
if(this.isActivePdf){
|
||||
var pdf = document.querySelector('#pdf');
|
||||
if(pdf.files[0].size > 1200000){
|
||||
Swal.fire(
|
||||
`EL tamaño del PDF es muy grande`,
|
||||
'Por favor suba PDFs menores a 1MG',
|
||||
'warning'
|
||||
)
|
||||
return;
|
||||
}
|
||||
formData.append("pdf", pdf.files[0]);
|
||||
}
|
||||
if( formData.entries().next().done){
|
||||
Swal.fire(
|
||||
'¿Aún no has ningún campo a editar?',
|
||||
'',
|
||||
'question'
|
||||
);
|
||||
return;
|
||||
}
|
||||
formData.append("idLibro", idLibro);
|
||||
formData.append("type", 'editarLibro');
|
||||
this.loading = true;
|
||||
await axios.post( `${config.api}/actualizarLibro`, formData ,{ headers: { 'Content-Type': 'multipart/form-data' } });
|
||||
this.loading = false;
|
||||
await Swal.fire(
|
||||
'Libro actualizado con éxito',
|
||||
'',
|
||||
'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>
|
||||
@@ -1,343 +0,0 @@
|
||||
<template>
|
||||
<div class="divMaster doradoUnam row d-flex justify-content-center">
|
||||
<div class="col-10 offset-1">
|
||||
<nav class="navbar navbar-expand-sm navbar-dark ">
|
||||
<button
|
||||
@click="method()"
|
||||
class="navbar-toggler col-5"
|
||||
type="button"
|
||||
data-toggle="collapse"
|
||||
data-target="#navbarTogglerDemo02"
|
||||
aria-controls="navbarTogglerDemo02"
|
||||
aria-expanded="false"
|
||||
aria-label="Toggle navigation"
|
||||
>
|
||||
<span class="navbar-toggler-icon blanco d-flex"></span>
|
||||
<!-- <span class="mx-2">Menu</span> -->
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse " id="navbarTogglerDemo02">
|
||||
<ul
|
||||
class="navbar-nav mr-auto w-100 d-flex align-items-center justify-content-between mt-0 mt-lg-0"
|
||||
>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-white" @click="inicio()">Inicio</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-white" @click="presentacion()"
|
||||
>Presentación</a
|
||||
>
|
||||
</li>
|
||||
|
||||
<li class="nav-item ">
|
||||
<div class="dropdown">
|
||||
<a
|
||||
class="btn nav-link dropdown-toggle text-white"
|
||||
role="button"
|
||||
id="dropdownMenuLink"
|
||||
data-toggle="dropdown"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
>
|
||||
Libros
|
||||
</a>
|
||||
|
||||
<div
|
||||
class="dropdown-menu azulUnam"
|
||||
aria-labelledby="navbarDropdown"
|
||||
>
|
||||
<a
|
||||
class="dropdown-item text-white"
|
||||
@click="tema('Ciencias Socioeconomicas')"
|
||||
>Ciencias Socioeconómicas</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a
|
||||
class="dropdown-item text-white"
|
||||
@click="tema('Diseño y Edificacion')"
|
||||
>Diseño y Edificación</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a
|
||||
class="dropdown-item text-white"
|
||||
@click="tema('Enseñanza de Idiomas')"
|
||||
>Enseñanza de Idiomas</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a
|
||||
class="dropdown-item text-white"
|
||||
@click="tema('Estudios de Posgrado')"
|
||||
>Estudios de Posgrado</a
|
||||
>
|
||||
<div class="dropdown-divider "></div>
|
||||
<a
|
||||
class="dropdown-item text-white "
|
||||
@click="tema('Humanidades')"
|
||||
>Humanidades</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a
|
||||
class="dropdown-item text-white"
|
||||
@click="tema('Matematicas e Ingenieria')"
|
||||
>Matemáticas e Ingenieria</a
|
||||
>
|
||||
|
||||
<div class="dropdown-divider"></div>
|
||||
<a
|
||||
class="dropdown-item text-white"
|
||||
@click="tema('Universidad Abierta y Educación a Distancia')"
|
||||
>Universidad Abierta y Educación a Distancia</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<!-- <li class="nav-item">
|
||||
<a class="nav-link text-white" @click="difusion()"
|
||||
>Difusión Editorial</a
|
||||
>
|
||||
</li>-->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<form
|
||||
id="buscador"
|
||||
v-if="isExist"
|
||||
class="form-inline my-0 my-lg-0 buscador col-4 d-flex justify-content-end"
|
||||
>
|
||||
<div class="input-group input-group-sm mb-0">
|
||||
<input
|
||||
type="text"
|
||||
class="form-control reIzq "
|
||||
placeholder="Buscar"
|
||||
aria-label="Recipient's username"
|
||||
aria-describedby="basic-addon2"
|
||||
v-model="nombre"
|
||||
/>
|
||||
<div class="input-group-append reDer bg-white dropdown">
|
||||
<button class="btn my-0" type="submit">
|
||||
<svg
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="0 0 16 16"
|
||||
class="bi bi-search blanco"
|
||||
fill="currentColor"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M10.442 10.442a1 1 0 0 1 1.415 0l3.85 3.85a1 1 0 0 1-1.414 1.415l-3.85-3.85a1 1 0 0 1 0-1.415z"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div>-->
|
||||
<div v-if="nombre.length > 2" class=" rescont ">
|
||||
<ul class=" dropdown-menu d-block dropdown-menu-right ">
|
||||
<li
|
||||
class=" dropdown-item dropdown-itemBusqueda text-wrap "
|
||||
v-for="item in buscarLibro"
|
||||
v-bind:key="item.idLibro"
|
||||
@click="descripcion(item.idLibro)"
|
||||
>
|
||||
{{ item.titulo }}
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<!-- <ul class=" dropdown-menu d-block dropdown-menu-right">
|
||||
<li class="dropdown-item text-wrap">Lorem ipsum dolor sit amet consectetur adipisicing elit.</li>
|
||||
|
||||
<li class="dropdown-item dropdown-itemBusqueda text-wrap">Lorem ipsum dolor sit amet consectetur adipisicing elit. Repellat nam molestiae delectus aliquid dignissimos ullam illo provident laborum perspiciatis sapiente. Officiis eveniet animi ad beatae iusto cupiditate earum quo enim?</li>
|
||||
<li class=" dropdown-item text-wrap">Lorem ipsum dolor sit amet consectetur adipisicing elit. Repellat nam molestiae delectus aliquid dignissimos ullam illo provident laborum perspiciatis sapiente. Officiis eveniet animi ad beatae iusto cupiditate earum quo enim?</li>
|
||||
|
||||
<li class=" dropdown-item text-wrap">Lorem ipsum dolor sit amet consectetur adipisicing elit. Repellat nam molestiae delectus aliquid dignissimos ullam illo provident laborum perspiciatis sapiente. Officiis eveniet animi ad beatae iusto cupiditate earum quo enim?</li>
|
||||
|
||||
</ul> -->
|
||||
</div>
|
||||
</form>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
isExist: true,
|
||||
libros: [],
|
||||
nombre: ""
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
async descripcion(idLibro) {
|
||||
//console.log(` Este es el id del libro ${idLibro}`);
|
||||
localStorage.clear();
|
||||
window.localStorage.setItem("idLibro", idLibro);
|
||||
this.$router.push("/desc").catch(() => {
|
||||
location.reload();
|
||||
});
|
||||
},
|
||||
inicio() {
|
||||
this.$router.push("/").catch(() => {
|
||||
location.reload();
|
||||
});
|
||||
},
|
||||
difusion() {
|
||||
this.$router.push("/difusion").catch(() => {
|
||||
location.reload();
|
||||
});
|
||||
},
|
||||
presentacion() {
|
||||
this.$router.push("/presentacion").catch(() => {
|
||||
location.reload();
|
||||
});
|
||||
},
|
||||
async tema(categoria) {
|
||||
window.localStorage.setItem("categoria", categoria);
|
||||
this.$router.push("/tema").catch(() => {
|
||||
location.reload();
|
||||
});
|
||||
},
|
||||
method() {
|
||||
this.isExist = !this.isExist;
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
let path = `${config.api}`;
|
||||
try {
|
||||
let libros = await axios.get(`${path}/getLibros`);
|
||||
this.libros = await libros.data.data;
|
||||
} catch (error) {
|
||||
console.log(`Error ${error}`);
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
buscarLibro: function() {
|
||||
return this.libros.filter(item =>
|
||||
item.titulo.toLowerCase().includes(this.nombre.toLowerCase())
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.divMaster {
|
||||
/* max-width: 1280px; */
|
||||
height: auto;
|
||||
margin: 0 auto;
|
||||
}
|
||||
nav {
|
||||
padding: 0.5rem 0;
|
||||
}
|
||||
|
||||
.azulUnam {
|
||||
background-color: #1e3c70;
|
||||
}
|
||||
|
||||
.doradoUnam {
|
||||
background-color: #bb8800;
|
||||
}
|
||||
|
||||
.dropdown-item:hover {
|
||||
background-color: #bb8800;
|
||||
}
|
||||
|
||||
.dropdown-itemBusqueda:hover {
|
||||
background-color: #1e3c70;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-link:focus {
|
||||
background-color: #1e3c70;
|
||||
border-radius: 1rem;
|
||||
}
|
||||
|
||||
.nav-link:hover {
|
||||
background-color: #1e3c70;
|
||||
color: white;
|
||||
border-radius: 0.2rem;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
transition: 0.3s;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.dropdown-item {
|
||||
padding: 0.3rem 1rem;
|
||||
}
|
||||
|
||||
.menuText {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.reDer {
|
||||
border-top-right-radius: 20px 20px !important;
|
||||
border-bottom-right-radius: 20px 20px !important;
|
||||
}
|
||||
|
||||
.reIzq {
|
||||
border-top-left-radius: 20px 20px !important;
|
||||
border-bottom-left-radius: 20px 20px !important;
|
||||
}
|
||||
|
||||
/*
|
||||
.dropdown-menu {
|
||||
width: 10% !important;
|
||||
} */
|
||||
|
||||
.dropdown {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
position: absolute;
|
||||
background-color: #f9f9f9;
|
||||
min-width: 160px;
|
||||
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
|
||||
/* padding: 12px 16px; */
|
||||
top: 0.8rem;
|
||||
left: -10rem;
|
||||
display: block;
|
||||
}
|
||||
.rescont {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.list-group-item {
|
||||
padding: 12px 16px;
|
||||
}
|
||||
|
||||
.navbar-toggler {
|
||||
font-size: 1rem;
|
||||
}
|
||||
.navbar-dark .navbar-toggler {
|
||||
border: none;
|
||||
}
|
||||
|
||||
@media (max-width: 450px) {
|
||||
.menuText,
|
||||
.buscador {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
width: 80vw !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,220 +0,0 @@
|
||||
<template>
|
||||
<div class="divMaster azulUnam row d-flex justify-content-center">
|
||||
<div class="col-10 offset-1">
|
||||
<nav class="navbar navbar-expand-sm navbar-dark ">
|
||||
<button
|
||||
@click="method()"
|
||||
class="navbar-toggler col-5"
|
||||
type="button"
|
||||
data-toggle="collapse"
|
||||
data-target="#navbarTogglerDemo03"
|
||||
aria-controls="navbarTogglerDemo03"
|
||||
aria-expanded="false"
|
||||
aria-label="Toggle navigation"
|
||||
>
|
||||
<span class="navbar-toggler-icon blanco d-flex"></span>
|
||||
<!-- <span class="mx-2"> spa</span> -->
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse " id="navbarTogglerDemo03">
|
||||
<ul
|
||||
class="navbar-nav mr-auto w-100 d-flex align-items-center justify-content-between mt-0 mt-lg-0"
|
||||
>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-white" @click="comite()"
|
||||
>Comité Editorial</a
|
||||
>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-white" @click="lineamientos()"
|
||||
>Política Editorial y Lineamentos</a
|
||||
>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-white" @click="proceso()"
|
||||
>Proceso Editorial y Organismos</a
|
||||
>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-white" @click="puntos()"
|
||||
>Puntos de Venta</a
|
||||
>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-white" @click="contacto()">Contáctanos</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
isExist: true,
|
||||
libros: [],
|
||||
nombre: ""
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
comite() {
|
||||
this.$router.push("/comite").catch(() => {
|
||||
location.reload();
|
||||
});
|
||||
},
|
||||
lineamientos() {
|
||||
this.$router.push("/lineamientos").catch(() => {
|
||||
location.reload();
|
||||
});
|
||||
},
|
||||
proceso() {
|
||||
this.$router.push("/proceso").catch(() => {
|
||||
location.reload();
|
||||
});
|
||||
},
|
||||
puntos() {
|
||||
this.$router.push("/puntos").catch(() => {
|
||||
location.reload();
|
||||
});
|
||||
},
|
||||
contacto() {
|
||||
this.$router.push("/contacto").catch(() => {
|
||||
location.reload();
|
||||
});
|
||||
},
|
||||
method() {
|
||||
this.isExist = !this.isExist;
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
let path = `${config.api}`;
|
||||
try {
|
||||
let libros = await axios.get(`${path}/getLibros`);
|
||||
this.libros = await libros.data.data;
|
||||
} catch (error) {
|
||||
console.log(`Error ${error}`);
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
buscarLibro: function() {
|
||||
return this.libros.filter(item =>
|
||||
item.titulo.toLowerCase().includes(this.nombre.toLowerCase())
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.divMaster {
|
||||
/* max-width: 1280px; */
|
||||
height: auto;
|
||||
margin: 0 auto;
|
||||
}
|
||||
nav {
|
||||
padding: 0.5rem 0;
|
||||
}
|
||||
|
||||
.azulUnam {
|
||||
background-color: #1e3c70;
|
||||
}
|
||||
|
||||
.doradoUnam {
|
||||
background-color: #bb8800;
|
||||
}
|
||||
|
||||
.dropdown-item:hover {
|
||||
background-color: #1e3c70;
|
||||
}
|
||||
|
||||
.dropdown-itemBusqueda:hover {
|
||||
background-color: #bb8800;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-link:focus {
|
||||
background-color: #bb8800;
|
||||
border-radius: 1rem;
|
||||
}
|
||||
|
||||
.nav-link:hover {
|
||||
background-color: #bb8800;
|
||||
color: white;
|
||||
border-radius: 0.2rem;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
transition: 0.3s;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.dropdown-item {
|
||||
padding: 0.3rem 1rem;
|
||||
}
|
||||
|
||||
.menuText {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/*
|
||||
.dropdown-menu {
|
||||
width: 10% !important;
|
||||
} */
|
||||
|
||||
.dropdown {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
position: absolute;
|
||||
background-color: #f9f9f9;
|
||||
min-width: 160px;
|
||||
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
|
||||
/* padding: 12px 16px; */
|
||||
top: 0.8rem;
|
||||
left: -10rem;
|
||||
display: block;
|
||||
}
|
||||
.rescont {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.list-group-item {
|
||||
padding: 12px 16px;
|
||||
}
|
||||
|
||||
.navbar-toggler {
|
||||
font-size: 1rem;
|
||||
}
|
||||
.navbar-dark .navbar-toggler {
|
||||
border: none;
|
||||
}
|
||||
|
||||
@media (max-width: 450px) {
|
||||
.menuText,
|
||||
.buscador {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
width: 80vw !important;
|
||||
}
|
||||
.nav-link {
|
||||
font-size: 20px;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,102 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<b-nav vertical class="mt-3">
|
||||
<b-nav-item class="m-2">
|
||||
<div class="accordion" role="tablist">
|
||||
<b-card no-body >
|
||||
<b-card-header header-tag="header" role="tab">
|
||||
<b-button block squared v-b-toggle.user class="p-1 azulUnam">
|
||||
<b-icon icon="person-fill" style="margin-bottom: 4px;"></b-icon>
|
||||
{{user}}
|
||||
</b-button>
|
||||
</b-card-header>
|
||||
<b-collapse id="user" accordion="my-accordion" role="tabpanel">
|
||||
<b-card-body>
|
||||
<b-button block variant="light" class="p-1 m-0 rojo" @click="cerrarSesion()">Cerrar sesión</b-button>
|
||||
</b-card-body>
|
||||
</b-collapse>
|
||||
</b-card>
|
||||
</div>
|
||||
|
||||
</b-nav-item>
|
||||
<b-nav-item class="m-2">
|
||||
<div class="accordion" role="tablist">
|
||||
<b-card no-body >
|
||||
<b-card-header header-tag="header" role="tab">
|
||||
<b-button block squared v-b-toggle.banner @click="$store.commit('cambiarNav','EditarBanner')" class="p-1 azulUnam">Banner principal</b-button>
|
||||
</b-card-header>
|
||||
<b-collapse id="banner" accordion="my-accordion" role="tabpanel">
|
||||
<b-card-body>
|
||||
</b-card-body>
|
||||
</b-collapse>
|
||||
</b-card>
|
||||
</div>
|
||||
</b-nav-item>
|
||||
<b-nav-item class="m-2">
|
||||
<div class="accordion" role="tablist">
|
||||
<b-card no-body >
|
||||
<b-card-header header-tag="header" role="tab">
|
||||
<b-button block squared v-b-toggle.libros class="p-1 azulUnam">Libros</b-button>
|
||||
</b-card-header>
|
||||
<b-collapse id="libros" accordion="my-accordion" role="tabpanel">
|
||||
<b-card-body>
|
||||
<b-button block variant="light" class="p-1 m-0" @click="$store.commit('cambiarNav','EditarLibro')">Editar</b-button>
|
||||
<b-button block variant="light" class="p-1 m-0" @click="$store.commit('cambiarNav','AgregarLibro')">Agregar</b-button>
|
||||
</b-card-body>
|
||||
</b-collapse>
|
||||
</b-card>
|
||||
</div>
|
||||
</b-nav-item>
|
||||
</b-nav>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Swal from 'sweetalert2'
|
||||
export default {
|
||||
props:{
|
||||
user: String
|
||||
},
|
||||
methods:{
|
||||
cerrarSesion(){
|
||||
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 cerrar la sesión?',
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Si, salir',
|
||||
cancelButtonText: 'No',
|
||||
reverseButtons: true
|
||||
}).then(async (result) => {
|
||||
if (result.isConfirmed) {
|
||||
localStorage.clear();
|
||||
this.$router.replace('/login');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<style scoped>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.azulUnam {
|
||||
background-color: #1e3c70;
|
||||
}
|
||||
.rojo:hover{
|
||||
background-color: #CA230C;
|
||||
color: white;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,174 @@
|
||||
<template>
|
||||
<nav
|
||||
class="navbar navbar-expand-md navbar-light "
|
||||
style="background-color:#BB8800;"
|
||||
>
|
||||
<div class="container">
|
||||
<nav class=" ">
|
||||
<button
|
||||
class=" navbar-toggler van text-whitee btn-sm"
|
||||
type="button"
|
||||
id="toggle-menu"
|
||||
data-toggle="collapse"
|
||||
data-target="#navbarNav"
|
||||
aria-controls="navbarNav"
|
||||
aria-expanded="false"
|
||||
aria-label="Toggle navigation"
|
||||
v-on:click="toggle()"
|
||||
>
|
||||
<span
|
||||
class=" navbar-toggler-icon x m-1 text-white"
|
||||
style="color:white !important;"
|
||||
></span>
|
||||
Menú
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav mr-auto mt-0 mt-lg-0">
|
||||
<li class="nav-item dropdown">
|
||||
<router-link to="#" class="nav-item nav-link text-white "
|
||||
><a> Inicio</a></router-link
|
||||
>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<router-link to="#" class="nav-item nav-link text-white"
|
||||
><a>Presentacion</a></router-link
|
||||
>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<router-link to="#" class="nav-item nav-link text-white"
|
||||
><a>Libros</a></router-link
|
||||
>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<router-link to="#" class="nav-item nav-link text-white"
|
||||
><a>Difusión Editorial</a></router-link
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
<form class="form-inline my-0 my-lg-0">
|
||||
<div class="input-group input-group-sm mb-0">
|
||||
<input
|
||||
type="text"
|
||||
class="form-control reIzq "
|
||||
placeholder="Buscar"
|
||||
aria-label="Recipient's username"
|
||||
aria-describedby="basic-addon2"
|
||||
/>
|
||||
<div class="input-group-append reDer bg-white">
|
||||
<button class="btn my-0" type="submit">
|
||||
<svg
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="0 0 16 16"
|
||||
class="bi bi-search"
|
||||
fill="currentColor"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M10.442 10.442a1 1 0 0 1 1.415 0l3.85 3.85a1 1 0 0 1-1.414 1.415l-3.85-3.85a1 1 0 0 1 0-1.415z"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
methods: {
|
||||
toggle: function() {
|
||||
let element = document.getElementById("navbarNav");
|
||||
element.classList.toggle("block");
|
||||
element.classList.add("mystyle");
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.reDer {
|
||||
border-top-right-radius: 20px 20px !important;
|
||||
border-bottom-right-radius: 20px 20px !important;
|
||||
}
|
||||
.reIzq {
|
||||
border-top-left-radius: 20px 20px !important;
|
||||
border-bottom-left-radius: 20px 20px !important;
|
||||
}
|
||||
body {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.mystyle {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.block {
|
||||
display: block;
|
||||
}
|
||||
a {
|
||||
max-height: 100%;
|
||||
}
|
||||
.menu {
|
||||
background-color: #bb8800;
|
||||
}
|
||||
|
||||
.menu nav ul {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin: 0 0rem;
|
||||
}
|
||||
|
||||
.menu nav ul div {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.menu nav ul li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.menu nav ul li a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
a {
|
||||
color: white;
|
||||
transition: 0.5s;
|
||||
padding-left: 0.3rem;
|
||||
padding-right: 0.3rem;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
background-color: #1e3c70;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.active {
|
||||
background-color: #936900;
|
||||
}
|
||||
|
||||
.van {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.x {
|
||||
color: white;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.van {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,97 +0,0 @@
|
||||
<template>
|
||||
<div class="divMaster row ">
|
||||
<div class="col-10 offset-1 d-flex flex-wrap justify-content-center mb-5">
|
||||
<div
|
||||
class="card m-3"
|
||||
style="width: 12rem;"
|
||||
v-bind:key="libro.id"
|
||||
v-for="libro in Libros"
|
||||
@click="descripcion(libro.id)"
|
||||
>
|
||||
<router-link :to="{ path: 'home' }" class="textt">
|
||||
<img :src="libro.img" class="card-img-top rounded" alt="libro" />
|
||||
<div class="card-body cd textt">
|
||||
<p class="card-text textt">
|
||||
{{ libro.title }}
|
||||
</p>
|
||||
</div>
|
||||
</router-link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
categoria: "",
|
||||
Libros: []
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
async descripcion(idLibro) {
|
||||
localStorage.clear();
|
||||
window.localStorage.setItem("idLibro", idLibro);
|
||||
this.$router.push("/desc");
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
let path = `${config.api}`;
|
||||
this.categoria = window.localStorage.getItem("categoria");
|
||||
try {
|
||||
let similares = await axios.get(
|
||||
`${config.api}/temaLibro?categoria=${this.categoria}`
|
||||
);
|
||||
similares = similares.data.data;
|
||||
//console.log(` este es el resutlado${similares}`);
|
||||
for (let i = 0; i < similares.length; i++) {
|
||||
let config = {
|
||||
// example url
|
||||
url: `${path}/libroImagen?idLibro=${similares[i].idLibro}`,
|
||||
method: "GET",
|
||||
responseType: "blob"
|
||||
};
|
||||
try {
|
||||
await axios(config).then(response => {
|
||||
let reader = new FileReader();
|
||||
reader.readAsDataURL(response.data);
|
||||
reader.onload = () => {
|
||||
this.Libros.push({
|
||||
id: similares[i].idLibro,
|
||||
title: similares[i].titulo,
|
||||
img: reader.result
|
||||
});
|
||||
//this.Libros[i].img = reader.result;
|
||||
};
|
||||
});
|
||||
} catch (error) {
|
||||
console.log(`Ocurrio un error con la imagen desc: ${error}`);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(`Ocurrio un error ${error}`);
|
||||
}
|
||||
},
|
||||
beforeCreate() {
|
||||
if (!window.localStorage.getItem("categoria")) this.$router.push("/");
|
||||
else this.categoria = window.localStorage.getItem("categoria");
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.divMaster {
|
||||
height: auto;
|
||||
}
|
||||
.card {
|
||||
border: none !important;
|
||||
border-bottom: 5px solid #1b3d70 !important;
|
||||
}
|
||||
a {
|
||||
text-decoration: none !important;
|
||||
color: black;
|
||||
}
|
||||
</style>
|
||||
@@ -33,10 +33,9 @@ export default {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 450px) {
|
||||
@media screen and (max-width: 400px) {
|
||||
.pTitulo {
|
||||
font-size: 20px;
|
||||
padding: 0px 3px;
|
||||
}
|
||||
.bgAzul {
|
||||
width: 60%;
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
const config = {
|
||||
//ngrok
|
||||
//api: "https://f8d86328e778.ngrok.io"
|
||||
|
||||
//Local
|
||||
//api: "http://localhost:3000"
|
||||
|
||||
//Pruebas
|
||||
//api: "https://venus.acatlan.unam.mx/portal"
|
||||
|
||||
//Produccion
|
||||
api: "https://venus.acatlan.unam.mx/portal_editorial"
|
||||
};
|
||||
module.exports = config;
|
||||
@@ -0,0 +1,205 @@
|
||||
<template>
|
||||
<div class="divMaster doradoUnam row d-flex justify-content-center">
|
||||
<div class="col-10 offset-1">
|
||||
<nav class="navbar navbar-expand-sm navbar-dark ">
|
||||
<button
|
||||
@click="method()"
|
||||
class="navbar-toggler col-5"
|
||||
type="button"
|
||||
data-toggle="collapse"
|
||||
data-target="#navbarTogglerDemo02"
|
||||
aria-controls="navbarTogglerDemo02"
|
||||
aria-expanded="false"
|
||||
aria-label="Toggle navigation"
|
||||
>
|
||||
<span class="navbar-toggler-icon blanco"></span>
|
||||
<span class="mx-2">Menu</span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse " id="navbarTogglerDemo02">
|
||||
<ul
|
||||
class="navbar-nav mr-auto w-100 d-flex align-items-center justify-content-around mt-0 mt-lg-0"
|
||||
>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-white" href="#">Inicio</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-white" href="#">Presentacion</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<div class="dropdown">
|
||||
<a
|
||||
class="btn nav-link dropdown-toggle text-white"
|
||||
href="#"
|
||||
role="button"
|
||||
id="dropdownMenuLink"
|
||||
data-toggle="dropdown"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
>
|
||||
Libros
|
||||
</a>
|
||||
|
||||
<div
|
||||
class="dropdown-menu azulUnam"
|
||||
aria-labelledby="navbarDropdown"
|
||||
>
|
||||
<a class="dropdown-item text-white" href="#"
|
||||
>Ciencias Socioeconomicas</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item text-white" href="#"
|
||||
>Diseño y Edificacion</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item text-white" href="#"
|
||||
>Enseñanza de Idiomas</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item text-white" href="#"
|
||||
>Estudios de Posgrado</a
|
||||
>
|
||||
<div class="dropdown-divider "></div>
|
||||
<a class="dropdown-item text-white " href="#">Humanidades</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item text-white" href="#"
|
||||
>Matematicas e Ingenieria</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-white" href="#">Difusion Editorial</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<form
|
||||
id="buscador"
|
||||
v-if="isExist"
|
||||
class="form-inline my-0 my-lg-0 buscador col-4 d-flex justify-content-end"
|
||||
>
|
||||
<div class="input-group input-group-sm mb-0 ver">
|
||||
<input
|
||||
type="text"
|
||||
class="form-control reIzq "
|
||||
placeholder="Buscar"
|
||||
v-model="search"
|
||||
aria-label="Recipient's username"
|
||||
aria-describedby="basic-addon2"
|
||||
/>
|
||||
<div class="input-group-append reDer bg-white">
|
||||
<router-link
|
||||
:to="{ name: 'search', params: { searchProp: search } }"
|
||||
>
|
||||
<button class="btn my-0" type="submit">
|
||||
<svg
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="0 0 16 16"
|
||||
class="bi bi-search blanco"
|
||||
fill="currentColor"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M10.442 10.442a1 1 0 0 1 1.415 0l3.85 3.85a1 1 0 0 1-1.414 1.415l-3.85-3.85a1 1 0 0 1 0-1.415z"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</router-link>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
isExist: true,
|
||||
search: ""
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
method() {
|
||||
this.isExist = !this.isExist;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.divMaster {
|
||||
/* max-width: 1280px; */
|
||||
height: auto;
|
||||
margin: 0 auto;
|
||||
}
|
||||
nav {
|
||||
padding: 0.5rem 0;
|
||||
}
|
||||
|
||||
.azulUnam {
|
||||
background-color: #1e3c70;
|
||||
}
|
||||
.doradoUnam {
|
||||
background-color: #bb8800;
|
||||
}
|
||||
|
||||
.dropdown-item:hover {
|
||||
background-color: #bb8800;
|
||||
}
|
||||
.nav-link:focus {
|
||||
background-color: #1e3c70;
|
||||
border-radius: 1rem;
|
||||
}
|
||||
|
||||
.nav-link:hover {
|
||||
background-color: #1e3c70;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
transition: 0.3s;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.dropdown-item {
|
||||
padding: 0.3rem 1rem;
|
||||
}
|
||||
|
||||
.menuText {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.reDer {
|
||||
border-top-right-radius: 20px 20px !important;
|
||||
border-bottom-right-radius: 20px 20px !important;
|
||||
}
|
||||
|
||||
.reIzq {
|
||||
border-top-left-radius: 20px 20px !important;
|
||||
border-bottom-left-radius: 20px 20px !important;
|
||||
}
|
||||
|
||||
@media (max-width: 450px) {
|
||||
.menuText,
|
||||
.buscador {
|
||||
display: block !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,38 +1,20 @@
|
||||
import Vue from "vue";
|
||||
import App from "./App.vue";
|
||||
import "bootstrap";
|
||||
import "bootstrap/dist/css/bootstrap.min.css";
|
||||
import { BootstrapVue, IconsPlugin } from 'bootstrap-vue'
|
||||
import Vuex from 'vuex'
|
||||
import VueRouter from "vue-router";
|
||||
import { routes } from "./routes";
|
||||
|
||||
|
||||
Vue.config.productionTip = false;
|
||||
Vue.use(Vuex)
|
||||
Vue.use(BootstrapVue);
|
||||
Vue.use(IconsPlugin);
|
||||
Vue.use(VueRouter);
|
||||
|
||||
const router = new VueRouter({
|
||||
routes
|
||||
});
|
||||
|
||||
const store = new Vuex.Store({
|
||||
state: {
|
||||
selectNav: "EditarLibro",
|
||||
},
|
||||
mutations: {
|
||||
cambiarNav (state, selectNav) {
|
||||
state.selectNav = selectNav
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
render: h => h(App),
|
||||
router,
|
||||
store: store,
|
||||
});
|
||||
import Vue from "vue";
|
||||
import App from "./App.vue";
|
||||
import "bootstrap";
|
||||
import "bootstrap/dist/css/bootstrap.min.css";
|
||||
|
||||
import VueRouter from "vue-router";
|
||||
import { routes } from "./routes";
|
||||
|
||||
Vue.config.productionTip = false;
|
||||
|
||||
Vue.use(VueRouter);
|
||||
const router = new VueRouter({
|
||||
routes
|
||||
});
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
render: h => h(App),
|
||||
router
|
||||
});
|
||||
|
||||
@@ -2,27 +2,12 @@ import home from "./view/home.vue";
|
||||
import login from "./view/login.vue";
|
||||
import libroDescripcion from "./view/libroDescripcion.vue";
|
||||
import difusion from "./view/difusion.vue";
|
||||
import lineamientos from "./view/lineamiento.vue";
|
||||
import tema from "./view/tema.vue";
|
||||
import comite from "./view/comite.vue";
|
||||
import presentacion from "./view/presentacion.vue";
|
||||
import proceso from "./view/proceso.vue";
|
||||
import puntos from "./view/puntos.vue";
|
||||
import contacto from "./view/contacto.vue";
|
||||
import panelAdmin from "./view/panelAdmin.vue";
|
||||
import search from "./view/search.vue";
|
||||
|
||||
export const routes = [
|
||||
{ path: "/", component: home, name: "/" },
|
||||
{ path: "/home", component: home, name: "home" },
|
||||
{ path: "/", component: home, name: "form" },
|
||||
{ path: "/login", component: login, name: "Login" },
|
||||
{ path: "/desc", component: libroDescripcion, name: "LibroDesc" },
|
||||
{ path: "/difusion", component: difusion, name: "difusion" },
|
||||
{ path: "/lineamientos", component: lineamientos, name: "lineamientos" },
|
||||
{ path: "/tema", component: tema, name: "tema" },
|
||||
{ path: "/comite", component: comite, name: "comite" },
|
||||
{ path: "/presentacion", component: presentacion, name: "presentacion" },
|
||||
{ path: "/proceso", component: proceso, name: "proceso" },
|
||||
{ path: "/puntos", component: puntos, name: "puntos" },
|
||||
{ path: "/contacto", component: contacto, name: "contacto" },
|
||||
{ path: "/panelAdmin", component: panelAdmin, name: "panelAdmin" }
|
||||
{ path: "/search", component: search, name: "search", props: true }
|
||||
];
|
||||
|
||||
@@ -1,133 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<Header></Header>
|
||||
<Nav></Nav>
|
||||
<Nav2 />
|
||||
|
||||
<div class="my-4 gente">
|
||||
<h1 class="text-center">Comité Editorial</h1>
|
||||
<div class="row">
|
||||
<div class="col-10 mx-auto">
|
||||
<p class="text-justify">
|
||||
En este apartado, se muestran los 17 miembros que componen el Comité
|
||||
Editorial de la Facultad de Estudios Superiores Acatlán, quienes, en
|
||||
apego a las normativas institucionales, establecen y regulan los
|
||||
procedimientos para la recepción, dictamen, selección, edición,
|
||||
impresión, difusión, promoción, almacenamiento, preservación,
|
||||
distribución y comercialización de sus publicaciones.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>Dr. Manuel Martínez Justo</p>
|
||||
<strong> Presidente del Comité Editorial</strong>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<p>Mtro. Fernando Martínez Ramírez</p>
|
||||
<strong> Secretario Ejecutivo del Comité Editorial</strong>
|
||||
</div>
|
||||
<div>
|
||||
<p>Mtra. Nora Goris Mayans</p>
|
||||
<strong> Secretaria General Académica</strong>
|
||||
</div>
|
||||
<div>
|
||||
<p>Dr. Alejandro Byrd Orozco</p>
|
||||
<strong>
|
||||
Secretario de Extensión Universitaria y Vinculación
|
||||
Institucional</strong
|
||||
>
|
||||
</div>
|
||||
<div>
|
||||
<p>Mtro. Carlos Nandayapa Hernández</p>
|
||||
<strong> Secretario de Estudios Profesionales</strong>
|
||||
</div>
|
||||
<div>
|
||||
<p>Dra. Laura Páez Díaz de León</p>
|
||||
<strong> Secretaria de Posgrado e Investigación</strong>
|
||||
</div>
|
||||
<div>
|
||||
<p>Lic. Verónica Puma Galicia</p>
|
||||
<strong> Coordinadora del Centro de Enseñanza de Idiomas</strong>
|
||||
</div>
|
||||
<div>
|
||||
<p>Lic. Jorge Reyes Caldera Arroyo</p>
|
||||
<strong> Jefe de la División de Ciencias Jurídicas</strong>
|
||||
</div>
|
||||
<div>
|
||||
<p>Dra. Claudia Márquez Díaz</p>
|
||||
<strong> Jefa de la División de Ciencias Socioeconómicas</strong>
|
||||
</div>
|
||||
<div>
|
||||
<p>Mtro. Rubén Juárez Santana</p>
|
||||
<strong> Jefe de la División de Diseño y Edificación</strong>
|
||||
</div>
|
||||
<div>
|
||||
<p>Mtra. María Luisa Morales Martínez</p>
|
||||
<strong> Jefa de la División de Humanidades</strong>
|
||||
</div>
|
||||
<div>
|
||||
<p>Act. Luz María Lavín Alanís</p>
|
||||
<strong> Jefa de la División de Matemáticas e Ingeniería</strong>
|
||||
</div>
|
||||
<div>
|
||||
<p>Lic. Aída Villalobos Sosa</p>
|
||||
<strong>
|
||||
Jefa de la División del Sistema Universidad Abierta y Educación a
|
||||
Distancia</strong
|
||||
>
|
||||
</div>
|
||||
<div>
|
||||
<p>D.G. Norma Guadalupe Rojas Borja</p>
|
||||
<strong> Secretaria de Actas</strong>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<p>Lic. Yareth Pérez Salgado</p>
|
||||
<strong>Jefa de la Unidad de la Oficina Jurídica</strong>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<p>Lic. Hugo Espinoza Rubio</p>
|
||||
<strong
|
||||
>Académico de la Facultad de Filosofía y Letras, UNAM / Miembro
|
||||
externo
|
||||
</strong>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<p>Dr. Gregorio Hernández Zamora</p>
|
||||
<strong
|
||||
>Académico de la Universidad Autónoma Metropolitana / Miembro
|
||||
externo</strong
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Footer></Footer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Header from "./../components/header.vue";
|
||||
import Nav from "./../components/nav.vue";
|
||||
import Nav2 from "./../components/nav2.vue";
|
||||
import Footer from "./../components/footer.vue";
|
||||
export default {
|
||||
components: {
|
||||
Header,
|
||||
Nav,
|
||||
Nav2,
|
||||
Footer
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.gente div {
|
||||
margin: 1rem 0px;
|
||||
}
|
||||
p {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
</style>
|
||||
@@ -1,143 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<Header></Header>
|
||||
<Nav></Nav>
|
||||
<Nav2 />
|
||||
<div class="row">
|
||||
<div class="my-5 col-10 offset-1">
|
||||
<h1 class="mb-4">Contáctanos</h1>
|
||||
<p class="text-justify">
|
||||
En caso de tener dudas sobre el catálogo de publicaciones de Ediciones
|
||||
Acatlán, los distintos puntos de venta, de nuestros procesos de
|
||||
publicación, o acerca del cuerpo colegiado editorial de la Facultad de
|
||||
Estudios Superiores Acatlán, favor de llenar los siguientes campos y
|
||||
te responderemos a la brevedad.
|
||||
</p>
|
||||
|
||||
<form class="my-5">
|
||||
<div class="form-group row">
|
||||
<div
|
||||
class="col-12 col-md-12 col-xl-7 col-lg-7 d-flex flex-column justify-content-around "
|
||||
>
|
||||
<div
|
||||
class="form-group row d-flex justify-content-between align-items-center"
|
||||
>
|
||||
<label for="formGroupExampleInput">Nombre</label>
|
||||
<div class="col-sm-8">
|
||||
<input
|
||||
type="text"
|
||||
class="form-control mb-4"
|
||||
id="formGroupExampleInput"
|
||||
v-model="nombre"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row d-flex justify-content-between">
|
||||
<label for="inputEmail3">Correo electrónico</label>
|
||||
<div class="col-sm-8">
|
||||
<input
|
||||
type="email"
|
||||
class="form-control"
|
||||
id="inputEmail3"
|
||||
v-model="correo"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-md-8 col-lg-8 col-xl-8 mx-auto mt-3">
|
||||
<div class="form-group">
|
||||
<label for="comment">Comentario</label>
|
||||
<textarea
|
||||
class="form-control"
|
||||
rows="5"
|
||||
id="comment"
|
||||
v-model="mensaje"
|
||||
></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<button
|
||||
class="btn btn-primary mt-5"
|
||||
@click="enviar()"
|
||||
v-show="nombre != '' && correo != '' && mensaje != ''"
|
||||
>
|
||||
Enviar
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Footer></Footer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Header from "./../components/header.vue";
|
||||
import Nav from "./../components/nav.vue";
|
||||
import Nav2 from "./../components/nav2.vue";
|
||||
import Footer from "./../components/footer.vue";
|
||||
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
import Swal from "sweetalert2";
|
||||
|
||||
export default {
|
||||
name: "contacto",
|
||||
components: {
|
||||
Header,
|
||||
Nav,
|
||||
Nav2,
|
||||
Footer
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
nombre: "",
|
||||
correo: "",
|
||||
mensaje: ""
|
||||
};
|
||||
},
|
||||
|
||||
methods: {
|
||||
async enviar() {
|
||||
if (this.nombre == "") return alert("falta agregar nombre");
|
||||
if (this.mensaje == "") return alert("falta agregar comentario");
|
||||
if (this.correo == "") return alert("falta agregar correo");
|
||||
|
||||
let arroba = 0;
|
||||
|
||||
for (let i = 0; i < this.correo.length; i++) {
|
||||
if (`${this.correo[i]}` === `@`) arroba = 1;
|
||||
}
|
||||
|
||||
if (!arroba) return alert("El correo no es valido");
|
||||
|
||||
await axios
|
||||
.post(`${config.api}/email`, {
|
||||
correo: this.correo,
|
||||
mensaje: this.mensaje,
|
||||
nombre: this.nombre
|
||||
})
|
||||
.then(function() {
|
||||
Swal.fire({
|
||||
icon: "success",
|
||||
title: "Correo enviado correctamente",
|
||||
timer: 2000
|
||||
});
|
||||
//console.log(response);
|
||||
})
|
||||
.catch(function(error) {
|
||||
Swal.fire({
|
||||
icon: "error",
|
||||
title: "Oops...",
|
||||
text: "hubo un error. Intentalo más tarde "
|
||||
});
|
||||
console.log(error);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
@@ -2,10 +2,9 @@
|
||||
<div>
|
||||
<Header />
|
||||
<Nav />
|
||||
<Nav2 />
|
||||
<!-- <div class="row">
|
||||
<div class="col-10 offset-1"> -->
|
||||
<Title title="Conoce más" class="mt-5" />
|
||||
<Title title="Conoce mas" class="mt-5" />
|
||||
<!-- </div>
|
||||
</div> -->
|
||||
<div class="container">
|
||||
@@ -23,7 +22,7 @@
|
||||
<div
|
||||
class="texto col-10 col-sm-5 col-md-5 col-lg-5 col-xl-5 d-flex align-items-center justify-content-center flex-column"
|
||||
>
|
||||
<h4>Descripción:</h4>
|
||||
<h4>Descripcion:</h4>
|
||||
<p class="scroll">
|
||||
{{ de.descrip }}
|
||||
</p>
|
||||
@@ -47,8 +46,7 @@
|
||||
|
||||
<script>
|
||||
import Header from "../components/header.vue";
|
||||
import Nav from "../components/nav.vue";
|
||||
import Nav2 from "../components/nav2.vue";
|
||||
import Nav from "../esteticas/nav.vue";
|
||||
import Footer from "../components/footer.vue";
|
||||
import Title from "../components/titulo.vue";
|
||||
|
||||
@@ -56,7 +54,6 @@ export default {
|
||||
components: {
|
||||
Header,
|
||||
Nav,
|
||||
Nav2,
|
||||
Footer,
|
||||
Title
|
||||
},
|
||||
@@ -74,7 +71,7 @@ export default {
|
||||
conseguir el resultado de las variables. En este sentido, los
|
||||
términos se distinguen o separan por medio de signos, y en el caso
|
||||
de estar separadas por el signo de igualdad se llama ecuación.`,
|
||||
video: "https://www.youtube.com/embed/CHR9xhkv8u8"
|
||||
video: "https://www.youtube.com/embed/gOsM-DYAEhY"
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
<div>
|
||||
<Header />
|
||||
<Nav />
|
||||
<Nav2 />
|
||||
<Carr />
|
||||
<Title title="Recientes" />
|
||||
<Cart />
|
||||
@@ -12,8 +11,8 @@
|
||||
|
||||
<script>
|
||||
import Header from "./../components/header.vue";
|
||||
import Nav from "./../components/nav.vue";
|
||||
import Nav2 from "./../components/nav2.vue";
|
||||
import Nav from "./../esteticas/nav.vue";
|
||||
//import Nav from "./../components/navPrincipal.vue";
|
||||
import Footer from "./../components/footer.vue";
|
||||
import Carr from "../components/carrusel.vue";
|
||||
import Cart from "../components/cartLibro.vue";
|
||||
@@ -24,7 +23,6 @@ export default {
|
||||
components: {
|
||||
Header,
|
||||
Nav,
|
||||
Nav2,
|
||||
Footer,
|
||||
Carr,
|
||||
Cart,
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
<div>
|
||||
<Header />
|
||||
<Nav />
|
||||
<Nav2 />
|
||||
|
||||
<Descrip />
|
||||
|
||||
@@ -12,8 +11,7 @@
|
||||
|
||||
<script>
|
||||
import Header from "./../components/header.vue";
|
||||
import Nav from "./../components/nav.vue";
|
||||
import Nav2 from "./../components/nav2.vue";
|
||||
import Nav from "./../components/navPrincipal.vue";
|
||||
import Descrip from "./../components/descripcion.vue";
|
||||
import Footer from "./../components/footer.vue";
|
||||
|
||||
@@ -22,7 +20,6 @@ export default {
|
||||
components: {
|
||||
Header,
|
||||
Nav,
|
||||
Nav2,
|
||||
Descrip,
|
||||
Footer
|
||||
}
|
||||
|
||||
@@ -1,78 +1,59 @@
|
||||
<template>
|
||||
<div>
|
||||
<Header />
|
||||
<h1 class="my-5">Inicia Sesión</h1>
|
||||
<div class="row d-flex justify-content-center">
|
||||
<div class="col-12 col-md-8 col-lg-6 col-xl-6">
|
||||
<form class="row d-flex justify-content-center">
|
||||
<input
|
||||
type="text"
|
||||
v-model="email"
|
||||
class="form-control col-8"
|
||||
name="login"
|
||||
placeholder="Usuario"
|
||||
/>
|
||||
<input
|
||||
type="password"
|
||||
v-model="password"
|
||||
class="form-control col-8 my-3"
|
||||
name="login"
|
||||
placeholder="Contraseña"
|
||||
/>
|
||||
<input
|
||||
type="button"
|
||||
@click="login"
|
||||
class="btn bg-primary text-white col-5"
|
||||
value="Ingresar"
|
||||
/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Header from "./../components/header.vue";
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
import Swal from 'sweetalert2'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
email: "",
|
||||
password: ""
|
||||
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
login() {
|
||||
const datos = {
|
||||
usuario: this.email,
|
||||
password: this.password
|
||||
}
|
||||
axios.post( `${config.api}/loginAdmin`, datos ).then(async response =>{
|
||||
localStorage.setItem('tokenPortal', response.data.token);
|
||||
await Swal.fire(
|
||||
'Bienvenido',
|
||||
'',
|
||||
'success'
|
||||
);
|
||||
this.$router.replace('/panelAdmin');
|
||||
|
||||
}).catch(() =>{
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'El usuario o la contraseña es incorrecta',
|
||||
text: `Intentalo de nuevo.`,
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
components: {
|
||||
Header
|
||||
},
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
<template>
|
||||
<div>
|
||||
<Header></Header>
|
||||
<h1 class="my-5">Inicia Sesion</h1>
|
||||
<div class="row d-flex justify-content-center">
|
||||
<div class="col-12 col-md-8 col-lg-6 col-xl-6">
|
||||
<form class="row d-flex justify-content-center">
|
||||
<input
|
||||
type="text"
|
||||
v-model="data.email"
|
||||
id="login"
|
||||
class="form-control col-8"
|
||||
name="login"
|
||||
placeholder="Usuario"
|
||||
/>
|
||||
<input
|
||||
type="password"
|
||||
v-model="data.password"
|
||||
id="password"
|
||||
class="form-control col-8 my-3"
|
||||
name="login"
|
||||
placeholder="Contraseña"
|
||||
/>
|
||||
<input
|
||||
type="button"
|
||||
@click="login"
|
||||
class="btn bg-primary text-white col-5"
|
||||
value="Ingresar"
|
||||
/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Header from "./../components/header.vue";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
data: {
|
||||
email: "",
|
||||
password: ""
|
||||
}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
login() {
|
||||
alert(this.data.email);
|
||||
}
|
||||
},
|
||||
components: {
|
||||
Header
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<Header />
|
||||
<b-row>
|
||||
<b-col cols="2" style="background-color: #bb8800;" class="p-0 m-0">
|
||||
<div class="p-0 m-0">
|
||||
<NavAdmin v-bind:user="usuario"/>
|
||||
</div>
|
||||
</b-col>
|
||||
<b-col cols="10">
|
||||
<b-row v-if="this.$store.state.selectNav=='EditarBanner'">
|
||||
<EditarBanner />
|
||||
</b-row>
|
||||
<b-row v-if="this.$store.state.selectNav=='EditarLibro'">
|
||||
<EditarLibro />
|
||||
</b-row>
|
||||
<b-row v-if="this.$store.state.selectNav=='AgregarLibro'">
|
||||
<AgregarLibro />
|
||||
</b-row>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<Footer />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Header from "./../components/header.vue";
|
||||
import Footer from "./../components/footer.vue";
|
||||
import EditarLibro from './../components/editarLibro.vue';
|
||||
import EditarBanner from './../components/editarBanner.vue';
|
||||
import AgregarLibro from './../components/agregarLibro.vue';
|
||||
import NavAdmin from './../components/navAdmin.vue';
|
||||
import axios from "axios";
|
||||
import config from "../config/config.js";
|
||||
import Swal from 'sweetalert2'
|
||||
export default {
|
||||
name: "panelAdmin",
|
||||
components: {
|
||||
Header,
|
||||
Footer,
|
||||
EditarLibro,
|
||||
NavAdmin,
|
||||
EditarBanner,
|
||||
AgregarLibro
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
usuario: ""
|
||||
|
||||
};
|
||||
},
|
||||
beforeCreate(){
|
||||
let token = localStorage.getItem('tokenPortal');
|
||||
console.log(token);
|
||||
if(token === null) this.$router.replace('/login');
|
||||
axios.post( `${config.api}/checkToken`, {token: token}, {
|
||||
headers: {
|
||||
authorization: 'Bearer ' + token,
|
||||
}}).then(async response =>{
|
||||
console.log('lo que responde', response.data.datos.user.user);
|
||||
this.usuario = response.data.datos.user.user;
|
||||
}).catch(async (error) =>{
|
||||
console.log(error);
|
||||
await Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'La sesión ha expirado',
|
||||
text: `Ingrese de nuevo.`,
|
||||
});
|
||||
this.$router.replace('/login')
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<style scoped>
|
||||
.divMaster {
|
||||
height: auto;
|
||||
}
|
||||
</style>
|
||||
@@ -1,126 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<Header></Header>
|
||||
<Nav></Nav>
|
||||
<Nav2 />
|
||||
<div>
|
||||
<h1 class="my-4">Presentación</h1>
|
||||
<div class="row presentacion">
|
||||
<div class="col-10 offset-1 text-justify mb-5">
|
||||
<p>
|
||||
Bienvenido/a al Portal Editorial de la Facultad de Estudios
|
||||
Superiores Acatlán, el sitio en línea que presenta todo tópico
|
||||
relacionado con la publicación y difusión de los materiales del
|
||||
sello Ediciones Acatlán.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Desarrollada por la Unidad del Centro de Desarrollo Tecnológico y la
|
||||
Unidad de Servicios Editoriales, ambas pertenecientes a la
|
||||
Coordinación de Servicios Académicos, esta plataforma fue creada
|
||||
para dar a conocer el catálogo de publicaciones emanadas de esta
|
||||
entidad multidisciplinaria.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Actualmente, En atención al Programa Estratégico 3. Facultad del
|
||||
Siglo XXI, del Plan de Desarrollo Institucional 2017-2021 de la
|
||||
Facultad de Estudios Superiores Acatlán, en el cual, mediante la
|
||||
línea de acción 3.2. Modernización de la gestión, se establece la
|
||||
actualización del portal editorial de la Facultad, la Coordinación
|
||||
de Servicios Académicos, a través de las áreas ya enunciadas, tiene
|
||||
en desarrollo dos proyectos: la Tienda Virtual Acatlán y el Portal
|
||||
Editorial de Ediciones Acatlán.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
El primero de los proyectos, la Tienda Virtual Acatlán, es la
|
||||
plataforma destinada a la venta de las publicaciones de Ediciones
|
||||
Acatlán, habilitada desde el mes de marzo del presente año (véase
|
||||
Puntos de Venta).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
El segundo de ellos, el Portal Editorial, tiene el objetivo de
|
||||
difundir toda aquella información relacionada con los procesos y
|
||||
cuerpos colegiados en materia editorial, establecer vínculos con la
|
||||
comunidad universitaria interesada en la publicación de materiales y
|
||||
en la promoción de la labor intelectual de los académicos de la
|
||||
Facultad de Estudios Superiores Acatlán.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
En ese sentido, quien navegue en esta plataforma podrá conocer el
|
||||
catálogo de publicaciones emanadas de la labor académica e
|
||||
intelectual de la planta docente de esta entidad multidisciplinaria.
|
||||
De igual manera, tendrá a su disposición los lineamientos
|
||||
editoriales y la información concerniente al proceso de publicación
|
||||
así como las distintas partes institucionales involucradas. Por otra
|
||||
parte, en caso de desear adquirir alguno de los títulos que ofrece
|
||||
el sello editorial de Acatlán, están disponibles los datos de la
|
||||
Tienda Virtual Acatlán y la Librería Universitaria, para compra de
|
||||
libros en línea o de manera presencial, respectivamente.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
De manera complementaria, la publicación, difusión, distribución y
|
||||
venta de nuestros libros se hacen mediante diversas estrategias que
|
||||
buscan involucrar a otras instancias universitarias e, incluso, a
|
||||
editoras externas a la Universidad:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Puntos de venta: Se pueden adquirir títulos de Ediciones Acatlán
|
||||
de forma presencial y en línea. Para conocer más, favor de
|
||||
dirigirse al apartado «Puntos de Venta»
|
||||
</li>
|
||||
<li>
|
||||
Presencia de eventos culturales: En aras de compartir las
|
||||
novedades editoriales de nuestra entidad, se ha buscado tener
|
||||
presencia en eventos nacionales que promuevan la lectura y la
|
||||
cultura del libro. Tal es el caso de la Feria Internacional del
|
||||
Libro del Palacio de Minería.
|
||||
</li>
|
||||
<li>
|
||||
Coediciones: En el caso de que una editorial universitaria o de
|
||||
otro ámbito desee publicar con la FES Acatlán, bajo el seguimiento
|
||||
de las instancias correspondientes, se puede gestionar la firma de
|
||||
un contrato de coedición, mediante el cual se acordarían cómo
|
||||
apoyaría en la edición y distribución cada una de las entidades
|
||||
involucradas.
|
||||
</li>
|
||||
<li>
|
||||
Venta interinstitucional: Por medio de la firma de una Bases de
|
||||
Colaboración Interinstitucional, la FES Acatlán puede colocar a la
|
||||
venta su producción editorial en otras instancias de la UNAM, y
|
||||
viceversa.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
De tener alguno duda sobre lo anterior, favor de dirigirse al
|
||||
apartado de Contacto.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Footer></Footer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Header from "./../components/header.vue";
|
||||
import Nav from "./../components/nav.vue";
|
||||
import Nav2 from "./../components/nav2.vue";
|
||||
import Footer from "./../components/footer.vue";
|
||||
export default {
|
||||
components: {
|
||||
Header,
|
||||
Nav,
|
||||
Nav2,
|
||||
Footer
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
@@ -1,151 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<Header></Header>
|
||||
<Nav></Nav>
|
||||
<Nav2 />
|
||||
|
||||
<div>
|
||||
<div class="row">
|
||||
<div class="col-10 offset-1 mb-5">
|
||||
<h1 class="my-4">Puntos de Venta</h1>
|
||||
|
||||
<p class="mb-4">
|
||||
La venta y difusión de las publicaciones de Ediciones Acatlán se
|
||||
llevan a cabo a partir de cuatro maneras. En caso de que desee
|
||||
adquirir alguna de las publicaciones emanadas de esta entidad
|
||||
multidisciplinaria, podría hacer a través de los puntos que se
|
||||
enlistan continuación:
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Title title="Compra presencial" />
|
||||
<div class=" row marcos">
|
||||
<div class="col-12 offset-0 mb-5 d-flex">
|
||||
<div
|
||||
class="col-12 offset-0 d-flex flex-wrap justify-content-center align-items-center px-0"
|
||||
>
|
||||
<Enlace
|
||||
class="enlaces w-auto my-3"
|
||||
v-for="link in Links"
|
||||
:key="link.id"
|
||||
v-show="link.mode == 'presencial'"
|
||||
:linkW="link.linkW"
|
||||
:linkD="link.linkD"
|
||||
:img="link.img"
|
||||
:text="link.text"
|
||||
:title="link.title"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Title title="Compra en Línea" />
|
||||
<div class=" row marcos">
|
||||
<div class="col-12 offset-0 mb-5 d-flex">
|
||||
<div
|
||||
class="col-12 offset-0 d-flex flex-wrap justify-content-center align-items-center px-0"
|
||||
>
|
||||
<Enlace
|
||||
class="enlaces w-auto my-3"
|
||||
v-for="link in Links"
|
||||
:key="link.id"
|
||||
v-show="link.mode == 'linea'"
|
||||
:linkW="link.linkW"
|
||||
:linkD="link.linkD"
|
||||
:img="link.img"
|
||||
:text="link.text"
|
||||
:title="link.title"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Footer></Footer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Header from "./../components/header.vue";
|
||||
import Nav from "./../components/nav.vue";
|
||||
import Nav2 from "./../components/nav2.vue";
|
||||
import Footer from "./../components/footer.vue";
|
||||
import Enlace from "./../components/enlace.vue";
|
||||
import Title from "../components/titulo.vue";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
Header,
|
||||
Nav,
|
||||
Nav2,
|
||||
Footer,
|
||||
Enlace,
|
||||
Title
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
Links: [
|
||||
{
|
||||
id: 0,
|
||||
title: "Librería Universitaria",
|
||||
text:
|
||||
"Ubicada en las instalaciones de la FES Acatlán, para la adquisición de publicaciones impresas, tanto de nuestro sello como de otras editoriales.",
|
||||
img: "assets/puntos/LIBRERÍA-ACATLÁN.png",
|
||||
linkW: "",
|
||||
linkD: "",
|
||||
mode: "presencial"
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
title: "Tienda Virtual Acatlán",
|
||||
text:
|
||||
"Plataforma que soporta ventas en línea (obras impresas), de reciente habilitación.",
|
||||
img: "assets/puntos/logotienda.png",
|
||||
linkW: "https://tienda.acatlan.unam.mx/",
|
||||
linkD: "",
|
||||
mode: "linea"
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: "Librería Ambulante",
|
||||
text:
|
||||
"Extensión de la Librería Universitaria que, de manera presencial, acude a los eventos institucionales con publicaciones de temas afines a éstos.",
|
||||
img: "assets/puntos/LIBRERÍA-ACATLÁN-ambulante.png",
|
||||
linkW: "",
|
||||
linkD: "",
|
||||
mode: "presencial"
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
title: "Libros UNAM",
|
||||
text:
|
||||
"Plataforma en línea de la Universidad Nacional Autónoma de México, mediante la cual se pueden adquirir todas las publicaciones (impresas y electrónicas) de todas las dependencias editoras.",
|
||||
img: "assets/puntos/libros-unam.png",
|
||||
linkW: "http://www.libros.unam.mx/",
|
||||
linkD: "",
|
||||
mode: "linea"
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
.lugares li {
|
||||
margin: 1rem 0;
|
||||
}
|
||||
.marcos div p {
|
||||
text-align: left;
|
||||
}
|
||||
.marcos div a {
|
||||
text-decoration: none;
|
||||
|
||||
text-align: left;
|
||||
margin: 0.5rem 0;
|
||||
}
|
||||
.marcos div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,121 @@
|
||||
<template>
|
||||
<div>
|
||||
<Header></Header>
|
||||
<Nav></Nav>
|
||||
|
||||
<!-- <div class="wrapper">
|
||||
<div class="card" v-bind:key="post.id" v-for="post in filteredList">
|
||||
<a v-bind:href="post.link" ta rget="_blank">
|
||||
<img v-bind:src="post.img" width="45px" />
|
||||
<small>posted by: {{ post.title }}</small>
|
||||
{{ post.title }}
|
||||
</a>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div class="search-wrapper m-4">
|
||||
<input type="text" v-model="searchProp" placeholder="buscar libro" />
|
||||
</div>
|
||||
<div v-if="searchProp">
|
||||
<Title title="Resultados" />
|
||||
|
||||
<div class="divMaster row mb-5">
|
||||
<div class="col-10 offset-1 d-flex flex-wrap justify-content-center">
|
||||
<div
|
||||
class="card m-3"
|
||||
style="width: 12rem;"
|
||||
v-bind:key="post.id"
|
||||
v-for="post in ListaFiltrada"
|
||||
>
|
||||
<router-link :to="{ path: 'home' }" class="textt">
|
||||
<img :src="post.img" class="card-img-top rounded" alt="libro" />
|
||||
<div class="card-body cd textt">
|
||||
<p class="card-text textt">
|
||||
{{ post.title }}
|
||||
</p>
|
||||
</div>
|
||||
</router-link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<h1>Ingresa un Titulo en el buscador</h1>
|
||||
</div>
|
||||
|
||||
<Footer></Footer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Header from "./../components/header.vue";
|
||||
import Nav from "./../esteticas/nav.vue";
|
||||
//import Nav from "./../components/navPrincipal.vue";
|
||||
import Footer from "./../components/footer.vue";
|
||||
import Title from "../components/titulo.vue";
|
||||
|
||||
export default {
|
||||
props: ["searchProp"],
|
||||
components: {
|
||||
Header,
|
||||
Nav,
|
||||
Footer,
|
||||
Title
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
search: "",
|
||||
postLista: [
|
||||
{
|
||||
id: 0,
|
||||
title: "titu",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 0,
|
||||
title: "papa",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 0,
|
||||
title: "titu2",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
},
|
||||
{
|
||||
id: 0,
|
||||
title: "he",
|
||||
img:
|
||||
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg"
|
||||
}
|
||||
]
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
ListaFiltrada() {
|
||||
return this.postLista.filter(post => {
|
||||
return post.title.toLowerCase().includes(this.searchProp.toLowerCase());
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.divMaster {
|
||||
height: auto;
|
||||
}
|
||||
.card {
|
||||
border: none !important;
|
||||
border-bottom: 5px solid #1b3d70 !important;
|
||||
}
|
||||
a {
|
||||
text-decoration: none !important;
|
||||
color: black;
|
||||
}
|
||||
.ver {
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
||||
@@ -1,31 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<Header />
|
||||
<Nav />
|
||||
<Nav2 />
|
||||
<Title title="Resultado" class="my-5" />
|
||||
<Cart />
|
||||
<Footer />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Header from "./../components/header.vue";
|
||||
import Nav from "./../components/nav.vue";
|
||||
import Nav2 from "./../components/nav2.vue";
|
||||
import Footer from "./../components/footer.vue";
|
||||
import Cart from "../components/temaLibro.vue";
|
||||
import Title from "../components/titulo.vue";
|
||||
|
||||
export default {
|
||||
name: "home",
|
||||
components: {
|
||||
Header,
|
||||
Nav,
|
||||
Nav2,
|
||||
Footer,
|
||||
Cart,
|
||||
Title
|
||||
}
|
||||
};
|
||||
</script>
|
||||
@@ -1,3 +0,0 @@
|
||||
module.exports = {
|
||||
publicPath: "./"
|
||||
};
|
||||