0
0
Fork 0

refs #6545 refactor

This commit is contained in:
Jorge Penadés 2023-12-04 15:07:40 +01:00
parent a3d6275b2f
commit a730f2c073
1 changed files with 53 additions and 15 deletions

View File

@ -2,19 +2,22 @@
import { ref, onMounted } from 'vue'; import { ref, onMounted } from 'vue';
import { useSession } from 'src/composables/useSession'; import { useSession } from 'src/composables/useSession';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { useQuasar } from 'quasar';
import VnConfirm from 'components/ui/VnConfirm.vue';
const quasar = useQuasar();
const { t } = useI18n(); const { t } = useI18n();
const session = useSession(); const session = useSession();
const token = session.getToken(); const token = session.getToken();
const counters = ref({ const counters = ref({
alquilerBandeja: { count: 0, id: 27098, title: 'Alquiler de CC Bandeja' }, alquilerBandeja: { count: 0, id: 1, title: 'Alquiler de CC Bandeja' },
bandejaRota: { count: 0, id: 88381, title: 'CC Bandeja Rota' }, bandejaRota: { count: 0, id: 2, title: 'CC Bandeja Rota' },
carryOficial: { count: 0, id: 27097, title: ' Alquiler de CC Carry OFICIAL' }, carryOficial: { count: 0, id: 3, title: ' Alquiler de CC Carry OFICIAL' },
candadoRojo: { count: 0, id: 142252, title: 'CC Candado rojo' }, candadoRojo: { count: 0, id: 4, title: 'CC Candado rojo' },
sacadores: { count: 0, id: 142260, title: 'CC Sacadores' }, sacadores: { count: 0, id: 5, title: 'CC Sacadores' },
sinChapa: { count: 0, id: 142258, title: 'CC Sin Chapa' }, sinChapa: { count: 0, id: 6, title: 'CC Sin Chapa' },
carroRoto: { count: 0, id: 142251, title: 'Carro Roto' }, carroRoto: { count: 0, id: 7, title: 'Carro Roto' },
}); });
const actions = { const actions = {
@ -35,24 +38,45 @@ function getUrl(id) {
return `/api/Images/catalog/200x200/${id}/download?access_token=${token}`; return `/api/Images/catalog/200x200/${id}/download?access_token=${token}`;
} }
function handleEvent(type, action) { async function handleEvent(type, action) {
const counter = counters.value[type].count; const counter = counters.value[type].count;
counters.value[type].count = actions[action](counter); let isOk = true;
localStorage.setItem(type, counters.value[type].count);
if (action == 'flush') isOk = await confirm();
if (isOk) {
counters.value[type].count = actions[action](counter);
localStorage.setItem(type, counters.value[type].count);
}
}
function confirm() {
return new Promise((resolve) => {
quasar
.dialog({
component: VnConfirm,
componentProps: {
title: t('Are you sure?'),
message: t('Se pondrá el contador a cero'),
},
})
.onOk(() => resolve(true))
.onCancel(() => resolve(false));
});
} }
</script> </script>
<template> <template>
<QList class="q-mx-auto q-mt-xl"> <QList class="row q-mx-auto q-mt-xl">
<QItem v-for="(props, name) in counters" :key="name"> <QItem v-for="(props, name) in counters" :key="name" class="col-6">
<QItemSection> <QItemSection>
<p class="text-h5">{{ props.title }}</p>
<QImg <QImg
:src="getUrl(props.id)" :src="getUrl(props.id)"
width="150px" width="130px"
@click="handleEvent(name, 'add')" @click="handleEvent(name, 'add')"
/> />
<p class="title">{{ props.title }}</p>
</QItemSection> </QItemSection>
<QItemSection> <QItemSection class="q-ma-none">
<QItemLabel class="text-h4"> <QItemLabel class="text-h4">
{{ props.count }} {{ props.count }}
</QItemLabel> </QItemLabel>
@ -61,6 +85,7 @@ function handleEvent(type, action) {
class="text-center q-mr-xs" class="text-center q-mr-xs"
color="warning" color="warning"
dense dense
size="sm"
@click="handleEvent(name, 'substract')" @click="handleEvent(name, 'substract')"
> >
{{ t('Substract 1') }} {{ t('Substract 1') }}
@ -69,12 +94,14 @@ function handleEvent(type, action) {
class="text-center q-ml-xs" class="text-center q-ml-xs"
color="red" color="red"
dense dense
size="sm"
@click="handleEvent(name, 'flush')" @click="handleEvent(name, 'flush')"
> >
{{ t('Flush') }} {{ t('Flush') }}
</QBtn> </QBtn>
</QItemLabel> </QItemLabel>
</QItemSection> </QItemSection>
<QSeparator class="q-mt-sm q-mx-none" color="primary" />
</QItem> </QItem>
</QList> </QList>
</template> </template>
@ -82,9 +109,20 @@ function handleEvent(type, action) {
.q-list { .q-list {
max-width: 50em; max-width: 50em;
} }
@media (max-width: $breakpoint-sm) {
.q-item {
display: flex;
flex-direction: column;
}
.title {
min-height: 3em;
}
}
</style> </style>
<i18n> <i18n>
es: es:
Substract 1: Quitar 1 Substract 1: Quitar 1
Flush: Vaciar Flush: Vaciar
Are you sure?: ¿Estás seguro?
It will set to 0: Se pondrá a 0
</i18n> </i18n>