3 Commits

Author SHA1 Message Date
danielGe c0abcda7d3 act 2020-08-05 23:12:36 -05:00
danielGe efadb88b56 actualizado con pruebas 2020-08-05 23:02:37 -05:00
danielGe 55dbe8ab32 principal 2020-08-05 22:55:07 -05:00
104 changed files with 11912 additions and 20543 deletions
+14 -14
View File
@@ -1,14 +1,14 @@
module.exports = {
root: true,
env: {
node: true
},
extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
parserOptions: {
parser: "babel-eslint"
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off"
}
};
module.exports = {
root: true,
env: {
node: true
},
extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
parserOptions: {
parser: "babel-eslint"
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off"
}
};
+1
View File
@@ -1,5 +1,6 @@
.DS_Store
node_modules
/dist
# local env files
.env.local
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 902 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

-1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

-1
View File
@@ -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>
-2
View File
File diff suppressed because one or more lines are too long
-1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+11539 -12484
View File
File diff suppressed because it is too large Load Diff
+28 -36
View File
@@ -1,36 +1,28 @@
{
"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.0",
"core-js": "^3.6.5",
"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"
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 902 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

+20 -17
View File
@@ -1,17 +1,20 @@
<!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.0">
<link rel="shortcut icon" type="image/png" href="assets/icono.png">
<title>Portal Editorial Acatlán</title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<!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.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.1/js/bootstrap.min.js" integrity="sha384-XEerZL0cuoUbHE4nZReLT7nx9gQrQreJekYhJD9WNWhH8nEW+0c5qq7aIo2Wl30J" crossorigin="anonymous"></script>
</body>
</html>
+41 -33
View File
@@ -1,33 +1,41 @@
<template>
<div id="app">
<router-view></router-view>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
padding: 0;
margin: 0;
}
.row {
margin: 0 !important;
}
.card-img-top {
height: 18rem;
}
</style>
<template>
<div id="app">
<Header />
<Nav />
<router-view></router-view>
<Footer />
</div>
</template>
<script>
import Header from "./esteticas/header.vue";
import Footer from "./esteticas/footer.vue";
import Nav from "./esteticas/nav.vue";
export default {
name: "App",
components: {
Header,
Footer,
Nav
}
};
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
padding: 0;
margin: 0;
}
.row {
margin: 0 !important;
}
</style>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 902 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

-279
View File
@@ -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>
-81
View File
@@ -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>
-87
View File
@@ -1,87 +0,0 @@
<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>
-91
View File
@@ -1,91 +0,0 @@
<template>
<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)"
>
<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 {
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`);
}
}
} catch (error) {
console.log(`Ocurrio un error ${error}`);
}
}
};
</script>
<style scoped>
.divMaster {
height: auto;
}
.card {
border: none !important;
border-bottom: 5px solid #1b3d70 !important;
}
a {
text-decoration: none !important;
color: black;
}
</style>
-355
View File
@@ -1,355 +0,0 @@
<template>
<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 />
<div class="container">
<div class="row izq">
<b style="font-size: 18px;" class="izq">Compartir</b><br />
</div>
<div class="container izq">
<a href="https://www.facebook.com/" class="img"
><img
style="width: 45px; height: 45px"
src="../assets/facebook.png"
alt="Facebook"
/></a>
<a href="https://www.instagram.com/" class="img"
><img
style="width: 45px; height: 45px"
src="../assets/Instagram.png"
alt="Instagram"
/></a>
<a href="https://www.youtube.com/" class="img"
><img
style="width: 45px; height: 45px"
src="../assets/YouTube.png"
alt="Youtube"
/></a>
</div>
</div>
</div>
<div class="col-md-6 col-sm-12 py-5 titulo">
<b>Titulo:</b>
<p>{{ titulo }}</p>
<b>Autor: </b>
<p>{{ autor }}</p>
<b>Paginas: </b>
<p>{{ paginas }}</p>
<b>ISBN: </b>
<p>{{ isbn }}</p>
<b>Año de Impresión: </b>
<p>{{ edicion }}</p>
<b>Precio: </b>
<p>{{ precio }}</p>
<b>Versión:</b>
<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>
</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="card m-3"
style="width: 12rem;"
v-bind:key="libro.id"
v-for="libro in Libros"
@click="descripcion(libro.id)"
>
<div 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>
</div>
</div>
</div>
</div>
</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}`);
}
}
} 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;
}
.card {
border: none !important;
border-bottom: 5px solid #1b3d70 !important;
}
a {
text-decoration: none !important;
color: black;
}
.img {
margin-left: 1rem;
margin-top: 1rem;
}
.izq {
display: flex;
justify-content: flex-start;
}
.button {
background-color: rgb(187, 136, 0);
border: none;
color: white;
height: 4.5rem;
width: 15rem;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 1.5rem;
border-radius: 1rem;
-webkit-transition-duration: 0.4s; /* Safari */
transition-duration: 0.4s;
box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
margin-top: 2rem;
}
.button:hover {
background-color: #46c200;
color: white;
}
.pre {
background-color: #1e3c70;
}
.pre:hover {
background-color: rgb(187, 136, 0);
}
.titulo {
font-size: 1rem;
text-align: left;
color: balck;
}
p {
margin-bottom: 0.5rem;
}
.libro {
width: 320px;
height: 480px;
margin-right: auto;
box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.57);
}
@media (max-width: 450px) {
.libro {
width: 270px;
height: 380px;
margin-right: auto;
box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.57);
}
.button {
text-align: center;
margin-top: 3rem;
}
}
@media screen and (max-width: 380px) {
.button {
text-align: center;
margin-top: 3rem;
}
}
</style>
-156
View File
@@ -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>
-182
View File
@@ -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>
-56
View File
@@ -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>
-65
View File
@@ -1,65 +0,0 @@
<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>
<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>
</div>
</template>
<style>
.divMaster {
height: 7em;
margin: 0 auto;
}
.azulUnam {
background-color: #1e3c70;
}
.sizeImg {
height: 5rem;
}
.logo_acatlan_resp {
display: none !important;
}
@media (max-width: 450px) {
.logo_acatlan,
.logo_unam {
display: none !important;
}
.logo_acatlan_resp {
display: block !important;
}
.logo_acatlan_resp a img {
height: 5rem;
}
}
</style>
+5
View File
@@ -0,0 +1,5 @@
<template>
<div>
<h1>esta es la pagina home</h1>
</div>
</template>
View File
-333
View File
@@ -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>
-343
View File
@@ -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>
-220
View File
@@ -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>
-102
View File
@@ -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>
-97
View File
@@ -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>
-45
View File
@@ -1,45 +0,0 @@
<template>
<div class="divMaster">
<div class="row">
<div class="col-10 offset-1 bor d-flex justify-content-center">
<div class="bgAzul">
<p class="text-white pTitulo">{{ title }}</p>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
props: ["title"]
};
</script>
<style>
.bor {
border: none !important;
border-bottom: 5px solid #1b3d70 !important;
}
.bgAzul {
background-color: #1b3d70;
width: 40%;
border-top-right-radius: 20px 20px !important;
border-top-left-radius: 20px 20px !important;
}
.pTitulo {
margin: 0;
font-size: 30px;
}
@media screen and (max-width: 450px) {
.pTitulo {
font-size: 20px;
padding: 0px 3px;
}
.bgAzul {
width: 60%;
}
}
</style>
-14
View File
@@ -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;
@@ -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
@@ -68,3 +87,4 @@ export default {};
}
}
</style>
>>>>>>> pruebas
+64
View File
@@ -0,0 +1,64 @@
<template>
<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_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>
</container>
</template>
<style >
.divMaster {
height: 7em;
/* max-width: 1280px; */
height: 7em;
color: #1e3c70;
}
.sizeImg {
height: 5rem;
}
.logo_acatlan_resp {
display: none !important;
}
@media (max-width: 450px) {
.logo_acatlan,
.logo_unam {
display: none !important;
}
.logo_acatlan_resp {
display: block !important;
}
.logo_acatlan_resp a img {
height: 5rem;
e>
+156
View File
@@ -0,0 +1,156 @@
<template>
<div class="divMaster doradoUnam row">
<div class="col-10 offset-1">
<nav class="navbar navbar-expand-sm navbar-light ">
<button
class="navbar-toggler"
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>
</button>
<div class="collapse navbar-collapse" id="navbarTogglerDemo02">
<ul class="navbar-nav mr-auto 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 ">
<a
class="nav-link dropdown-toggle text-white "
id="navbarDropdown"
role="button"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
href="#"
>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>
</li>
<li class="nav-item">
<a class="nav-link text-white" href="#">Difusion Editorial</a>
</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>
</nav>
</div>
</div>
</template>
<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;
}
.blanco {
color: white !important;
}
.dropdown-item:hover {
background-color: #bb8800;
}
.nav-link:focus {
background-color: #1e3c70;
}
.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 {
display: block;
}
}
</style>
+19 -38
View File
@@ -1,38 +1,19 @@
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/dist/css/bootstrap.css";
Vue.config.productionTip = false;
import VueRouter from "vue-router";
import { routes } from "./routes";
Vue.use(VueRouter);
const router = new VueRouter({
routes
});
new Vue({
el: "#app",
render: h => h(App),
router
});
+4 -26
View File
@@ -1,28 +1,6 @@
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 Form from "./components/home.vue";
import Login from "./components/login.vue";
export const routes = [
{ path: "/", component: home, name: "/" },
{ path: "/home", component: home, name: "home" },
{ 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: "/", component: Form, name: "form" },
{ path: "/panelAdmin", component: Login, name: "Login" }
];
-133
View File
@@ -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>
-143
View File
@@ -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>
-100
View File
@@ -1,100 +0,0 @@
<template>
<div>
<Header />
<Nav />
<Nav2 />
<!-- <div class="row">
<div class="col-10 offset-1"> -->
<Title title="Conoce más" class="mt-5" />
<!-- </div>
</div> -->
<div class="container">
<div class="row my-5" v-bind:key="de.id" v-for="de in des">
<div class="titulo col-12 mb-5">
<h1>{{ de.titulo }}</h1>
</div>
<div class="libro col-10 col-sm-5 col-md-5 col-lg-5 col-xl-5 offset-1">
<img
:src="de.img"
class=" figure-img img-fluid rounded"
alt="libro"
/>
</div>
<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>
<p class="scroll">
{{ de.descrip }}
</p>
</div>
<div class="video col-12 d-flex my-4 justify-content-center">
<iframe
width="560"
height="315"
:src="de.video"
frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
></iframe>
</div>
</div>
</div>
<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 Title from "../components/titulo.vue";
export default {
components: {
Header,
Nav,
Nav2,
Footer,
Title
},
data() {
return {
des: [
{
id: 0,
titulo: "Algebra lineal productos internos y teoremas de estructura",
img:
"https://edit.org/img/blog/xwdn-editar-portadas-de-libros-gratis.jpg.pagespeed.ic.PmNhyGc59r.jpg",
descrip: ` Los 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.`,
video: "https://www.youtube.com/embed/CHR9xhkv8u8"
}
]
};
}
};
</script>
<style>
.imgLibro {
height: 600px;
}
.scroll {
width: 100%;
height: 60%;
overflow: auto;
}
@media (max-width: 400px) {
.scroll {
height: 90%;
}
}
</style>
-34
View File
@@ -1,34 +0,0 @@
<template>
<div>
<Header />
<Nav />
<Nav2 />
<Carr />
<Title title="Recientes" />
<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 Carr from "../components/carrusel.vue";
import Cart from "../components/cartLibro.vue";
import Title from "../components/titulo.vue";
export default {
name: "home",
components: {
Header,
Nav,
Nav2,
Footer,
Carr,
Cart,
Title
}
};
</script>
-30
View File
@@ -1,30 +0,0 @@
<template>
<div>
<Header />
<Nav />
<Nav2 />
<Descrip />
<Footer />
</div>
</template>
<script>
import Header from "./../components/header.vue";
import Nav from "./../components/nav.vue";
import Nav2 from "./../components/nav2.vue";
import Descrip from "./../components/descripcion.vue";
import Footer from "./../components/footer.vue";
export default {
name: "App",
components: {
Header,
Nav,
Nav2,
Descrip,
Footer
}
};
</script>
File diff suppressed because it is too large Load Diff
-78
View File
@@ -1,78 +0,0 @@
<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>
-82
View File
@@ -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>
-126
View File
@@ -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>

Some files were not shown because too many files have changed in this diff Show More