37 Commits

Author SHA1 Message Date
Arturo 95e8190954 eliminar 2020-03-12 17:10:50 -06:00
arturo 69342e397c npm run build 2020-03-02 12:30:37 -06:00
arturo d9868a936e arreglo 2020-03-02 12:07:11 -06:00
Arturo 55b52aa4a2 npm run build 2020-02-28 18:09:22 -06:00
Arturo 29616c7bf2 npm run build 2020-02-28 17:44:31 -06:00
arturo Guerrero 7620221c0c npm run build 2019-10-21 20:09:26 +00:00
arturo Guerrero 608f47269e hora de entrega arquitectura 2019-10-21 20:06:44 +00:00
arturo Guerrero ace17efc0a cambios pcpuma mal arqui hora 2019-10-15 15:57:41 -05:00
arturo Guerrero 5425b8d772 cambios de ip pcpuma mal arqui 2019-10-15 15:51:11 -05:00
arturo Guerrero 3289307eb8 cambios de ip pcpuma 2019-10-15 15:49:20 -05:00
arturo Guerrero d7d5bba358 npm run buil arqui 2019-10-15 15:42:13 -05:00
arturo Guerrero 50510dfbc9 cambios panel por kiokso arqui 2019-10-15 15:41:09 -05:00
arturo Guerrero d95713388c npm run build 2019-09-10 15:32:56 -05:00
arturo Guerrero ecd542f485 fix quitar huella , add borrar multa , fix actualizar equipo 2019-09-10 15:24:16 -05:00
arturo guerrero 15a11e2f83 -npm run build arqui 2019-09-04 16:19:38 -05:00
arturo guerrero 1103e4a080 -arreglo de devolucion 2019-09-04 16:18:47 -05:00
arturo guerrero 4c3851847c npm run buil arqui 2019-09-04 14:35:56 -05:00
arturo guerrero 4cc5762a1a npm run build arqui 2019-09-04 13:50:58 -05:00
arturo guerrero e569d7cdfa forzar y borrar huella 2019-09-04 12:55:24 -05:00
arturo guerrero 89f72f5da2 npm run build 2019-09-02 10:43:16 -05:00
arturo guerrero 395932e710 arreglo de el contador y actualizacion de equipos 2019-09-02 10:41:13 -05:00
arturo guerrero 53608cc049 cuenta de equipos 2019-08-22 16:46:35 -05:00
arturo guerrero 198d9ad582 hora a las 8 okay 2019-08-21 18:58:29 -05:00
arturo guerrero 4e6eaae79f cambio okay horas 2019-08-21 18:44:36 -05:00
arturo guerrero 469072b5f1 fix del fix de la imagen del fix x2 2019-08-15 16:39:50 -05:00
arturo guerrero f0226a68ac fix del fix de la imagen 2019-08-15 16:37:20 -05:00
arturo guerrero 3839f21b63 fix hora regreso 2019-08-15 16:31:42 -05:00
arturo guerrero 60d5a74ba9 arqui 2 2019-08-13 16:22:07 -05:00
arturo guerrero 6d43bb7434 version arqui 2019-08-13 16:18:48 -05:00
arturo guerrero a38221d276 arreglo operador kiosko 2019-08-12 12:47:44 -05:00
arturo guerrero 3ec3dd9dc2 empieza pcpuma 2019-08-11 23:04:51 -05:00
arturo guerrero d2edb6cca0 npm run build 2019-08-07 17:17:44 -05:00
arturo guerrero 313025c9db api con todos los servicios basicos integrados 2019-08-07 16:27:39 -05:00
arturo guerrero e78ecfaf40 npm run build 2019-08-02 17:52:55 -05:00
arturo guerrero afa00972b8 devolucion ok 2019-08-02 17:51:07 -05:00
arturo guerrero c5b7be9bbf devolucion y prestamo 2019-08-01 02:47:08 -05:00
arturo guerrero 6113b7bb40 usuario okay 2019-07-19 22:40:38 -05:00
38 changed files with 5398 additions and 4170 deletions
+15 -3
View File
@@ -1,4 +1,16 @@
{
"extends": "standard",
"plugins": ["html"]
}
"extends": ["plugin:vue/recommended"],
"rules": {
"no-new":0
},
"parserOptions": {
"parser": "babel-eslint",
"ecmaVersion": 2017,
"sourceType": "module"
},
"env": {
"node": true,
"es6": true
},
"plugins" : ["vue" ,"pug"]
}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

-5
View File
File diff suppressed because one or more lines are too long
+3
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
<!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=icon href=/favicon.ico><title>PC Puma</title><link href=/css/app.1e573269.css rel=preload as=style><link href=/css/chunk-vendors.3c3429cd.css rel=preload as=style><link href=/js/app.ec36c8d6.js rel=preload as=script><link href=/js/chunk-vendors.0df2aad7.js rel=preload as=script><link href=/css/chunk-vendors.3c3429cd.css rel=stylesheet><link href=/css/app.1e573269.css rel=stylesheet></head><body><noscript><strong>We're sorry but pcpuma-front doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=/js/chunk-vendors.0df2aad7.js></script><script src=/js/app.ec36c8d6.js></script></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"><link rel=icon href=/favicon.ico><title>PC Puma</title><link href=/css/app.8ceb5ff7.css rel=preload as=style><link href=/css/chunk-vendors.186c47a3.css rel=preload as=style><link href=/js/app.d37a0421.js rel=preload as=script><link href=/js/chunk-vendors.f2010bb3.js rel=preload as=script><link href=/css/chunk-vendors.186c47a3.css rel=stylesheet><link href=/css/app.8ceb5ff7.css rel=stylesheet></head><body><noscript><strong>We're sorry but pcpuma-front doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=/js/chunk-vendors.f2010bb3.js></script><script src=/js/app.d37a0421.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
-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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4729 -3709
View File
File diff suppressed because it is too large Load Diff
+7 -3
View File
@@ -18,26 +18,30 @@
"bulma": "^0.7.2",
"bulma-extensions": "^4.0.1",
"i": "^0.3.6",
"luxon": "^1.17.2",
"npm": "^6.4.1",
"sweetalert": "^2.1.2",
"vue": "^2.5.17",
"vue-router": "^3.0.1",
"vue2-animate": "^2.1.0",
"vuejs-datepicker": "^1.5.4"
"vuejs-datepicker": "^1.5.4",
"vuex": "^3.1.1"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.1.1",
"@vue/cli-plugin-eslint": "^3.1.1",
"@vue/cli-service": "^3.1.1",
"babel-eslint": "^10.0.1",
"eslint": "^5.8.0",
"eslint": "^5.16.0",
"eslint-config-standard": "^12.0.0",
"eslint-loader": "^2.2.1",
"eslint-plugin-html": "^4.0.6",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^8.0.0",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-pug": "^1.1.1",
"eslint-plugin-standard": "^4.0.0",
"eslint-plugin-vue": "^5.0.0-0",
"eslint-plugin-vue": "^5.2.3",
"node-sass": "^4.9.4",
"pug": "^2.0.3",
"pug-plain-loader": "^1.0.0",
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

+2 -1
View File
@@ -12,7 +12,8 @@
<body>
<noscript>
<strong>We're sorry but pcpuma-front doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
<strong>We're sorry but pcpuma-front doesn't work properly without JavaScript enabled. Please enable it to
continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
+7 -7
View File
@@ -1,20 +1,20 @@
<template lang="pug">
#app
um-header(v-if="!['login'].includes($route.name)")
um-header(v-if="!['login','blacklist'].includes($route.name)")
transition(name="router-anim" enter-active-class="animated slideInLeft")
router-view
</template>
<script>
import UmFooter from './layout/Footer.vue'
import UmHeader from './layout/Header.vue'
require('vue2-animate/dist/vue2-animate.min.css')
import UmFooter from "./layout/Footer.vue";
import UmHeader from "./layout/Header.vue";
require("vue2-animate/dist/vue2-animate.min.css");
export default {
name: 'app',
name: "app",
components: { UmHeader, UmFooter }
}
};
</script>
<style lang="scss">
@import './scss/main.scss'
@import "./scss/main.scss";
</style>
+3 -3
View File
@@ -10,14 +10,14 @@ if (process.env.NODE_ENV === 'development') {
api.url = config.PROD
}
api.isAuth = function () {
if (window.localStorage.pcpumaT && window.localStorage.pcpumaU) {
if (window.sessionStorage.pcpumaT && window.sessionStorage.pcpumaU) {
return true
}
return false
}
api.exit = function () {
window.localStorage.token = null
window.localStorage.usuario = null
window.sessionStorage.token = null
window.sessionStorage.usuario = null
}
export default api
Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

+90 -68
View File
@@ -10,24 +10,30 @@
table.table
thead
tr
th(width="10%")
th(width="20%") No Semanas
th(width="10%")
th(width="20%") No Semanas
th(width="70%") Descripción
tbody
tr(v-for="m in multa")
td
.control
.control
label.radio
input(type='radio' name="multa" v-bind:value="m.id" v-model="multar.idMulta")
input(type='radio' name="multa" v-bind:value="m.semanas" v-model="multar.multa")
td {{m.semanas}}
td {{m.nombre}}
footer.modal-card-foot
button.button.is-success(v-on:click="SaveMultar()") Guardar
button.button.is-success(v-on:click="SaveMultar()") Guardar
button.button(v-on:click="toggleModal()") Cancelar
p.has-text-centered
span.is-size-6.space(v-for="s in status") {{` ${s.equipo.toUpperCase()} : ${s.prestadas} / ${s.total}`}}
span.is-size-6.space(v-for="s in status") {{` ${s.Tipo.nombre.toUpperCase()} : ${s.cuenta}`}}
br
.columns
.column.is-3
.field
.control.has-icons-left
input.input(v-model="search" placeholder="Buscar")
span.icon.is-small.is-left
font-awesome-icon(icon="search")
table.table.is-fullwidth.is-hoverable.is-narrow
thead
tr
@@ -41,20 +47,20 @@
th Multar
th Regresar
tbody
tr(v-bind:class="{'warn-time':timeWarn(p.fh_in)}" v-for="p in prestamo")
td {{p.detalles[0].equipo.carrito.nombre}}
td {{p.detalles[0].equipo.equipo_carrito}}
td {{p.equipo}}
td {{p.detalles[0].equipo.no_inventario}}
td {{p.idUsuario}}
td {{fecha(p.fh_in)}}
td {{maxFecha(p.fh_in)}}
tr(v-bind:class="{'warn-time':timeWarn(p.fechaInicio)}" v-for="p in filteredEquipo")
td {{p.Equipo.Carrito.alias}}
td {{p.Equipo.equipo_carrito}}
td {{p.Equipo.Tipo.nombre}}
td {{p.Equipo.no_inventario}}
td {{p.idUsuario}}
td {{fecha(p.fechaInicio)}}
td {{maxFecha(p.fechaInicio)}}
td
a.button.is-danger.is-outlined(v-on:click="upMultar(p.idUsuario,p.detalles[0].equipo.id)")
a.button.is-danger.is-outlined(v-on:click="upMultar(p.idUsuario)")
span.icon.is-small
font-awesome-icon(icon="flag")
td
a.button.is-u-blue.is-outlined(v-on:click="regresar(p.idUsuario,p.id)")
a.button.is-u-blue.is-outlined(v-on:click="regresar(p.idPrestamo, p.idUsuario)")
span.icon.is-small
font-awesome-icon(icon="undo")
</template>
@@ -69,12 +75,51 @@ export default {
prestamo: [],
status: [],
multa: [],
multar: {
idUsuario: '',
idEquipo: '',
idMulta: ''
},
time: true
multar: {},
time: true,
search: ''
}
},
mounted () {
console.log(this.$store.getters.kiosko)
axios.get(api.url + '/prestamo?kiosko=' + this.$store.getters.kiosko, {
headers: {
'token': this.$store.getters.token
}
})
.then(response => {
this.prestamo = response.data.info
this.status = response.data.status
console.log(this.prestamo)
})
.catch(error => {
swal('Error', error.response.data.err, 'error')
})
axios.get(api.url + '/multa', {
headers: {
'token': this.$store.getters.token
}
})
.then(response => {
console.log(response.data.data)
this.multa = response.data
})
.catch(error => {
swal('Error', error.response.data.err, 'error')
})
},
computed: {
filteredEquipo: function () {
return this.prestamo.filter(dat => {
console.log(this.search)
if (this.search == '') {
return true
}
if (parseInt(this.search) == dat.Equipo.equipo_carrito) {
return true
}
return false
})
}
},
methods: {
@@ -88,17 +133,18 @@ export default {
},
SaveMultar: function () {
axios({
method: 'post',
method: 'put',
url: api.url + '/multar',
data: this.multar,
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
swal('Exito', 'Multa completa ', 'success')
})
.catch(error => {
console.log(error)
swal('Error', error.response.data.err, 'error')
})
},
@@ -114,45 +160,48 @@ export default {
upMultar: function (usr, eq) {
this.toggleModal()
this.multar.idUsuario = usr
this.multar.idEquipo = eq
},
fecha: function (date) {
let dt = new Date(date)
// console.log(dt)
return `${dt.getMonth() + 1}-${dt.getDate()} ${dt.getHours()}:${dt.getMinutes()}`
var options = { year:'numeric', month: 'numeric',day:'numeric' ,hour: 'numeric', minute: '2-digit' }
return dt.toLocaleString('en-US',options)
},
maxFecha: function (date) {
let dt = new Date(date)
dt.setMinutes(dt.getMinutes() + 15)
var options = { year:'numeric', month: 'numeric',day:'numeric' ,hour: 'numeric', minute: '2-digit' }
dt.setHours(dt.getHours() + 2)
// console.log(dt)
if (dt.getHours >= 6) {
return `${dt.getMonth() + 1}-${dt.getDate()} 7:45`
dt.setMinutes(dt.getMinutes() + 15)
let cierre = new Date()
cierre.setHours(20, 0, 0)
if (dt > cierre) {
return cierre.toLocaleString('en-US',options)
}
return `${dt.getMonth() + 1}-${dt.getDate()} ${dt.getHours()}:${dt.getMinutes()}`
return dt.toLocaleString('en-US',options)
},
regresar: function (usr, pre) {
regresar: function (idPrestamo,idUsuario) {
axios({
method: 'put',
url: api.url + '/devolucion',
data: {
idUsuario: usr,
id: pre
idPrestamo,
idUsuario,
idOperador: this.$store.getters.operador
},
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(res => {
swal('Exito', 'Peticion exitosa ', 'success')
axios.get(api.url + '/prestamo', {
axios.get(api.url + '/prestamo?kiosko=' + this.$store.getters.kiosko, {
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
this.prestamo = response.data.data.equipos
this.status = response.data.data.status
this.prestamo = response.data.info
this.status = response.data.status
console.log(this.prestamo)
})
.catch(error => {
swal('Error', error.response.data.err, 'error')
@@ -162,33 +211,6 @@ export default {
swal('Error', err.response.data.err, 'error')
})
}
},
mounted () {
axios.get(api.url + '/prestamo', {
headers: {
'token': window.localStorage.pcpumaT
}
})
.then(response => {
console.log(response.data.data)
this.prestamo = response.data.data.equipos
this.status = response.data.data.status
})
.catch(error => {
swal('Error', error.response.data.err, 'error')
})
axios.get(api.url + '/multa', {
headers: {
'token': window.localStorage.pcpumaT
}
})
.then(response => {
// console.log(response.data.data)
this.multa = response.data.data
})
.catch(error => {
swal('Error', error.response.data.err, 'error')
})
}
}
</script>
+17 -39
View File
@@ -2,9 +2,9 @@
section
.columns
.column.is-12
p.is-size-3 Devolución
p.is-size-3 Devolución
label.checkbox
input(v-model="multa" type="checkbox")
input(v-model="multa" type="checkbox" v-if="permiso")
span Multar
br
br
@@ -15,18 +15,18 @@
th Equipo
th Tipo
th No Inventario
th Multa
th Regresar
th(v-if="permiso") Multa
th(v-if="permiso") Regresar
tbody
tr(v-for="p in prestamo")
td {{p.detalles[0].equipo.carrito.nombre}}
td {{p.detalles[0].equipo.equipo_carrito}}
td {{p.equipo}}
td {{p.detalles[0].equipo.no_inventario}}
td
td {{p.Equipo.Carrito.alias}}
td {{p.Equipo.equipo_carrito}}
td {{p.Equipo.Tipo.nombre}}
td {{p.Equipo.no_inventario}}
td(v-if="permiso")
datepicker(v-model="dateBan")
td
a.button.is-link.is-outlined(v-on:click="regresar(p.idUsuario,p.id)")
td(v-if="permiso")
a.button.is-link.is-outlined(v-on:click="regresar(p.idPrestamo)" v-if="permiso")
span.icon.is-small
font-awesome-icon(icon="undo")
</template>
@@ -37,62 +37,40 @@ import Datepicker from 'vuejs-datepicker'
const axios = require('axios')
export default {
components: { Datepicker },
props: ['usuario'],
// eslint-disable-next-line vue/require-prop-types
props: ['usuario', 'prestamo', 'permiso'],
data () {
return {
prestamo: {},
dateBan: new Date(),
multa: false
}
},
mounted () {
axios.get(api.url + '/prestamo/' + this.usuario, {
headers: {
'token': window.localStorage.pcpumaT
}
})
.then(response => {
console.log(response)
this.prestamo = response.data.data
})
.catch(error => {
swal('Error', error.response.data.err, 'error')
})
},
watch: {
usuario: function () {
this.date = new Date()
}
},
methods: {
regresar: function (usr, pre) {
regresar: function (pre) {
axios({
method: 'put',
url: api.url + '/forzarDevolucion',
data: {
idUsuario: usr,
id: pre,
idPrestamo: pre,
multa: this.multa,
dateBan: this.dateBan
},
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(res => {
swal('Exito', 'Peticion exitosa ', 'success')
})
.catch(err => {
swal('Error', err.response.data.err, 'error')
swal('Error', 'Error al devolver', 'error')
})
}
},
computed: {
niceDate () {
if (this.date) {
return this.date.toLocaleDateString()
}
}
}
}
</script>
+28 -14
View File
@@ -8,9 +8,7 @@
.control
.select
select(v-model="tipo")
option(value="laptop") Laptop
option(value="chromebook") Choromebook
option(value="ipad") Tablet
option(v-for="t in tipos" v-bind:value="t.idTipo") {{t.nombre}}
.control
a.button.is-link(v-on:click="prestamo()") Aceptar
@@ -22,15 +20,13 @@
th Carrito
th Equipo
th No inventario
th Préstamo
th Entrega
tbody
tr
td {{prestamoData.carrito}}
td {{prestamoData.id}}
td {{prestamoData.alias_carrito}}
td {{prestamoData.alias_equipo}}
td {{prestamoData.no_inventario}}
td {{prestamoData.prestamo}}
td {{prestamoData.entrega}}
td {{prestamoData.fechaFin}}
</template>
<script>
@@ -42,7 +38,8 @@ export default {
data () {
return {
tipo: '',
prestamoData: []
prestamoData: [],
tipos: {}
}
},
watch: {
@@ -50,22 +47,39 @@ export default {
this.prestamoData = []
}
},
mounted() {
axios({
method: 'get',
url: api.url + '/tipo',
headers: {
token: this.$store.getters.token
}
})
.then(data => {
console.log(data)
this.tipos = data.data
})
.catch(err => {
console.log(err.message)
})
},
methods: {
prestamo: function () {
axios({
method: 'post',
url: api.url + '/prestamo',
data: {
equipo: this.tipo,
idUsuario: this.usuario,
idKiosko: window.localStorage.pcpumaK
idTipo: this.tipo,
idOperadorPrestamo: this.$store.getters.operador,
kiosko: this.$store.getters.kiosko
},
headers: {
token: window.localStorage.pcpumaT
token: this.$store.getters.token
}
})
.then(response => {
this.prestamoData = response.data.data.equipo
this.prestamoData = response.data
console.log(this.prestamoData)
swal('Exito', 'Peticion exitosa ', 'success')
})
@@ -82,7 +96,7 @@ export default {
idUsuario: this.usuario
},
headers: {
token: window.localStorage.pcpumaT
token: window.sessionStorage.pcpumaT
}
})
.then(response => {
+143
View File
@@ -0,0 +1,143 @@
<template lang="pug">
div
.columns
.column.is-10.is-offset-1
br
br
br
br
p.is-size-3 Blacklist
.field
.control
input.input(type="text" placeholder="Nombre" v-model="nombre")
.field
.control
input.input(type="text" placeholder="Cuenta" v-model="cuenta")
.field
.control
input.input(type="text" placeholder="Nacimiento" v-model="nacimiento")
.field
.control
input.input(type="text" placeholder="Motivo" v-model="motivo")
.field
.control
input.input(type="text" placeholder="Folio" v-model="folio")
.field
.control
button.button.is-info(v-on:click="registro") Enviar
.columns
.column.is-10.is-offset-1
table.table
thead
tr
td Nombre
td Cuenta
td Nacimiento
td Motivo
td Folio
tbody
tr(v-for="i in data")
td {{i.nombre}}
td {{i.cuenta}}
td {{i.nacimiento}}
td {{i.motivo}}
td
.field
.control
input.input(type="text" placeholder="Folio" v-model="i.folio")
td
button.button.is-info( v-on:click="update(i.idBlacklist,i.folio)") Guardar
td
button.button.is-danger( v-on:click="destroy(i.idBlacklist)") Borrar
</template>
<script>
import axios from "axios";
import api from "../api";
import swal from 'sweetalert';
export default {
data() {
return {
data: "",
nombre: "",
cuenta: "",
nacimiento: "",
motivo: "",
folio: ""
};
},
methods: {
destroy(id){
axios({
method: 'delete',
url: `${api.url}/blacklist`,
data:{
idBlacklist:id
}
})
.then(res=>{
console.log(res,api.url)
swal('Exito', 'Usuario borrado' , 'success')
this.trae();
})
.catch(err=>{
console.log(err)
})
},
update: function(id, folio) {
console.log(id, folio);
let body = {
idBlacklist: id,
folio
};
axios
.put(api.url + "/blacklist", body)
.then(res => {
console.log(res.data);
this.trae();
})
.catch(err => {
console.log(err);
});
},
registro: function() {
let body = {
nombre: this.nombre,
cuenta: this.cuenta,
nacimiento: this.nacimiento,
motivo: this.motivo,
folio: this.folio
};
console.log(body);
axios
.post(api.url + "/blacklist", body)
.then(res => {
console.log(res.data);
swal('Exito', 'Usuario agregado' , 'success')
this.trae();
})
.catch(err => {
console.log(err);
});
},
trae: function() {
axios
.get(api.url + "/blacklist")
.then(res => {
console.log(res.data);
this.data = res.data;
})
.catch(err => {
console.log(err);
});
}
},
created() {
this.trae();
}
};
</script>
<style>
</style>
+49
View File
@@ -0,0 +1,49 @@
<template lang="pug">
.columns
.column.is-10.is-offset-1
br
br
p.is-size-3 Blacklist
table.table
thead
tr
td Nombre
td Cuenta
td Nacimiento
td Motivo
td Folio
tbody
tr(v-for="i in data")
td {{i.nombre}}
td {{i.cuenta}}
td {{i.nacimiento}}
td {{i.motivo}}
td {{i.folio}}
</template>
<script>
import axios from "axios";
import api from "../api";
export default {
data() {
return {
data: ""
};
},
created() {
axios
.get(api.url + "/blacklist")
.then(res => {
console.log(res.data);
this.data = res.data;
})
.catch(err => {
console.log(err);
});
}
};
</script>
<style>
</style>
+18 -28
View File
@@ -39,12 +39,12 @@
th Editar
tbody
tr(v-for="dt in data")
td {{dt["nombre"]}}
td {{dt["equipo"]}}
td
span.tag.is-success(v-if="dt['baja'] == '0'")
td {{dt.alias}}
td {{dt.tipo}}
td
span.tag.is-success(v-if="dt.baja == '0'")
b Activo
span.tag.is-warning(v-else)
span.tag.is-warning(v-else)
b Inactivo
td
a.button.is-link.is-outlined(v-on:click="setUpdate(dt)")
@@ -64,26 +64,21 @@ export default {
UmFooter,
UmHeader
},
name: 'equipo',
data () {
return {
data: [],
carrito: {
nota: '',
baja: '',
id: ''
}
carrito: {}
}
},
mounted () {
axios.get(api.url + '/carritos/' + window.localStorage.pcpumaK, {
axios.get(api.url + '/carrito?kiosko=' + this.$store.getters.kiosko, {
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
console.log(response)
this.data = response.data.data
this.data = response.data
})
.catch(error => {
console.log(error)
@@ -91,40 +86,35 @@ export default {
},
methods: {
update: function () {
console.log(this.carrito)
this.toggleModal()
axios({
method: 'put',
url: api.url + '/carrito',
data: this.carrito,
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
swal('Exito', 'Se actualizo', 'success')
axios.get(api.url + '/carritos/' + window.localStorage.pcpumaK, {
return axios.get(api.url + '/carrito?kiosko=' + this.$store.getters.kiosko, {
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
// console.log(response)
this.data = response.data.data
swal('Exito', 'Se cargarón los datos', 'success')
})
.catch(error => {
swal('Error', error.response.data.err, 'error')
})
})
.then(response => {
this.data = response.data
swal('Exito', 'Se cargarón los datos', 'success')
})
.catch(error => {
swal('Error', error.response.data.err, 'error')
})
},
setUpdate: function (dt) {
this.toggleModal()
this.carrito.nota = dt.nota
this.carrito.id = dt.id
this.carrito.baja = dt.baja
this.carrito=dt
},
toggleModal: function () {
let modal = document.getElementById('modal')
+39 -116
View File
@@ -100,20 +100,20 @@
th Editar
tbody
tr(v-for="dt in filteredEquipo")
td {{dt["carritos.nombre"]}}
td {{dt["carritos.equipos.equipo_carrito"]}}
td {{dt["carritos.equipos.no_serie"]}}
td {{dt["carritos.equipos.no_inventario"]}}
td {{dt["carritos.equipos.equipo"]}}
td
span.tag.is-success(v-if="dt['carritos.equipos.bateria'] == '0'")
td {{dt.Carrito.alias}}
td {{dt.equipo_carrito}}
td {{dt.no_serie}}
td {{dt.no_inventario}}
td {{dt.Tipo.nombre}}
td
span.tag.is-success(v-if="dt.bateria == '0'")
b Cargada
span.tag.is-warning(v-else)
span.tag.is-warning(v-else)
b Descargada
td
span.tag.is-success(v-if="dt['carritos.equipos.baja'] == '0'")
td
span.tag.is-success(v-if="dt.baja == '0'")
b Activo
span.tag.is-warning(v-else)
span.tag.is-warning(v-else)
b Inactivo
td
a.button.is-u-blue.is-outlined(v-on:click="setUpdate(dt)")
@@ -133,7 +133,6 @@ export default {
UmFooter,
UmHeader
},
name: 'equipo',
data () {
return {
search: '',
@@ -142,26 +141,34 @@ export default {
carrito: [],
tipo: '',
car: '',
file: '',
equipo: {
no_serie: '',
no_inventario: '',
baja: '',
id: '',
bateria: '',
nota: ''
}
equipo: {}
}
},
computed: {
filteredEquipo: function () {
return this.data.filter(dat => {
if (this.car !== '') {
if (parseInt(this.car) !== dat.carrito) {
return false
}
}
let reg = new RegExp(this.search)
if (reg.test(dat.no_serie) || reg.test(dat.no_inventario) || reg.test(dat.id)) {
return true
}
return false
})
}
},
mounted () {
axios.get(api.url + '/equipo/?kiosko=' + window.localStorage.pcpumaK, {
axios.get(api.url + '/equipo?kiosko=' + this.$store.getters.kiosko, {
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
console.log(response)
this.data = response.data.data
console.log(response.data)
this.data = response.data
})
.catch(error => {
console.log(error)
@@ -175,20 +182,20 @@ export default {
url: api.url + '/equipo',
data: this.equipo,
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
swal('Exito', 'Se actualizo', 'success')
axios.get(api.url + '/equipo/?kiosko=' + window.localStorage.pcpumaK, {
axios.get(api.url + '/equipo?kiosko=' + this.$store.getters.kiosko, {
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
// console.log(response)
this.data = response.data.data
swal('Exito', 'Se cargarón los datos', 'success')
this.data = response.data
swal('Exito', 'Se actualizarón los datos', 'success')
})
.catch(error => {
swal('Error', error.response.data.err, 'error')
@@ -201,12 +208,7 @@ export default {
setUpdate: function (dt) {
console.log(dt)
this.toggleModal()
this.equipo.no_serie = dt['carritos.equipos.no_serie']
this.equipo.no_inventario = dt['carritos.equipos.no_inventario']
this.equipo.baja = dt['carritos.equipos.baja']
this.equipo.bateria = dt['carritos.equipos.bateria']
this.equipo.nota = dt['carritos.equipos.nota']
this.equipo.id = dt['carritos.equipos.id']
this.equipo = dt
},
toggleModal: function () {
let modal = document.getElementById('modal')
@@ -218,88 +220,9 @@ export default {
},
count: function (arr) {
return `${arr.length}`
},
changeFile: function () {
this.file = event.target.files[0]
console.log(this.file)
},
upload: function () {
// Add a request interceptor
const fue = axios.interceptors.request.use(function (config) {
// Do something before request is sent
document.getElementById('pageloader').classList.add('is-active')
console.log('sefue')
return config
}, function (error) {
// Do something with request error
return Promise.reject(error)
})
// Add a response interceptor
const regreso = axios.interceptors.response.use(function (response) {
// Do something with response data
document.getElementById('pageloader').classList.remove('is-active')
console.log('regreso')
return response
}, function (error) {
// Do something with response error
return Promise.reject(error)
})
let data = new FormData()
data.append('archivo', this.file)
axios({
method: 'post',
url: api.url + '/carrito-upload',
data,
headers: {
admin: '123',
'Content-Type': 'multipart/form-data',
'token': window.localStorage.pcpumaT
}
})
.then(response => {
console.log(response.data)
axios.interceptors.request.eject(fue)
axios.interceptors.request.eject(regreso)
axios.get(api.url + '/equipo/?kiosko=' + window.localStorage.pcpumaK, {
headers: {
'token': window.localStorage.pcpumaT
}
})
.then(response => {
// console.log(response)
this.data = response.data.data
swal('Exito', 'Se cargarón los datos', 'success')
})
.catch(error => {
swal('Error', error.response.data.err, 'error')
})
})
.catch(error => {
console.log(error.response.data)
})
}
},
computed: {
filteredEquipo: function () {
return this.data.filter(dat => {
if (this.tipo !== '') {
if (this.tipo !== dat['carritos.equipos.equipo']) {
return false
}
}
if (this.car !== '') {
if (parseInt(this.car) !== dat.carrito) {
return false
}
}
let reg = new RegExp(this.search)
if (reg.test(dat['carritos.equipos.no_serie']) || reg.test(dat['carritos.equipos.no_inventario']) || reg.test(dat.id)) {
return true
}
return false
})
}
}
}
</script>
+17 -21
View File
@@ -9,8 +9,10 @@
router-link.navbar-item(to="/carrito") Carrito
router-link.navbar-item(to="/usuario") Usuarios
router-link.navbar-item(to="/multa") Multas
router-link.navbar-item(v-if="$store.getters.permiso" to="/bans") Blacklist
.navbar-end
.navbar-item
p {{`Bienvenido : ${this.usuario}`}}
span.tag.is-danger.is-medium(v-if=" env === 'development' ") Localhost
span.tag.is-danger.is-medium(v-else-if=" env === 'TEST' ") Test
.navbar-item
@@ -19,32 +21,26 @@
</template>
<script>
export default {
data () {
data() {
return {
env: process.env.NODE_ENV
}
env: process.env.NODE_ENV,
usuario: this.$store.getters.usuario
};
},
methods: {
salir: function () {
window.localStorage.removeItem('pcpumaT')
window.localStorage.removeItem('pcpumaU')
window.localStorage.removeItem('pcpumaK')
this.$router.push('login')
}
},
computed: {
login: function () {
if (window.localStorage.pcpumaT) {
return true
}
return false
salir: function() {
this.$store.commit("close");
this.$router.push("login");
}
}
}
};
</script>
<style lang="scss" scoped>
.navbar{
border-bottom: #B08100 solid 5px;
// box-shadow: 0px 13px 21px 2px rgba(0,0,0,0.21);
}
.navbar {
width: 100%;
border-bottom: #b08100 solid 5px;
box-shadow: 0px 13px 21px 2px rgba(0, 0, 0, 0.21);
position: fixed;
top: 0;
}
</style>
+42 -25
View File
@@ -2,7 +2,8 @@
main
nav.navbar.is-u-blue
div.navbar-brand
a.navbar-item PC PUMA
a.navbar-item
b PC PUMA
.container
.columns
.column.is-4.is-offset-4.has-text-centered
@@ -12,6 +13,12 @@
un-notification(v-if='this.status' v-bind:msj='this.err' status=true)
br
form
.field
.select
select(v-model="kiosko" require)
option(disabled) selecciona el kiosko
option(value="1") 1
option(value="2") 2
.field
p.control.has-icons-left
input.input.is-link(placeholder="Usuario" v-model="user")
@@ -25,46 +32,56 @@
i
font-awesome-icon(icon="lock")
.field.has-text-centered
input.button.is-u-blue(type="submit" v-on:click="Login()" value="Iniciar sesión")
input.button.is-u-blue(type="submit" v-on:click="Login($event)" value="Iniciar sesión")
</template>
<script>
import UnNotification from '../components/general/Notificacion.vue'
import api from '../api'
const axios = require('axios')
import UnNotification from "../components/general/Notificacion.vue";
import api from "../api";
const axios = require("axios");
export default {
components: {
UnNotification
},
data () {
data() {
return {
user: '',
pass: '',
err: '',
status: false
}
user: "",
pass: "",
err: "",
status: false,
kiosko: ""
};
},
methods: {
Login: function () {
axios.post(api.url + '/login', {
nombre: this.user,
pass: this.pass
Login: function(event) {
if (event) event.preventDefault();
axios({
method: "post",
url: api.url + "/login",
data: {
usuario: this.user,
pass: this.pass
}
})
.then(response => {
console.log(response.data.data)
window.localStorage.pcpumaT = response.data.data.token
window.localStorage.pcpumaU = response.data.data.usuario
window.localStorage.pcpumaK = response.data.data.id
this.$router.push('/')
console.log(response.data);
console.log("kiosko", this.kiosko);
this.$store.commit("login", response.data);
this.$store.commit("kiosko", this.kiosko);
this.$router.push("/");
})
.catch(error => {
this.err = error.response.data.err
this.status = !error.response.data.status
})
this.err = error.response.data.err;
this.status = !error.response.data.status;
});
}
}
}
};
</script>
<style lang="css">
<style lang="css" scoped>
.navbar {
border-bottom: #b08100 solid 5px;
box-shadow: 0px 13px 21px 2px rgba(0, 0, 0, 0.21);
}
</style>
+15 -22
View File
@@ -43,14 +43,12 @@
.column.is-12
table.table.is-fullwidth
thead
th Id
th Descripcion
th Semanas
th Editar
th Borrar
tbody
tr(v-for="dt in data")
td {{dt.id}}
td {{dt.nombre}}
td {{dt.semanas}}
td
@@ -58,10 +56,9 @@
span.icon.is-small
font-awesome-icon(icon="pen")
td
a.button.is-danger.is-outlined(v-on:click="del(dt.id)")
a.button.is-danger.is-outlined(v-on:click="del(dt.idMulta)")
span.icon.is-small
font-awesome-icon(icon="trash")
</template>
<script>
@@ -82,12 +79,12 @@ export default {
mounted () {
axios.get(api.url + '/multa', {
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
console.log(response.data)
this.data = response.data.data
this.data = response.data
})
.catch(error => {
console.log(error)
@@ -116,20 +113,18 @@ export default {
semanas: this.sem
},
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
// console.log(this.data)
swal('Exito', 'Peticion exitosa ', 'success')
axios.get(api.url + '/multa', {
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
// console.log(response.data)
this.data = response.data.data
this.data = response.data
})
.catch(error => {
console.log(error)
@@ -140,27 +135,26 @@ export default {
swal('Error', error.response.data.err, 'error')
})
},
del: function (id) {
del: function (idMulta) {
axios({
method: 'delete',
url: api.url + '/multa',
data: {
id
idMulta
},
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
swal('Exito', 'Se elimino el Registro ', 'success')
axios.get(api.url + '/multa', {
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
// console.log(response.data)
this.data = response.data.data
this.data = response.data
})
.catch(error => {
console.log(error)
@@ -176,24 +170,23 @@ export default {
method: 'put',
url: api.url + '/multa',
data: {
id: this.multa.id,
idMulta: this.multa.idMulta,
nombre: this.multa.nombre,
semanas: this.multa.semanas
},
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
swal('Exito', 'Se actualizo el Registro ', 'success')
axios.get(api.url + '/multa', {
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
// console.log(response.data)
this.data = response.data.data
this.data = response.data
})
.catch(error => {
console.log(error)
+70 -26
View File
@@ -18,21 +18,25 @@
font-awesome-icon(icon="user")
.field
.control.has-text-centered
input.button.is-link(v-on:click="usuario()" type="submit" value="Buscar")
input.button.is-link(v-on:click="usuario($event)" type="submit" value="Buscar")
br
.columns(v-if="data.id")
.columns(v-if="data.idUsuario")
.column.is-3.is-offset-1
p.is-size-3 Usuario : {{data.id}}
p.is-size-3 Usuario : {{data.idUsuario}}
p.is-size-4 Multa : {{multa(data.multa)}}
br
.field
input#switch.switch.is-info(type="checkbox" v-model="data.ban" v-on:click="ban()")
label(for="switch") Baneado
.field
button.button.is-danger( v-if="permiso" v-on:click="huella()") Borrar Huella
.field
button.button.is-danger( v-if="permiso" v-on:click="quitarMulta()") Borrar Multa
.column.is-7
div(v-if="prest.length == 0")
prestamo(v-bind:usuario="buscar")
div(v-else)
devolucion(v-bind:usuario="buscar")
devolucion(v-bind:usuario="buscar" v-bind:prestamo="prest" v-bind:permiso="permiso")
</template>
@@ -50,28 +54,30 @@ export default {
return {
buscar: '',
data: {},
prest: ''
prest: '',
permiso: this.$store.getters.permiso
}
},
methods: {
usuario: function () {
usuario: function (event) {
if (event) event.preventDefault()
axios.get(api.url + '/usuario/?id=' + this.buscar, {
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(response => {
console.log(response)
axios.get(api.url + '/prestamo/' + this.buscar, {
.then(res1 => {
// console.log(response)
this.data = res1.data
return axios.get(api.url + '/prestamo?usuario=' + this.buscar, {
headers: {
'token': window.localStorage.pcpumaT
'token': this.$store.getters.token
}
})
.then(data => {
this.prest = data.data.data
console.log(this.prest)
})
this.data = response.data.data
})
.then(res2 => {
// console.log(this.prest)
this.prest = res2.data
})
.catch(error => {
swal('Error', error.response.data.err, 'error')
@@ -87,23 +93,61 @@ export default {
ban: function () {
axios({
method: 'put',
url: api.url + '/ban',
url: api.url + '/usuario/' + this.data.idUsuario,
data: {
id: this.data.id
ban: !this.data.ban
},
headers: {
'token': window.localStorage.pcpumaT,
'admin': '123'
'token': this.$store.getters.token
}
})
.then(response => {
// console.log(response)
this.data = response.data.data
swal('Exito', 'Se cambio de estado con Exito', 'success')
.then(res => {
console.log(res)
this.data = res.data
swal('Exito', !this.data.ban ? 'Usuario Desbloqueado' : 'Usuario Bloqueado' , 'success')
})
.catch(error => {
// console.log(error)
swal('Error', error.response.data.err, 'error')
console.log(error)
})
},
huella: function () {
axios({
method: 'put',
url: api.url + '/usuario/' + this.data.idUsuario,
data: {
huella: null
},
headers: {
'token': this.$store.getters.token
}
})
.then(res => {
console.log(res)
this.data = res.data
swal('Exito','Huella borrada' , 'success')
})
.catch(error => {
console.log(error)
})
},
quitarMulta: function () {
axios({
method: 'put',
url: api.url + '/usuario/' + this.data.idUsuario,
data: {
multa: null
},
headers: {
'token': this.$store.getters.token
}
})
.then(res => {
console.log(res)
this.data = res.data
swal('Exito','Huella borrada' , 'success')
})
.catch(error => {
console.log(error)
})
}
}
+3 -4
View File
@@ -5,6 +5,7 @@ import { faLaptop, faFlag, faUpload, faTrash, faTabletAlt, faUser, faLock, faSea
import { faChrome } from '@fortawesome/free-brands-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import router from './routes.js'
import store from './store'
library.add(faChrome, faSearch, faShoppingCart, faCheckCircle, faPen, faEye)
library.add(faUndo)
@@ -17,12 +18,10 @@ library.add(faTabletAlt)
library.add(faTrash)
Vue.component('font-awesome-icon', FontAwesomeIcon)
console.log(process.env)
// import Child from './components/Child.vue'
Vue.config.productionTip = false
// Vue.component('child', Child)
new Vue({
render: h => h(App),
router
router,
store
}).$mount('#app')
+37 -30
View File
@@ -1,39 +1,46 @@
import Vue from 'vue'
import VueRouter from 'vue-router'
import Carrito from './layout/Carrito.vue'
import Inicio from './layout/Inicio.vue'
import Login from './layout/Login.vue'
import Usuario from './layout/Usuario.vue'
import Equipo from './layout/Equipo.vue'
import Multa from './layout/Multa.vue'
import Vue from "vue";
import store from "./store.js";
import VueRouter from "vue-router";
import Carrito from "./layout/Carrito.vue";
import Inicio from "./layout/Inicio.vue";
import Login from "./layout/Login.vue";
import Usuario from "./layout/Usuario.vue";
import Equipo from "./layout/Equipo.vue";
import Multa from "./layout/Multa.vue";
import Blacklist from "./layout/Blacklist.vue";
import Bans from "./layout/Bans.vue";
const routes = [
{ path: '/', component: Inicio, name: 'inicio' },
{ path: '/carrito', component: Carrito, name: 'carrito' },
{ path: '/login', component: Login, name: 'login' },
{ path: '/usuario', component: Usuario, name: 'usuario' },
{ path: '/equipo/', component: Equipo, name: 'equipo' },
{ path: '/multa', component: Multa, name: 'multa' }
]
Vue.use(VueRouter)
{ path: "/", component: Inicio, name: "inicio" },
{ path: "/login", component: Login, name: "login", meta: { isPublic: true } },
{ path: "/carrito", component: Carrito, name: "carrito" },
{ path: "/usuario", component: Usuario, name: "usuario" },
{ path: "/equipo/", component: Equipo, name: "equipo" },
{ path: "/multa", component: Multa, name: "multa" },
{ path: "/blacklist", component: Blacklist, name: "blacklist" },
{ path: "/bans", component: Bans, name: "bans" }
];
Vue.use(VueRouter);
const router = new VueRouter({ routes })
const router = new VueRouter({ routes });
const isAuthenticated = function () {
if (window.localStorage.pcpumaT) {
return true
}
return false
}
const isAuthenticated = function() {
return store.getters.isLoggedIn;
};
router.beforeEach((to, from, next) => {
if (!isAuthenticated() && to.path !== '/login') {
return next('/login')
if (to.name === "blacklist") {
return next();
}
if (isAuthenticated() && to.path === '/login') {
return next('/')
if (!to.meta.isPublic && !isAuthenticated()) {
return next({ name: "login" });
}
next()
})
export default router
if (to.name === "login" && isAuthenticated()) {
return next({ name: "home" });
}
return next();
});
export default router;
+32
View File
@@ -0,0 +1,32 @@
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
session: {},
kiosko: ''
},
getters: {
isLoggedIn: state => !!state.session.token,
token: state => state.session.token,
kiosko: state => state.kiosko,
operador : state => state.session.idOperador,
permiso : state => state.session.permiso,
usuario : state => state.session.usuario
},
mutations: {
login (state, payload = {}) {
state.session = payload
},
close (state) {
state.session = {}
},
kiosko (state, payload = {}) {
state.kiosko = payload
}
}
})
export default store