This commit is contained in:
William Buezas 2024-01-23 10:15:35 -03:00
commit bc2d58afaf
48 changed files with 2844 additions and 2529 deletions

View File

@ -138,7 +138,7 @@ async function save() {
} else { } else {
response = await axios.patch($props.urlUpdate || $props.url, body); response = await axios.patch($props.urlUpdate || $props.url, body);
} }
emit('onDataSaved', formData.value, response); emit('onDataSaved', formData.value, response?.data);
originalData.value = JSON.parse(JSON.stringify(formData.value)); originalData.value = JSON.parse(JSON.stringify(formData.value));
hasChanges.value = false; hasChanges.value = false;
} catch (err) { } catch (err) {

View File

@ -1,8 +1,8 @@
<script setup> <script setup>
import {computed, ref} from 'vue'; import { computed, ref } from 'vue';
import { toHour} from 'src/filters'; import { toHour } from 'src/filters';
import {useI18n} from "vue-i18n"; import { useI18n } from 'vue-i18n';
import isValidDate from "filters/isValidDate"; import isValidDate from 'filters/isValidDate';
const props = defineProps({ const props = defineProps({
modelValue: { modelValue: {
@ -25,9 +25,14 @@ const value = computed({
return props.modelValue; return props.modelValue;
}, },
set(value) { set(value) {
const [hours, minutes] = value.split(':') const [hours, minutes] = value.split(':');
const date = new Date() const date = new Date();
date.setUTCHours(Number.parseInt(hours) || 0, Number.parseInt(minutes) || 0, 0, 0) date.setUTCHours(
Number.parseInt(hours) || 0,
Number.parseInt(minutes) || 0,
0,
0
);
emit('update:modelValue', value ? date.toISOString() : null); emit('update:modelValue', value ? date.toISOString() : null);
}, },
}); });
@ -40,14 +45,18 @@ const save = () => {
value.value = internalValue.value; value.value = internalValue.value;
}; };
const formatTime = (dateString) => { const formatTime = (dateString) => {
if (!isValidDate(dateString)){ if (!isValidDate(dateString)) {
return '' return '';
} }
const date = new Date(dateString || ''); const date = new Date(dateString || '');
return `${date.getUTCHours().toString().padStart(2, '0')}:${date.getUTCMinutes().toString().padStart(2, '0')}`; return date.toLocaleTimeString([], {
hour: '2-digit',
minute: '2-digit',
});
}; };
const internalValue = ref(formatTime(value)) const internalValue = ref(formatTime(value));
const styleAttrs = computed(() => { const styleAttrs = computed(() => {
return props.isOutlined return props.isOutlined
@ -82,8 +91,19 @@ const styleAttrs = computed(() => {
@update:model-value="onDateUpdate" @update:model-value="onDateUpdate"
> >
<div class="row items-center justify-end q-gutter-sm"> <div class="row items-center justify-end q-gutter-sm">
<QBtn :label="t('Cancel')" color="primary" flat v-close-popup /> <QBtn
<QBtn label="Ok" color="primary" flat @click="save" v-close-popup /> :label="t('Cancel')"
color="primary"
flat
v-close-popup
/>
<QBtn
label="Ok"
color="primary"
flat
@click="save"
v-close-popup
/>
</div> </div>
</QTime> </QTime>
</QPopupProxy> </QPopupProxy>

View File

@ -38,26 +38,28 @@ const workers = ref();
minimal minimal
> >
</QDate> </QDate>
<QSeparator /> <QList dense>
<QItem> <QSeparator />
<QItemSection v-if="!workers"> <QItem>
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-if="!workers">
</QItemSection> <QSkeleton type="QInput" class="full-width" />
<QItemSection v-if="workers"> </QItemSection>
<QSelect <QItemSection v-if="workers">
:label="t('User')" <QSelect
v-model="params.userFk" :label="t('User')"
@update:model-value="searchFn()" v-model="params.userFk"
:options="workers" @update:model-value="searchFn()"
option-value="id" :options="workers"
option-label="name" option-value="id"
emit-value option-label="name"
map-options emit-value
use-input map-options
:input-debounce="0" use-input
/> :input-debounce="0"
</QItemSection> />
</QItem> </QItemSection>
</QItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>

View File

@ -116,9 +116,3 @@ watch(options, (newValue) => {
</template> </template>
</QSelect> </QSelect>
</template> </template>
<style scoped lang="scss">
.q-field--outlined {
max-width: 100%;
}
</style>

View File

@ -216,9 +216,7 @@ function formatValue(value) {
</QItem> </QItem>
<QSeparator /> <QSeparator />
</QList> </QList>
<QList dense class="list q-gutter-y-sm q-mt-sm"> <slot name="body" :params="userParams" :search-fn="search"></slot>
<slot name="body" :params="userParams" :search-fn="search"></slot>
</QList>
<template v-if="props.searchButton"> <template v-if="props.searchButton">
<QItem> <QItem>
<QItemSection class="q-py-sm"> <QItemSection class="q-py-sm">
@ -244,12 +242,6 @@ function formatValue(value) {
/> />
</template> </template>
<style scoped lang="scss">
.list {
width: 256px;
}
</style>
<i18n> <i18n>
es: es:
No filters applied: No se han aplicado filtros No filters applied: No se han aplicado filtros

View File

@ -58,11 +58,6 @@ body.body--dark {
border-radius: 8px; border-radius: 8px;
} }
.vn-card-list {
width: 100%;
max-width: 60em;
}
/* Estilo para el asterisco en campos requeridos */ /* Estilo para el asterisco en campos requeridos */
.q-field.required .q-field__label:after { .q-field.required .q-field__label:after {
content: ' *'; content: ' *';

View File

@ -4,13 +4,8 @@ export default function toHour(date) {
if (!isValidDate(date)) { if (!isValidDate(date)) {
return '--:--'; return '--:--';
} }
const dateHour = new Date(date); return (new Date(date || '')).toLocaleTimeString([], {
let hours = dateHour.getUTCHours(); hour: '2-digit',
hours = hours % 12; minute: '2-digit',
hours = hours ? hours : 12; });
let minutes = dateHour.getUTCMinutes();
minutes = minutes < 10 ? minutes.toString().padStart(2, '0') : minutes;
return `${hours}:${minutes} ${dateHour.getUTCHours() >= 12 ? 'PM' : 'AM'}`;
} }

View File

@ -36,122 +36,123 @@ const states = ref();
</div> </div>
</template> </template>
<template #body="{ params, searchFn }"> <template #body="{ params, searchFn }">
<QItem class="q-my-sm"> <QList dense class="list">
<QItemSection> <QItem class="q-my-sm">
<VnInput <QItemSection>
:label="t('Customer ID')" <VnInput
v-model="params.clientFk" :label="t('Customer ID')"
lazy-rules v-model="params.clientFk"
is-outlined lazy-rules
> is-outlined
<template #prepend> >
<QIcon name="badge" size="xs"></QIcon> </template <template #prepend>
></VnInput> <QIcon name="badge" size="xs"></QIcon> </template
</QItemSection> ></VnInput>
</QItem> </QItemSection>
<QItem class="q-mb-sm"> </QItem>
<QItemSection> <QItem class="q-mb-sm">
<VnInput <QItemSection>
:label="t('Client Name')" <VnInput
v-model="params.clientName" :label="t('Client Name')"
lazy-rules v-model="params.clientName"
is-outlined lazy-rules
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-mb-sm"> </QItem>
<QItemSection v-if="!workers"> <QItem class="q-mb-sm">
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-if="!workers">
</QItemSection> <QSkeleton type="QInput" class="full-width" />
<QItemSection v-if="workers"> </QItemSection>
<VnSelectFilter <QItemSection v-if="workers">
:label="t('Salesperson')" <VnSelectFilter
v-model="params.salesPersonFk" :label="t('Salesperson')"
@update:model-value="searchFn()" v-model="params.salesPersonFk"
:options="workers" @update:model-value="searchFn()"
option-value="id" :options="workers"
option-label="name" option-value="id"
emit-value option-label="name"
map-options emit-value
use-input map-options
hide-selected use-input
dense hide-selected
outlined dense
rounded outlined
:input-debounce="0" rounded
/> :input-debounce="0"
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-mb-sm"> </QItem>
<QItemSection v-if="!workers"> <QItem class="q-mb-sm">
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-if="!workers">
</QItemSection> <QSkeleton type="QInput" class="full-width" />
<QItemSection v-if="workers"> </QItemSection>
<VnSelectFilter <QItemSection v-if="workers">
:label="t('Attender')" <VnSelectFilter
v-model="params.attenderFk" :label="t('Attender')"
@update:model-value="searchFn()" v-model="params.attenderFk"
:options="workers" @update:model-value="searchFn()"
option-value="id" :options="workers"
option-label="name" option-value="id"
emit-value option-label="name"
map-options emit-value
use-input map-options
hide-selected use-input
dense hide-selected
outlined dense
rounded outlined
:input-debounce="0" rounded
/> :input-debounce="0"
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-mb-sm"> </QItem>
<QItemSection v-if="!workers"> <QItem class="q-mb-sm">
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-if="!workers">
</QItemSection> <QSkeleton type="QInput" class="full-width" />
<QItemSection v-if="workers"> </QItemSection>
<VnSelectFilter <QItemSection v-if="workers">
:label="t('Responsible')" <VnSelectFilter
v-model="params.claimResponsibleFk" :label="t('Responsible')"
@update:model-value="searchFn()" v-model="params.claimResponsibleFk"
:options="workers" @update:model-value="searchFn()"
option-value="id" :options="workers"
option-label="name" option-value="id"
emit-value option-label="name"
map-options emit-value
use-input map-options
hide-selected use-input
dense hide-selected
outlined dense
rounded outlined
:input-debounce="0" rounded
/> :input-debounce="0"
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-mb-sm"> </QItem>
<QItemSection v-if="!states"> <QItem class="q-mb-sm">
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-if="!states">
</QItemSection> <QSkeleton type="QInput" class="full-width" />
<QItemSection v-if="states"> </QItemSection>
<VnSelectFilter <QItemSection v-if="states">
:label="t('State')" <VnSelectFilter
v-model="params.claimStateFk" :label="t('State')"
@update:model-value="searchFn()" v-model="params.claimStateFk"
:options="states" @update:model-value="searchFn()"
option-value="id" :options="states"
option-label="description" option-value="id"
emit-value option-label="description"
map-options emit-value
hide-selected map-options
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QSeparator /> </QItem>
<QExpansionItem :label="t('More options')" expand-separator> <QSeparator />
<!-- <QItem> <QExpansionItem :label="t('More options')" expand-separator>
<!-- <QItem>
<QItemSection> <QItemSection>
<qSelect <qSelect
:label="t('Item')" :label="t('Item')"
@ -167,20 +168,30 @@ const states = ref();
/> />
</QItemSection> </QItemSection>
</QItem> --> </QItem> -->
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInputDate <VnInputDate
v-model="params.created" v-model="params.created"
:label="t('Created')" :label="t('Created')"
is-outlined is-outlined
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
</QExpansionItem> </QExpansionItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n> <i18n>
en: en:
params: params:

View File

@ -71,7 +71,7 @@ function viewSummary(id) {
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="ClaimList" data-key="ClaimList"
url="Claims/filter" url="Claims/filter"
@ -145,6 +145,13 @@ function viewSummary(id) {
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>
<i18n> <i18n>
es: es:
Search claim: Buscar reclamación Search claim: Buscar reclamación

View File

@ -84,7 +84,7 @@ async function remove({ id }) {
</QForm> </QForm>
</QCard> </QCard>
</QPageSticky> </QPageSticky>
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="ClaimRmaList" data-key="ClaimRmaList"
url="ClaimRmas" url="ClaimRmas"
@ -160,6 +160,7 @@ async function remove({ id }) {
padding-top: 156px; padding-top: 156px;
} }
.card-list,
.card { .card {
width: 100%; width: 100%;
max-width: 60em; max-width: 60em;

View File

@ -1,7 +1,7 @@
<script setup> <script setup>
import { ref, computed, onBeforeMount, onMounted } from 'vue'; import { ref, computed, onBeforeMount, onMounted } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { useRouter } from 'vue-router'; import { useRoute, useRouter } from 'vue-router';
import { date, QBtn } from 'quasar'; import { date, QBtn } from 'quasar';
@ -12,6 +12,7 @@ import { useStateStore } from 'stores/useStateStore';
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue'; import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
const { t } = useI18n(); const { t } = useI18n();
const route = useRoute();
const router = useRouter(); const router = useRouter();
const stateStore = useStateStore(); const stateStore = useStateStore();
@ -29,7 +30,7 @@ onBeforeMount(async () => {
}, },
}, },
], ],
where: { clientFk: '1' }, where: { clientFk: `${route.params.id}` },
order: ['created DESC'], order: ['created DESC'],
limit: 20, limit: 20,
}; };

View File

@ -37,109 +37,63 @@ const zones = ref();
</div> </div>
</template> </template>
<template #body="{ params, searchFn }"> <template #body="{ params, searchFn }">
<QItem class="q-my-sm"> <QList dense class="list">
<QItemSection> <QItem class="q-my-sm">
<VnInput :label="t('FI')" v-model="params.fi" is-outlined>
<template #prepend>
<QIcon name="badge" size="xs" />
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem class="q-mb-sm">
<QItemSection>
<VnInput :label="t('Name')" v-model="params.name" is-outlined />
</QItemSection>
</QItem>
<QItem class="q-mb-sm">
<QItemSection>
<VnInput
:label="t('Social Name')"
v-model="params.socialName"
is-outlined
/>
</QItemSection>
</QItem>
<QItem class="q-mb-sm">
<QItemSection v-if="!workers">
<QSkeleton type="QInput" class="full-width" />
</QItemSection>
<QItemSection v-if="workers">
<VnSelectFilter
:label="t('Salesperson')"
v-model="params.salesPersonFk"
@update:model-value="searchFn()"
:options="workers"
option-value="id"
option-label="name"
emit-value
map-options
use-input
hide-selected
dense
outlined
rounded
:input-debounce="0"
/>
</QItemSection>
</QItem>
<QItem class="q-mb-sm">
<QItemSection v-if="!provinces">
<QSkeleton type="QInput" class="full-width" />
</QItemSection>
<QItemSection v-if="provinces">
<VnSelectFilter
:label="t('Province')"
v-model="params.provinceFk"
@update:model-value="searchFn()"
:options="provinces"
option-value="id"
option-label="name"
emit-value
map-options
hide-selected
dense
outlined
rounded
:input-debounce="0"
/>
</QItemSection>
</QItem>
<QItem class="q-mb-md">
<QItemSection>
<VnInput :label="t('City')" v-model="params.city" is-outlined />
</QItemSection>
</QItem>
<QSeparator />
<QExpansionItem :label="t('More options')" expand-separator>
<QItem>
<QItemSection> <QItemSection>
<VnInput :label="t('Phone')" v-model="params.phone" is-outlined> <VnInput :label="t('FI')" v-model="params.fi" is-outlined>
<template #prepend> <template #prepend>
<QIcon name="phone" size="xs" /> <QIcon name="badge" size="xs" />
</template> </template>
</VnInput> </VnInput>
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem class="q-mb-sm">
<QItemSection> <QItemSection>
<VnInput :label="t('Email')" v-model="params.email" is-outlined> <VnInput :label="t('Name')" v-model="params.name" is-outlined />
<template #prepend>
<QIcon name="email" size="sm" />
</template>
</VnInput>
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem class="q-mb-sm">
<QItemSection v-if="!zones"> <QItemSection>
<VnInput
:label="t('Social Name')"
v-model="params.socialName"
is-outlined
/>
</QItemSection>
</QItem>
<QItem class="q-mb-sm">
<QItemSection v-if="!workers">
<QSkeleton type="QInput" class="full-width" /> <QSkeleton type="QInput" class="full-width" />
</QItemSection> </QItemSection>
<QItemSection v-if="zones"> <QItemSection v-if="workers">
<VnSelectFilter <VnSelectFilter
:label="t('Zone')" :label="t('Salesperson')"
v-model="params.zoneFk" v-model="params.salesPersonFk"
@update:model-value="searchFn()" @update:model-value="searchFn()"
:options="zones" :options="workers"
option-value="id"
option-label="name"
emit-value
map-options
use-input
hide-selected
dense
outlined
rounded
:input-debounce="0"
/>
</QItemSection>
</QItem>
<QItem class="q-mb-sm">
<QItemSection v-if="!provinces">
<QSkeleton type="QInput" class="full-width" />
</QItemSection>
<QItemSection v-if="provinces">
<VnSelectFilter
:label="t('Province')"
v-model="params.provinceFk"
@update:model-value="searchFn()"
:options="provinces"
option-value="id" option-value="id"
option-label="name" option-label="name"
emit-value emit-value
@ -148,23 +102,88 @@ const zones = ref();
dense dense
outlined outlined
rounded rounded
:input-debounce="0"
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem class="q-mb-md">
<QItemSection> <QItemSection>
<VnInput <VnInput :label="t('City')" v-model="params.city" is-outlined />
:label="t('Postcode')"
v-model="params.postcode"
is-outlined
/>
</QItemSection> </QItemSection>
</QItem> </QItem>
</QExpansionItem> <QSeparator />
<QExpansionItem :label="t('More options')" expand-separator>
<QItem>
<QItemSection>
<VnInput
:label="t('Phone')"
v-model="params.phone"
is-outlined
>
<template #prepend>
<QIcon name="phone" size="xs" />
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput
:label="t('Email')"
v-model="params.email"
is-outlined
>
<template #prepend>
<QIcon name="email" size="sm" />
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem>
<QItemSection v-if="!zones">
<QSkeleton type="QInput" class="full-width" />
</QItemSection>
<QItemSection v-if="zones">
<VnSelectFilter
:label="t('Zone')"
v-model="params.zoneFk"
@update:model-value="searchFn()"
:options="zones"
option-value="id"
option-label="name"
emit-value
map-options
hide-selected
dense
outlined
rounded
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput
:label="t('Postcode')"
v-model="params.postcode"
is-outlined
/>
</QItemSection>
</QItem>
</QExpansionItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n> <i18n>
en: en:
params: params:

View File

@ -65,7 +65,7 @@ const redirectToCreateView = () => {
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
auto-load auto-load
data-key="CustomerList" data-key="CustomerList"
@ -116,6 +116,13 @@ const redirectToCreateView = () => {
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>
<i18n> <i18n>
es: es:
Search customer: Buscar cliente Search customer: Buscar cliente

View File

@ -46,148 +46,163 @@ const authors = ref();
</template> </template>
<template #body="{ params }"> <template #body="{ params }">
<QItem class="q-mb-sm q-mt-sm"> <QList dense class="list">
<QItemSection v-if="clients"> <QItem class="q-mb-sm q-mt-sm">
<VnSelectFilter <QItemSection v-if="clients">
:input-debounce="0" <VnSelectFilter
:label="t('Client')" :input-debounce="0"
:options="clients" :label="t('Client')"
dense :options="clients"
emit-value dense
hide-selected emit-value
map-options hide-selected
option-label="name" map-options
option-value="clientTypeFk" option-label="name"
outlined option-value="clientTypeFk"
rounded outlined
use-input rounded
v-model="params.clientFk" use-input
/> v-model="params.clientFk"
</QItemSection> />
<QItemSection v-else> </QItemSection>
<QSkeleton class="full-width" type="QInput" /> <QItemSection v-else>
</QItemSection> <QSkeleton class="full-width" type="QInput" />
</QItem> </QItemSection>
</QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection v-if="salespersons"> <QItemSection v-if="salespersons">
<VnSelectFilter <VnSelectFilter
:input-debounce="0" :input-debounce="0"
:label="t('Salesperson')" :label="t('Salesperson')"
:options="salespersons" :options="salespersons"
dense dense
emit-value emit-value
hide-selected hide-selected
map-options map-options
option-label="name" option-label="name"
option-value="id" option-value="id"
outlined outlined
rounded rounded
use-input use-input
v-model="params.salesPersonFk" v-model="params.salesPersonFk"
/> />
</QItemSection> </QItemSection>
<QItemSection v-else> <QItemSection v-else>
<QSkeleton class="full-width" type="QInput" /> <QSkeleton class="full-width" type="QInput" />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection v-if="countries"> <QItemSection v-if="countries">
<VnSelectFilter <VnSelectFilter
:input-debounce="0" :input-debounce="0"
:label="t('Country')" :label="t('Country')"
:options="countries" :options="countries"
dense dense
emit-value emit-value
hide-selected hide-selected
map-options map-options
option-label="country" option-label="country"
option-value="id" option-value="id"
outlined outlined
rounded rounded
use-input use-input
v-model="params.countryFk" v-model="params.countryFk"
/> />
</QItemSection> </QItemSection>
<QItemSection v-else> <QItemSection v-else>
<QSkeleton class="full-width" type="QInput" /> <QSkeleton class="full-width" type="QInput" />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection> <QItemSection>
<VnInput <VnInput
:label="t('P. Method')" :label="t('P. Method')"
is-outlined is-outlined
v-model="params.paymentMethod" v-model="params.paymentMethod"
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection> <QItemSection>
<VnInput <VnInput
:label="t('Balance D.')" :label="t('Balance D.')"
is-outlined is-outlined
v-model="params.balance" v-model="params.balance"
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection v-if="authors"> <QItemSection v-if="authors">
<VnSelectFilter <VnSelectFilter
:input-debounce="0" :input-debounce="0"
:label="t('Author')" :label="t('Author')"
:options="authors" :options="authors"
dense dense
emit-value emit-value
hide-selected hide-selected
map-options map-options
option-label="name" option-label="name"
option-value="id" option-value="id"
outlined outlined
rounded rounded
use-input use-input
v-model="params.workerFk" v-model="params.workerFk"
/> />
</QItemSection> </QItemSection>
<QItemSection v-else> <QItemSection v-else>
<QSkeleton class="full-width" type="QInput" /> <QSkeleton class="full-width" type="QInput" />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection> <QItemSection>
<VnInput :label="t('L. O. Date')" is-outlined v-model="params.date" /> <VnInput
</QItemSection> :label="t('L. O. Date')"
</QItem> is-outlined
v-model="params.date"
/>
</QItemSection>
</QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection> <QItemSection>
<VnInput <VnInput
:label="t('Credit I.')" :label="t('Credit I.')"
is-outlined is-outlined
v-model="params.credit" v-model="params.credit"
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection> <QItemSection>
<VnInputDate <VnInputDate
:label="t('From')" :label="t('From')"
is-outlined is-outlined
v-model="params.defaulterSinced" v-model="params.defaulterSinced"
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QSeparator /> <QSeparator />
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n> <i18n>
en: en:
params: params:

View File

@ -145,26 +145,27 @@ const shouldRenderColumn = (colName) => {
</div> </div>
</template> </template>
<template #body="{ params, searchFn }"> <template #body="{ params, searchFn }">
<QItem v-if="shouldRenderColumn('id')"> <QList dense class="list q-gutter-y-sm q-mt-sm">
<QItemSection> <QItem v-if="shouldRenderColumn('id')">
<VnInput <QItemSection>
:label="t('customer.extendedList.tableVisibleColumns.id')" <VnInput
v-model="params.id" :label="t('customer.extendedList.tableVisibleColumns.id')"
is-outlined v-model="params.id"
clearable is-outlined
/> clearable
</QItemSection> />
</QItem> </QItemSection>
<QItem v-if="shouldRenderColumn('name')"> </QItem>
<QItemSection> <QItem v-if="shouldRenderColumn('name')">
<VnInput <QItemSection>
:label="t('customer.extendedList.tableVisibleColumns.name')" <VnInput
v-model="params.name" :label="t('customer.extendedList.tableVisibleColumns.name')"
is-outlined v-model="params.name"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<!-- <QItem class="q-mb-sm"> </QItem>
<!-- <QItem class="q-mb-sm">
<QItemSection v-if="!clients"> <QItemSection v-if="!clients">
<QSkeleton type="QInput" class="full-width" /> <QSkeleton type="QInput" class="full-width" />
</QItemSection> </QItemSection>
@ -187,384 +188,429 @@ const shouldRenderColumn = (colName) => {
/> />
</QItemSection> </QItemSection>
</QItem> --> </QItem> -->
<QItem v-if="shouldRenderColumn('fi')"> <QItem v-if="shouldRenderColumn('fi')">
<QItemSection> <QItemSection>
<VnInput <VnInput
:label="t('customer.extendedList.tableVisibleColumns.fi')" :label="t('customer.extendedList.tableVisibleColumns.fi')"
v-model="params.fi" v-model="params.fi"
is-outlined is-outlined
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem v-if="shouldRenderColumn('salesPersonFk')"> <QItem v-if="shouldRenderColumn('salesPersonFk')">
<QItemSection v-if="!workers"> <QItemSection v-if="!workers">
<QSkeleton type="QInput" class="full-width" /> <QSkeleton type="QInput" class="full-width" />
</QItemSection> </QItemSection>
<QItemSection v-if="workers"> <QItemSection v-if="workers">
<VnSelectFilter <VnSelectFilter
:label=" :label="
t('customer.extendedList.tableVisibleColumns.salesPersonFk') t(
" 'customer.extendedList.tableVisibleColumns.salesPersonFk'
v-model="params.salesPersonFk" )
@update:model-value="searchFn()" "
:options="workers" v-model="params.salesPersonFk"
option-value="id" @update:model-value="searchFn()"
option-label="name" :options="workers"
emit-value option-value="id"
map-options option-label="name"
use-input emit-value
hide-selected map-options
dense use-input
outlined hide-selected
rounded dense
:input-debounce="0" outlined
/> rounded
</QItemSection> :input-debounce="0"
</QItem> />
<QItem v-if="shouldRenderColumn('credit')"> </QItemSection>
<QItemSection> </QItem>
<VnInput <QItem v-if="shouldRenderColumn('credit')">
:label="t('customer.extendedList.tableVisibleColumns.credit')" <QItemSection>
v-model="params.credit" <VnInput
is-outlined :label="t('customer.extendedList.tableVisibleColumns.credit')"
/> v-model="params.credit"
</QItemSection> is-outlined
</QItem> />
<QItem v-if="shouldRenderColumn('creditInsurance')"> </QItemSection>
<QItemSection> </QItem>
<VnInput <QItem v-if="shouldRenderColumn('creditInsurance')">
:label=" <QItemSection>
t('customer.extendedList.tableVisibleColumns.creditInsurance') <VnInput
" :label="
v-model="params.creditInsurance" t(
is-outlined 'customer.extendedList.tableVisibleColumns.creditInsurance'
/> )
</QItemSection> "
</QItem> v-model="params.creditInsurance"
<QItem v-if="shouldRenderColumn('phone')"> is-outlined
<QItemSection> />
<VnInput </QItemSection>
:label="t('customer.extendedList.tableVisibleColumns.phone')" </QItem>
v-model="params.phone" <QItem v-if="shouldRenderColumn('phone')">
is-outlined <QItemSection>
/> <VnInput
</QItemSection> :label="t('customer.extendedList.tableVisibleColumns.phone')"
</QItem> v-model="params.phone"
<QItem v-if="shouldRenderColumn('mobile')"> is-outlined
<QItemSection> />
<VnInput </QItemSection>
:label="t('customer.extendedList.tableVisibleColumns.mobile')" </QItem>
v-model="params.mobile" <QItem v-if="shouldRenderColumn('mobile')">
is-outlined <QItemSection>
/> <VnInput
</QItemSection> :label="t('customer.extendedList.tableVisibleColumns.mobile')"
</QItem> v-model="params.mobile"
<QItem v-if="shouldRenderColumn('street')"> is-outlined
<QItemSection> />
<VnInput </QItemSection>
:label="t('customer.extendedList.tableVisibleColumns.street')" </QItem>
v-model="params.street" <QItem v-if="shouldRenderColumn('street')">
is-outlined <QItemSection>
/> <VnInput
</QItemSection> :label="t('customer.extendedList.tableVisibleColumns.street')"
</QItem> v-model="params.street"
<QItem v-if="shouldRenderColumn('countryFk')"> is-outlined
<QItemSection> />
<VnSelectFilter </QItemSection>
:label="t('customer.extendedList.tableVisibleColumns.countryFk')" </QItem>
v-model="params.countryFk" <QItem v-if="shouldRenderColumn('countryFk')">
@update:model-value="searchFn()" <QItemSection>
:options="countriesOptions" <VnSelectFilter
option-value="id" :label="
option-label="country" t('customer.extendedList.tableVisibleColumns.countryFk')
map-options "
hide-selected v-model="params.countryFk"
dense @update:model-value="searchFn()"
outlined :options="countriesOptions"
rounded option-value="id"
/> option-label="country"
</QItemSection> map-options
</QItem> hide-selected
<QItem v-if="shouldRenderColumn('provinceFk')"> dense
<QItemSection> outlined
<VnSelectFilter rounded
:label="t('customer.extendedList.tableVisibleColumns.provinceFk')" />
v-model="params.provinceFk" </QItemSection>
@update:model-value="searchFn()" </QItem>
:options="provincesOptions" <QItem v-if="shouldRenderColumn('provinceFk')">
option-value="id" <QItemSection>
option-label="name" <VnSelectFilter
map-options :label="
hide-selected t('customer.extendedList.tableVisibleColumns.provinceFk')
dense "
outlined v-model="params.provinceFk"
rounded @update:model-value="searchFn()"
/> :options="provincesOptions"
</QItemSection> option-value="id"
</QItem> option-label="name"
<QItem v-if="shouldRenderColumn('city')"> map-options
<QItemSection> hide-selected
<VnInput dense
:label="t('customer.extendedList.tableVisibleColumns.city')" outlined
v-model="params.city" rounded
is-outlined />
/> </QItemSection>
</QItemSection> </QItem>
</QItem> <QItem v-if="shouldRenderColumn('city')">
<QItem v-if="shouldRenderColumn('postcode')"> <QItemSection>
<QItemSection> <VnInput
<VnInput :label="t('customer.extendedList.tableVisibleColumns.city')"
:label="t('customer.extendedList.tableVisibleColumns.postcode')" v-model="params.city"
v-model="params.postcode" is-outlined
is-outlined />
/> </QItemSection>
</QItemSection> </QItem>
</QItem> <QItem v-if="shouldRenderColumn('postcode')">
<QItem v-if="shouldRenderColumn('email')"> <QItemSection>
<QItemSection> <VnInput
<VnInput :label="
:label="t('customer.extendedList.tableVisibleColumns.email')" t('customer.extendedList.tableVisibleColumns.postcode')
v-model="params.email" "
is-outlined v-model="params.postcode"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
</QItem>
<QItem v-if="shouldRenderColumn('email')">
<QItemSection>
<VnInput
:label="t('customer.extendedList.tableVisibleColumns.email')"
v-model="params.email"
is-outlined
/>
</QItemSection>
</QItem>
<QItem v-if="shouldRenderColumn('created')"> <QItem v-if="shouldRenderColumn('created')">
<QItemSection> <QItemSection>
<VnInputDate <VnInputDate
v-model="params.created" v-model="params.created"
:label="t('customer.extendedList.tableVisibleColumns.created')" :label="
@update:model-value="searchFn()" t('customer.extendedList.tableVisibleColumns.created')
is-outlined "
/> @update:model-value="searchFn()"
</QItemSection> is-outlined
</QItem> />
<QItem v-if="shouldRenderColumn('businessTypeFk')"> </QItemSection>
<QItemSection> </QItem>
<VnSelectFilter <QItem v-if="shouldRenderColumn('businessTypeFk')">
:label=" <QItemSection>
t('customer.extendedList.tableVisibleColumns.businessTypeFk') <VnSelectFilter
" :label="
v-model="params.businessTypeFk" t(
:options="businessTypesOptions" 'customer.extendedList.tableVisibleColumns.businessTypeFk'
@update:model-value="searchFn()" )
option-value="code" "
option-label="description" v-model="params.businessTypeFk"
map-options :options="businessTypesOptions"
hide-selected @update:model-value="searchFn()"
dense option-value="code"
outlined option-label="description"
rounded map-options
/> hide-selected
</QItemSection> dense
</QItem> outlined
<QItem v-if="shouldRenderColumn('payMethodFk')"> rounded
<QItemSection> />
<VnSelectFilter </QItemSection>
:label=" </QItem>
t('customer.extendedList.tableVisibleColumns.payMethodFk') <QItem v-if="shouldRenderColumn('payMethodFk')">
" <QItemSection>
v-model="params.payMethodFk" <VnSelectFilter
:options="paymethodsOptions" :label="
@update:model-value="searchFn()" t('customer.extendedList.tableVisibleColumns.payMethodFk')
option-value="id" "
option-label="name" v-model="params.payMethodFk"
map-options :options="paymethodsOptions"
hide-selected @update:model-value="searchFn()"
dense option-value="id"
outlined option-label="name"
rounded map-options
/> hide-selected
</QItemSection> dense
</QItem> outlined
<QItem v-if="shouldRenderColumn('sageTaxTypeFk')"> rounded
<QItemSection> />
<VnSelectFilter </QItemSection>
:label=" </QItem>
t('customer.extendedList.tableVisibleColumns.sageTaxTypeFk') <QItem v-if="shouldRenderColumn('sageTaxTypeFk')">
" <QItemSection>
v-model="params.sageTaxTypeFk" <VnSelectFilter
@update:model-value="searchFn()" :label="
:options="sageTaxTypesOptions" t(
option-value="id" 'customer.extendedList.tableVisibleColumns.sageTaxTypeFk'
option-label="vat" )
map-options "
hide-selected v-model="params.sageTaxTypeFk"
dense @update:model-value="searchFn()"
outlined :options="sageTaxTypesOptions"
rounded option-value="id"
/> option-label="vat"
</QItemSection> map-options
</QItem> hide-selected
<QItem v-if="shouldRenderColumn('sageTransactionTypeFk')"> dense
<QItemSection> outlined
<VnSelectFilter rounded
:label=" />
t( </QItemSection>
'customer.extendedList.tableVisibleColumns.sageTransactionTypeFk' </QItem>
) <QItem v-if="shouldRenderColumn('sageTransactionTypeFk')">
" <QItemSection>
v-model="params.sageTransactionTypeFk" <VnSelectFilter
@update:model-value="searchFn()" :label="
:options="sageTransactionTypesOptions" t(
option-value="id" 'customer.extendedList.tableVisibleColumns.sageTransactionTypeFk'
option-label="transaction" )
map-options "
hide-selected v-model="params.sageTransactionTypeFk"
dense @update:model-value="searchFn()"
outlined :options="sageTransactionTypesOptions"
rounded option-value="id"
/> option-label="transaction"
</QItemSection> map-options
</QItem> hide-selected
<QItem v-if="shouldRenderColumn('isActive') || shouldRenderColumn('isVies')"> dense
<QItemSection v-if="shouldRenderColumn('isActive')"> outlined
<QCheckbox rounded
v-model="params.isActive" />
@update:model-value="searchFn()" </QItemSection>
:label="t('customer.extendedList.tableVisibleColumns.isActive')" </QItem>
toggle-indeterminate <QItem
:false-value="undefined" v-if="shouldRenderColumn('isActive') || shouldRenderColumn('isVies')"
/> >
</QItemSection> <QItemSection v-if="shouldRenderColumn('isActive')">
<QItemSection v-if="shouldRenderColumn('isVies')"> <QCheckbox
<QCheckbox v-model="params.isActive"
v-model="params.isVies" @update:model-value="searchFn()"
@update:model-value="searchFn()" :label="
:label="t('customer.extendedList.tableVisibleColumns.isVies')" t('customer.extendedList.tableVisibleColumns.isActive')
toggle-indeterminate "
:false-value="undefined" toggle-indeterminate
/> :false-value="undefined"
</QItemSection> />
</QItem> </QItemSection>
<QItem <QItemSection v-if="shouldRenderColumn('isVies')">
v-if=" <QCheckbox
shouldRenderColumn('isEqualizated') || v-model="params.isVies"
shouldRenderColumn('isTaxDataChecked') @update:model-value="searchFn()"
" :label="t('customer.extendedList.tableVisibleColumns.isVies')"
> toggle-indeterminate
<QItemSection v-if="shouldRenderColumn('isTaxDataChecked')"> :false-value="undefined"
<QCheckbox />
v-model="params.isTaxDataChecked" </QItemSection>
@update:model-value="searchFn()" </QItem>
:label=" <QItem
t( v-if="
'customer.extendedList.tableVisibleColumns.isTaxDataChecked' shouldRenderColumn('isEqualizated') ||
) shouldRenderColumn('isTaxDataChecked')
" "
toggle-indeterminate >
:false-value="undefined" <QItemSection v-if="shouldRenderColumn('isTaxDataChecked')">
/> <QCheckbox
</QItemSection> v-model="params.isTaxDataChecked"
<QItemSection v-if="shouldRenderColumn('isEqualizated')"> @update:model-value="searchFn()"
<QCheckbox :label="
v-model="params.isEqualizated" t(
@update:model-value="searchFn()" 'customer.extendedList.tableVisibleColumns.isTaxDataChecked'
:label=" )
t('customer.extendedList.tableVisibleColumns.isEqualizated') "
" toggle-indeterminate
toggle-indeterminate :false-value="undefined"
:false-value="undefined" />
/> </QItemSection>
</QItemSection> <QItemSection v-if="shouldRenderColumn('isEqualizated')">
</QItem> <QCheckbox
<QItem v-model="params.isEqualizated"
v-if=" @update:model-value="searchFn()"
shouldRenderColumn('hasToInvoice') || shouldRenderColumn('isFreezed') :label="
" t(
> 'customer.extendedList.tableVisibleColumns.isEqualizated'
<QItemSection v-if="shouldRenderColumn('isFreezed')"> )
<QCheckbox "
v-model="params.isFreezed" toggle-indeterminate
@update:model-value="searchFn()" :false-value="undefined"
:label="t('customer.extendedList.tableVisibleColumns.isFreezed')" />
toggle-indeterminate </QItemSection>
:false-value="undefined" </QItem>
/> <QItem
</QItemSection> v-if="
<QItemSection v-if="shouldRenderColumn('hasToInvoice')"> shouldRenderColumn('hasToInvoice') ||
<QCheckbox shouldRenderColumn('isFreezed')
v-model="params.hasToInvoice" "
@update:model-value="searchFn()" >
:label=" <QItemSection v-if="shouldRenderColumn('isFreezed')">
t('customer.extendedList.tableVisibleColumns.hasToInvoice') <QCheckbox
" v-model="params.isFreezed"
toggle-indeterminate @update:model-value="searchFn()"
:false-value="undefined" :label="
/> t('customer.extendedList.tableVisibleColumns.isFreezed')
</QItemSection> "
</QItem> toggle-indeterminate
<QItem :false-value="undefined"
v-if=" />
shouldRenderColumn('isToBeMailed') || </QItemSection>
shouldRenderColumn('hasToInvoiceByAddress') <QItemSection v-if="shouldRenderColumn('hasToInvoice')">
" <QCheckbox
> v-model="params.hasToInvoice"
<QItemSection v-if="shouldRenderColumn('hasToInvoiceByAddress')"> @update:model-value="searchFn()"
<QCheckbox :label="
v-model="params.hasToInvoiceByAddress" t(
@update:model-value="searchFn()" 'customer.extendedList.tableVisibleColumns.hasToInvoice'
:label=" )
t( "
'customer.extendedList.tableVisibleColumns.hasToInvoiceByAddress' toggle-indeterminate
) :false-value="undefined"
" />
toggle-indeterminate </QItemSection>
:false-value="undefined" </QItem>
/> <QItem
</QItemSection> v-if="
<QItemSection v-if="shouldRenderColumn('isToBeMailed')"> shouldRenderColumn('isToBeMailed') ||
<QCheckbox shouldRenderColumn('hasToInvoiceByAddress')
v-model="params.isToBeMailed" "
@update:model-value="searchFn()" >
:label=" <QItemSection v-if="shouldRenderColumn('hasToInvoiceByAddress')">
t('customer.extendedList.tableVisibleColumns.isToBeMailed') <QCheckbox
" v-model="params.hasToInvoiceByAddress"
toggle-indeterminate @update:model-value="searchFn()"
:false-value="undefined" :label="
/> t(
</QItemSection> 'customer.extendedList.tableVisibleColumns.hasToInvoiceByAddress'
</QItem> )
<QItem "
v-if="shouldRenderColumn('hasLcr') || shouldRenderColumn('hasCoreVnl')" toggle-indeterminate
> :false-value="undefined"
<QItemSection v-if="shouldRenderColumn('hasLcr')"> />
<QCheckbox </QItemSection>
v-model="params.hasLcr" <QItemSection v-if="shouldRenderColumn('isToBeMailed')">
@update:model-value="searchFn()" <QCheckbox
:label="t('customer.extendedList.tableVisibleColumns.hasLcr')" v-model="params.isToBeMailed"
toggle-indeterminate @update:model-value="searchFn()"
:false-value="undefined" :label="
/> t(
</QItemSection> 'customer.extendedList.tableVisibleColumns.isToBeMailed'
<QItemSection v-if="shouldRenderColumn('hasCoreVnl')"> )
<QCheckbox "
v-model="params.hasCoreVnl" toggle-indeterminate
@update:model-value="searchFn()" :false-value="undefined"
:label="t('customer.extendedList.tableVisibleColumns.hasCoreVnl')" />
toggle-indeterminate </QItemSection>
:false-value="undefined" </QItem>
/> <QItem
</QItemSection> v-if="
</QItem> shouldRenderColumn('hasLcr') || shouldRenderColumn('hasCoreVnl')
<QItem v-if="shouldRenderColumn('hasSepaVnl')"> "
<QItemSection> >
<QCheckbox <QItemSection v-if="shouldRenderColumn('hasLcr')">
v-model="params.hasSepaVnl" <QCheckbox
@update:model-value="searchFn()" v-model="params.hasLcr"
:label="t('customer.extendedList.tableVisibleColumns.hasSepaVnl')" @update:model-value="searchFn()"
toggle-indeterminate :label="t('customer.extendedList.tableVisibleColumns.hasLcr')"
:false-value="undefined" toggle-indeterminate
/> :false-value="undefined"
</QItemSection> />
</QItem> </QItemSection>
<QItemSection v-if="shouldRenderColumn('hasCoreVnl')">
<QCheckbox
v-model="params.hasCoreVnl"
@update:model-value="searchFn()"
:label="
t('customer.extendedList.tableVisibleColumns.hasCoreVnl')
"
toggle-indeterminate
:false-value="undefined"
/>
</QItemSection>
</QItem>
<QItem v-if="shouldRenderColumn('hasSepaVnl')">
<QItemSection>
<QCheckbox
v-model="params.hasSepaVnl"
@update:model-value="searchFn()"
:label="
t('customer.extendedList.tableVisibleColumns.hasSepaVnl')
"
toggle-indeterminate
:false-value="undefined"
/>
</QItemSection>
</QItem>
<QSeparator /> <QSeparator />
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n> <i18n>
es: es:
Social name: Razón social Social name: Razón social

View File

@ -36,80 +36,91 @@ const clients = ref();
</template> </template>
<template #body="{ params, searchFn }"> <template #body="{ params, searchFn }">
<QItem class="q-mb-sm q-mt-sm"> <QList dense class="list">
<QItemSection> <QItem class="q-mb-sm q-mt-sm">
<VnInput <QItemSection>
:label="t('Identifier')" <VnInput
is-outlined :label="t('Identifier')"
v-model="params.identifier" is-outlined
/> v-model="params.identifier"
</QItemSection> />
</QItem> </QItemSection>
</QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection v-if="!clients"> <QItemSection v-if="!clients">
<QSkeleton type="QInput" class="full-width" /> <QSkeleton type="QInput" class="full-width" />
</QItemSection> </QItemSection>
<QItemSection v-if="clients"> <QItemSection v-if="clients">
<VnSelectFilter <VnSelectFilter
:input-debounce="0" :input-debounce="0"
:label="t('Social name')" :label="t('Social name')"
:options="clients" :options="clients"
@update:model-value="searchFn()" @update:model-value="searchFn()"
dense dense
emit-value emit-value
hide-selected hide-selected
map-options map-options
option-label="socialName" option-label="socialName"
option-value="socialName" option-value="socialName"
outlined outlined
rounded rounded
use-input use-input
v-model="params.socialName" v-model="params.socialName"
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection v-if="!cities"> <QItemSection v-if="!cities">
<QSkeleton type="QInput" class="full-width" /> <QSkeleton type="QInput" class="full-width" />
</QItemSection> </QItemSection>
<QItemSection v-if="cities"> <QItemSection v-if="cities">
<VnSelectFilter <VnSelectFilter
:input-debounce="0" :input-debounce="0"
:label="t('City')" :label="t('City')"
:options="cities" :options="cities"
@update:model-value="searchFn()" @update:model-value="searchFn()"
dense dense
emit-value emit-value
hide-selected hide-selected
map-options map-options
option-label="name" option-label="name"
option-value="name" option-value="name"
outlined outlined
rounded rounded
use-input use-input
v-model="params.city" v-model="params.city"
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection> <QItemSection>
<VnInput :label="t('Phone')" is-outlined v-model="params.phone" /> <VnInput :label="t('Phone')" is-outlined v-model="params.phone" />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection> <QItemSection>
<VnInput :label="t('Email')" is-outlined v-model="params.email" /> <VnInput :label="t('Email')" is-outlined v-model="params.email" />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QSeparator /> <QSeparator />
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n> <i18n>
en: en:
params: params:

View File

@ -122,7 +122,7 @@ function stateColor(row) {
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<QPage class="column items-center q-pa-md customer-payments"> <QPage class="column items-center q-pa-md customer-payments">
<div class="vn-card-list"> <div class="card-list">
<QToolbar class="q-pa-none justify-end"> <QToolbar class="q-pa-none justify-end">
<QBtn <QBtn
@click="arrayData.refresh()" @click="arrayData.refresh()"
@ -278,13 +278,18 @@ function stateColor(row) {
<style lang="scss"> <style lang="scss">
.customer-payments { .customer-payments {
.q-table--dense .q-table th:first-child { .card-list {
padding-left: 0; width: 100%;
} max-width: 60em;
td {
max-width: 130px; .q-table--dense .q-table th:first-child {
overflow: hidden; padding-left: 0;
text-overflow: ellipsis; }
td {
max-width: 130px;
overflow: hidden;
text-overflow: ellipsis;
}
} }
} }
</style> </style>

View File

@ -27,60 +27,71 @@ function isValidNumber(value) {
</div> </div>
</template> </template>
<template #body="{ params }"> <template #body="{ params }">
<QItem> <QList dense class="q-gutter-y-sm q-mt-sm">
<QItemSection> <QItem>
<VnInput :label="t('Order ID')" v-model="params.orderFk" is-outlined> <QItemSection>
<template #prepend> <VnInput
<QIcon name="vn:basket" size="xs" /> :label="t('Order ID')"
</template> v-model="params.orderFk"
</VnInput> is-outlined
</QItemSection> >
</QItem> <template #prepend>
<QItem> <QIcon name="vn:basket" size="xs" />
<QItemSection> </template>
<VnInput </VnInput>
:label="t('Customer ID')" </QItemSection>
v-model="params.clientFk" </QItem>
is-outlined <QItem>
> <QItemSection>
<template #prepend> <VnInput
<QIcon name="vn:client" size="xs" /> :label="t('Customer ID')"
</template> v-model="params.clientFk"
</VnInput> is-outlined
</QItemSection> >
</QItem> <template #prepend>
<QItem> <QIcon name="vn:client" size="xs" />
<QItemSection> </template>
<VnInput </VnInput>
:label="t('Amount')" </QItemSection>
v-model="params.amount" </QItem>
is-outlined <QItem>
@update:model-value=" <QItemSection>
(value) => { <VnInput
if (value.includes(',')) :label="t('Amount')"
params.amount = params.amount.replace(',', '.'); v-model="params.amount"
} is-outlined
" @update:model-value="
:rules="[ (value) => {
(val) => isValidNumber(val) || !val || 'Please type a number', if (value.includes(','))
]" params.amount = params.amount.replace(',', '.');
lazy-rules }
> "
<template #prepend> :rules="[
<QIcon name="euro" size="sm" /> (val) =>
</template> isValidNumber(val) || !val || 'Please type a number',
</VnInput> ]"
</QItemSection> lazy-rules
</QItem> >
<template #prepend>
<QIcon name="euro" size="sm" />
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInputDate v-model="params.from" :label="t('From')" is-outlined /> <VnInputDate
</QItemSection> v-model="params.from"
<QItemSection> :label="t('From')"
<VnInputDate v-model="params.to" :label="t('To')" is-outlined /> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItemSection>
<VnInputDate v-model="params.to" :label="t('To')" is-outlined />
</QItemSection>
</QItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>

View File

@ -54,149 +54,151 @@ const suppliersOptions = ref([]);
</div> </div>
</template> </template>
<template #body="{ params }"> <template #body="{ params }">
<QItem> <QList dense class="list q-gutter-y-sm q-mt-sm">
<QItemSection> <QItem>
<VnInput <QItemSection>
v-model="params.search" <VnInput
:label="t('params.search')" v-model="params.search"
is-outlined :label="t('params.search')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
v-model="params.reference" <VnInput
:label="t('params.reference')" v-model="params.reference"
is-outlined :label="t('params.reference')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
v-model="params.invoiceNumber" <VnInput
:label="t('params.invoiceNumber')" v-model="params.invoiceNumber"
is-outlined :label="t('params.invoiceNumber')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
v-model="params.travelFk" <VnInput
:label="t('params.travelFk')" v-model="params.travelFk"
is-outlined :label="t('params.travelFk')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('params.companyFk')" <VnSelectFilter
v-model="params.companyFk" :label="t('params.companyFk')"
:options="companiesOptions" v-model="params.companyFk"
option-value="id" :options="companiesOptions"
option-label="code" option-value="id"
hide-selected option-label="code"
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('params.currencyFk')" <VnSelectFilter
v-model="params.currencyFk" :label="t('params.currencyFk')"
:options="currenciesOptions" v-model="params.currencyFk"
option-value="id" :options="currenciesOptions"
option-label="name" option-value="id"
hide-selected option-label="name"
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('params.supplierFk')" <VnSelectFilter
v-model="params.supplierFk" :label="t('params.supplierFk')"
:options="suppliersOptions" v-model="params.supplierFk"
option-value="id" :options="suppliersOptions"
option-label="name" option-value="id"
hide-selected option-label="name"
dense hide-selected
outlined dense
rounded outlined
> rounded
<template #option="scope"> >
<QItem v-bind="scope.itemProps"> <template #option="scope">
<QItemSection> <QItem v-bind="scope.itemProps">
<QItemLabel>{{ <QItemSection>
scope.opt?.name + ': ' + scope.opt?.nickname <QItemLabel>{{
}}</QItemLabel> scope.opt?.name + ': ' + scope.opt?.nickname
</QItemSection> }}</QItemLabel>
</QItem> </QItemSection>
</template> </QItem>
</VnSelectFilter> </template>
</QItemSection> </VnSelectFilter>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInputDate <QItemSection>
:label="t('params.created')" <VnInputDate
is-outlined :label="t('params.created')"
v-model="params.created" is-outlined
/> v-model="params.created"
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInputDate <QItemSection>
:label="t('params.from')" <VnInputDate
is-outlined :label="t('params.from')"
v-model="params.from" is-outlined
/> v-model="params.from"
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInputDate <QItemSection>
:label="t('params.to')" <VnInputDate
is-outlined :label="t('params.to')"
v-model="params.to" is-outlined
/> v-model="params.to"
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<QCheckbox <QItemSection>
:label="t('params.isBooked')" <QCheckbox
v-model="params.isBooked" :label="t('params.isBooked')"
toggle-indeterminate v-model="params.isBooked"
/> toggle-indeterminate
</QItemSection> />
<QItemSection> </QItemSection>
<QCheckbox <QItemSection>
:label="t('params.isConfirmed')" <QCheckbox
v-model="params.isConfirmed" :label="t('params.isConfirmed')"
toggle-indeterminate v-model="params.isConfirmed"
/> toggle-indeterminate
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<QCheckbox <QItemSection>
:label="t('params.isOrdered')" <QCheckbox
v-model="params.isOrdered" :label="t('params.isOrdered')"
toggle-indeterminate v-model="params.isOrdered"
/> toggle-indeterminate
</QItemSection> />
</QItem> </QItemSection>
</QItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>

View File

@ -47,7 +47,7 @@ onMounted(async () => {
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="EntryList" data-key="EntryList"
url="Entries/filter" url="Entries/filter"
@ -128,6 +128,13 @@ onMounted(async () => {
</QPageSticky> </QPageSticky>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>
<i18n> <i18n>
es: es:
Search entries: Buscar entradas Search entries: Buscar entradas

View File

@ -36,121 +36,55 @@ const suppliersRef = ref();
</div> </div>
</template> </template>
<template #body="{ params, searchFn }"> <template #body="{ params, searchFn }">
<QItem> <QList dense class="list q-gutter-y-sm q-mt-sm">
<QItemSection>
<VnInput
:label="t('Id or Supplier')"
v-model="params.search"
is-outlined
>
<template #prepend>
<QIcon name="badge" size="sm"></QIcon>
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput
:label="t('params.supplierRef')"
v-model="params.supplierRef"
is-outlined
lazy-rules
>
<template #prepend>
<QIcon name="vn:client" size="sm"></QIcon>
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnSelectFilter
:label="t('params.supplierFk')"
v-model="params.supplierFk"
:options="suppliers"
option-value="id"
option-label="nickname"
@input-value="suppliersRef.fetch()"
dense
outlined
rounded
>
</VnSelectFilter>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput
:label="t('params.fi')"
v-model="params.fi"
is-outlined
lazy-rules
>
<template #prepend>
<QIcon name="badge" size="sm"></QIcon>
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput
:label="t('params.serialNumber')"
v-model="params.serialNumber"
is-outlined
lazy-rules
>
<template #prepend>
<QIcon name="badge" size="sm"></QIcon>
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput
:label="t('params.serial')"
v-model="params.serial"
is-outlined
lazy-rules
>
<template #prepend>
<QIcon name="badge" size="sm"></QIcon>
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput
:label="t('Amount')"
v-model="params.amount"
is-outlined
lazy-rules
>
<template #prepend>
<QIcon name="euro" size="sm"></QIcon>
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem class="q-mb-md">
<QItemSection>
<QCheckbox
:label="t('params.isBooked')"
v-model="params.isBooked"
@update:model-value="searchFn()"
toggle-indeterminate
/>
</QItemSection>
</QItem>
<QExpansionItem :label="t('More options')" expand-separator>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInput <VnInput
:label="t('params.awb')" :label="t('Id or Supplier')"
v-model="params.awbCode" v-model="params.search"
is-outlined
>
<template #prepend>
<QIcon name="badge" size="sm"></QIcon>
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput
:label="t('params.supplierRef')"
v-model="params.supplierRef"
is-outlined
lazy-rules
>
<template #prepend>
<QIcon name="vn:client" size="sm"></QIcon>
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnSelectFilter
:label="t('params.supplierFk')"
v-model="params.supplierFk"
:options="suppliers"
option-value="id"
option-label="nickname"
@input-value="suppliersRef.fetch()"
dense
outlined
rounded
>
</VnSelectFilter>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput
:label="t('params.fi')"
v-model="params.fi"
is-outlined is-outlined
lazy-rules lazy-rules
> >
@ -163,45 +97,126 @@ const suppliersRef = ref();
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInput <VnInput
:label="t('params.account')" :label="t('params.serialNumber')"
v-model="params.account" v-model="params.serialNumber"
is-outlined is-outlined
lazy-rules lazy-rules
> >
<template #prepend> <template #prepend>
<QIcon name="person" size="sm" /> <QIcon name="badge" size="sm"></QIcon>
</template> </template>
</VnInput> </VnInput>
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInputDate <VnInput
:label="t('From')" :label="t('params.serial')"
v-model="params.from" v-model="params.serial"
is-outlined is-outlined
/> lazy-rules
>
<template #prepend>
<QIcon name="badge" size="sm"></QIcon>
</template>
</VnInput>
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInputDate :label="t('To')" v-model="params.to" is-outlined /> <VnInput
:label="t('Amount')"
v-model="params.amount"
is-outlined
lazy-rules
>
<template #prepend>
<QIcon name="euro" size="sm"></QIcon>
</template>
</VnInput>
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem class="q-mb-md">
<QItemSection> <QItemSection>
<VnInputDate <QCheckbox
:label="t('Issued')" :label="t('params.isBooked')"
v-model="params.issued" v-model="params.isBooked"
is-outlined @update:model-value="searchFn()"
toggle-indeterminate
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
</QExpansionItem> <QExpansionItem :label="t('More options')" expand-separator>
<QItem>
<QItemSection>
<VnInput
:label="t('params.awb')"
v-model="params.awbCode"
is-outlined
lazy-rules
>
<template #prepend>
<QIcon name="badge" size="sm"></QIcon>
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput
:label="t('params.account')"
v-model="params.account"
is-outlined
lazy-rules
>
<template #prepend>
<QIcon name="person" size="sm" />
</template>
</VnInput>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInputDate
:label="t('From')"
v-model="params.from"
is-outlined
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInputDate
:label="t('To')"
v-model="params.to"
is-outlined
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInputDate
:label="t('Issued')"
v-model="params.issued"
is-outlined
/>
</QItemSection>
</QItem>
</QExpansionItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n> <i18n>
en: en:
params: params:

View File

@ -71,7 +71,7 @@ function viewSummary(id) {
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="InvoiceInList" data-key="InvoiceInList"
url="InvoiceIns/filter" url="InvoiceIns/filter"
@ -157,6 +157,13 @@ function viewSummary(id) {
</QPageSticky> </QPageSticky>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>
<i18n> <i18n>
es: es:
Search invoice: Buscar factura emitida Search invoice: Buscar factura emitida

View File

@ -41,89 +41,95 @@ function setWorkers(data) {
</div> </div>
</template> </template>
<template #body="{ params, searchFn }"> <template #body="{ params, searchFn }">
<QItem> <QList dense class="q-gutter-y-sm q-mt-sm">
<QItemSection>
<VnInput
:label="t('Customer ID')"
v-model="params.clientFk"
is-outlined
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput v-model="params.fi" :label="t('FI')" is-outlined />
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput :label="t('Amount')" v-model="params.amount" is-outlined />
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<QInput
:label="t('Min')"
dense
lazy-rules
outlined
rounded
type="number"
v-model.number="params.min"
/>
</QItemSection>
<QItemSection>
<QInput
:label="t('Max')"
dense
lazy-rules
outlined
rounded
type="number"
v-model.number="params.max"
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<QCheckbox
:label="t('Has PDF')"
@update:model-value="searchFn()"
toggle-indeterminate
v-model="params.hasPdf"
/>
</QItemSection>
</QItem>
<QSeparator />
<QExpansionItem :label="t('More options')" expand-separator>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInputDate <VnInput
v-model="params.issued" :label="t('Customer ID')"
:label="t('Issued')" v-model="params.clientFk"
is-outlined is-outlined
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInputDate <VnInput v-model="params.fi" :label="t('FI')" is-outlined />
v-model="params.created" </QItemSection>
:label="t('Created')" </QItem>
<QItem>
<QItemSection>
<VnInput
:label="t('Amount')"
v-model="params.amount"
is-outlined is-outlined
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInputDate <QInput
v-model="params.dued" :label="t('Min')"
:label="t('Dued')" dense
is-outlined lazy-rules
outlined
rounded
type="number"
v-model.number="params.min"
/>
</QItemSection>
<QItemSection>
<QInput
:label="t('Max')"
dense
lazy-rules
outlined
rounded
type="number"
v-model.number="params.max"
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
</QExpansionItem> <QItem>
<QItemSection>
<QCheckbox
:label="t('Has PDF')"
@update:model-value="searchFn()"
toggle-indeterminate
v-model="params.hasPdf"
/>
</QItemSection>
</QItem>
<QSeparator />
<QExpansionItem :label="t('More options')" expand-separator>
<QItem>
<QItemSection>
<VnInputDate
v-model="params.issued"
:label="t('Issued')"
is-outlined
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInputDate
v-model="params.created"
:label="t('Created')"
is-outlined
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInputDate
v-model="params.dued"
:label="t('Dued')"
is-outlined
/>
</QItemSection>
</QItem>
</QExpansionItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>

View File

@ -181,7 +181,7 @@ const downloadCsv = () => {
</div> </div>
</QToolbar> </QToolbar>
<div class="flex flex-center q-pa-md"> <div class="flex flex-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<CardList <CardList
:element="row" :element="row"
:id="row.id" :id="row.id"
@ -246,6 +246,13 @@ const downloadCsv = () => {
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>
<i18n> <i18n>
en: en:
searchInvoice: Search issued invoice searchInvoice: Search issued invoice

View File

@ -27,83 +27,87 @@ const props = defineProps({
</div> </div>
</template> </template>
<template #body="{ params }"> <template #body="{ params }">
<QItem> <QList dense class="q-gutter-y-sm q-mt-sm">
<QItemSection> <QItem>
<VnInputDate <QItemSection>
v-model="params.from" <VnInputDate
:label="t('invoiceOut.negativeBases.from')" v-model="params.from"
is-outlined :label="t('invoiceOut.negativeBases.from')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInputDate <QItemSection>
v-model="params.to" <VnInputDate
:label="t('invoiceOut.negativeBases.to')" v-model="params.to"
is-outlined :label="t('invoiceOut.negativeBases.to')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
v-model="params.company" <VnInput
:label="t('invoiceOut.negativeBases.company')" v-model="params.company"
is-outlined :label="t('invoiceOut.negativeBases.company')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
v-model="params.country" <VnInput
:label="t('invoiceOut.negativeBases.country')" v-model="params.country"
is-outlined :label="t('invoiceOut.negativeBases.country')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
</QItem>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInput <VnInput
v-model="params.clientId" v-model="params.clientId"
:label="t('invoiceOut.negativeBases.clientId')" :label="t('invoiceOut.negativeBases.clientId')"
is-outlined is-outlined
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInput <VnInput
v-model="params.clientSocialName" v-model="params.clientSocialName"
:label="t('invoiceOut.negativeBases.client')" :label="t('invoiceOut.negativeBases.client')"
is-outlined is-outlined
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInput <VnInput
v-model="params.amount" v-model="params.amount"
:label="t('invoiceOut.negativeBases.amount')" :label="t('invoiceOut.negativeBases.amount')"
is-outlined is-outlined
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnInput <VnInput
v-model="params.comercialName" v-model="params.comercialName"
:label="t('invoiceOut.negativeBases.comercial')" :label="t('invoiceOut.negativeBases.comercial')"
is-outlined is-outlined
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>
<style scoped></style>
<i18n> <i18n>
en: en:
params: params:

View File

@ -219,181 +219,183 @@ const getCategoryClass = (category, params) => {
</template> </template>
</template> </template>
<template #body="{ params, searchFn }"> <template #body="{ params, searchFn }">
<QItem class="category-filter q-mt-md"> <QList dense style="max-width: 256px">
<div <QItem class="category-filter q-mt-md">
v-for="category in categoryList" <div
:key="category.name" v-for="category in categoryList"
:class="['category', getCategoryClass(category, params)]" :key="category.name"
> :class="['category', getCategoryClass(category, params)]"
<QIcon
:name="category.icon"
class="category-icon"
@click="selectCategory(params, category, searchFn)"
> >
<QTooltip> <QIcon
{{ t(category.name) }} :name="category.icon"
</QTooltip> class="category-icon"
</QIcon> @click="selectCategory(params, category, searchFn)"
</div> >
</QItem> <QTooltip>
<QItem class="q-my-md"> {{ t(category.name) }}
<QItemSection> </QTooltip>
</QIcon>
</div>
</QItem>
<QItem class="q-my-md">
<QItemSection>
<VnSelectFilter
:label="t('params.type')"
v-model="params.typeFk"
:options="typeList"
option-value="id"
option-label="name"
dense
outlined
rounded
emit-value
use-input
:disable="!selectedCategoryFk"
@update:model-value="
(value) => {
selectedTypeFk = value;
searchFn();
}
"
>
<template #option="{ itemProps, opt }">
<QItem v-bind="itemProps">
<QItemSection>
<QItemLabel>{{ opt.name }}</QItemLabel>
<QItemLabel caption>
{{ opt.categoryName }}
</QItemLabel>
</QItemSection>
</QItem>
</template>
</VnSelectFilter>
</QItemSection>
</QItem>
<QSeparator />
<QItem class="q-my-md">
<QItemSection>
<VnSelectFilter
:label="t('params.order')"
v-model="selectedOrder"
:options="orderList || []"
option-value="way"
option-label="name"
dense
outlined
rounded
:emit-value="false"
use-input
:is-clearable="false"
@update:model-value="
(value) => onOrderChange(value, params, searchFn)
"
/>
</QItemSection>
</QItem>
<QItem class="q-mb-md">
<QItemSection>
<VnSelectFilter
:label="t('params.order')"
v-model="selectedOrderField"
:options="OrderFields || []"
option-value="field"
option-label="name"
dense
outlined
rounded
:emit-value="false"
use-input
:is-clearable="false"
@update:model-value="
(value) => onOrderFieldChange(value, params, searchFn)
"
/>
</QItemSection>
</QItem>
<QSeparator />
<QItem class="q-mt-md">
<QItemSection>
<VnSelectFilter
:label="t('params.tag')"
v-model="selectedTag"
:options="props.tags || []"
option-value="id"
option-label="name"
dense
outlined
rounded
:emit-value="false"
use-input
/>
</QItemSection>
</QItem>
<QItem
v-for="(value, index) in tagValues"
:key="value"
class="q-mt-md filter-value"
>
<VnInput
v-if="selectedTag?.isFree"
v-model="value.value"
:label="t('params.value')"
is-outlined
class="filter-input"
/>
<VnSelectFilter <VnSelectFilter
:label="t('params.type')" v-else
v-model="params.typeFk" :label="t('params.value')"
:options="typeList" v-model="value.value"
option-value="id" :options="tagOptions || []"
option-label="name" option-value="value"
option-label="value"
dense dense
outlined outlined
rounded rounded
emit-value emit-value
use-input use-input
:disable="!selectedCategoryFk" :disable="!selectedTag"
@update:model-value=" class="filter-input"
(value) => {
selectedTypeFk = value;
searchFn();
}
"
>
<template #option="{ itemProps, opt }">
<QItem v-bind="itemProps">
<QItemSection>
<QItemLabel>{{ opt.name }}</QItemLabel>
<QItemLabel caption>
{{ opt.categoryName }}
</QItemLabel>
</QItemSection>
</QItem>
</template>
</VnSelectFilter>
</QItemSection>
</QItem>
<QSeparator />
<QItem class="q-my-md">
<QItemSection>
<VnSelectFilter
:label="t('params.order')"
v-model="selectedOrder"
:options="orderList || []"
option-value="way"
option-label="name"
dense
outlined
rounded
:emit-value="false"
use-input
:is-clearable="false"
@update:model-value="
(value) => onOrderChange(value, params, searchFn)
"
/> />
</QItemSection>
</QItem>
<QItem class="q-mb-md">
<QItemSection>
<VnSelectFilter
:label="t('params.order')"
v-model="selectedOrderField"
:options="OrderFields || []"
option-value="field"
option-label="name"
dense
outlined
rounded
:emit-value="false"
use-input
:is-clearable="false"
@update:model-value="
(value) => onOrderFieldChange(value, params, searchFn)
"
/>
</QItemSection>
</QItem>
<QSeparator />
<QItem class="q-mt-md">
<QItemSection>
<VnSelectFilter
:label="t('params.tag')"
v-model="selectedTag"
:options="props.tags || []"
option-value="id"
option-label="name"
dense
outlined
rounded
:emit-value="false"
use-input
/>
</QItemSection>
</QItem>
<QItem
v-for="(value, index) in tagValues"
:key="value"
class="q-mt-md filter-value"
>
<VnInput
v-if="selectedTag?.isFree"
v-model="value.value"
:label="t('params.value')"
is-outlined
class="filter-input"
/>
<VnSelectFilter
v-else
:label="t('params.value')"
v-model="value.value"
:options="tagOptions || []"
option-value="value"
option-label="value"
dense
outlined
rounded
emit-value
use-input
:disable="!selectedTag"
class="filter-input"
/>
<FetchData <FetchData
v-if="selectedTag && !selectedTag.isFree" v-if="selectedTag && !selectedTag.isFree"
:url="`Tags/${selectedTag?.id}/filterValue`" :url="`Tags/${selectedTag?.id}/filterValue`"
limit="30" limit="30"
auto-load auto-load
@on-fetch="(data) => (tagOptions = data)" @on-fetch="(data) => (tagOptions = data)"
/>
<QIcon
name="delete"
class="filter-icon"
@click="(tagValues || []).splice(index, 1)"
/>
</QItem>
<QItem class="q-mt-lg">
<QIcon
name="add_circle"
class="filter-icon"
@click="tagValues.push({})"
/>
</QItem>
<QItem>
<QItemSection class="q-py-sm">
<QBtn
:label="t('Search')"
class="full-width"
color="primary"
dense
icon="search"
rounded
type="button"
unelevated
:disable="isButtonDisabled"
@click.stop="applyTagFilter(params, searchFn)"
/> />
</QItemSection>
</QItem> <QIcon
<QSeparator /> name="delete"
class="filter-icon"
@click="(tagValues || []).splice(index, 1)"
/>
</QItem>
<QItem class="q-mt-lg">
<QIcon
name="add_circle"
class="filter-icon"
@click="tagValues.push({})"
/>
</QItem>
<QItem>
<QItemSection class="q-py-sm">
<QBtn
:label="t('Search')"
class="full-width"
color="primary"
dense
icon="search"
rounded
type="button"
unelevated
:disable="isButtonDisabled"
@click.stop="applyTagFilter(params, searchFn)"
/>
</QItemSection>
</QItem>
<QSeparator />
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>

View File

@ -59,152 +59,162 @@ const sourceList = ref(null);
</div> </div>
</template> </template>
<template #body="{ params }"> <template #body="{ params }">
<QItem> <QList id="orderFilter" dense>
<QItemSection> <QItem>
<VnInput <QItemSection>
is-outlined <VnInput
:label="t('customerId')" is-outlined
v-model="params.clientFk" :label="t('customerId')"
lazy-rules v-model="params.clientFk"
> lazy-rules
<template #prepend> >
<QIcon name="badge" size="sm"></QIcon> <template #prepend>
</template> <QIcon name="badge" size="sm"></QIcon>
</VnInput> </template>
</QItemSection> </VnInput>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection v-if="agencyList"> <QItem>
<VnSelectFilter <QItemSection v-if="agencyList">
:label="t('agency')" <VnSelectFilter
v-model="params.agencyModeFk" :label="t('agency')"
:options="agencyList" v-model="params.agencyModeFk"
option-value="id" :options="agencyList"
option-label="name" option-value="id"
dense option-label="name"
outlined dense
rounded outlined
emit-value rounded
map-options emit-value
use-input map-options
:input-debounce="0" use-input
/> :input-debounce="0"
</QItemSection> />
<QItemSection v-else> </QItemSection>
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-else>
</QItemSection> <QSkeleton type="QInput" class="full-width" />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection v-if="salesPersonList"> <QItem>
<VnSelectFilter <QItemSection v-if="salesPersonList">
:label="t('salesPerson')" <VnSelectFilter
v-model="params.workerFk" :label="t('salesPerson')"
:options="salesPersonList" v-model="params.workerFk"
option-value="id" :options="salesPersonList"
option-label="name" option-value="id"
dense option-label="name"
outlined dense
rounded outlined
emit-value rounded
map-options emit-value
use-input map-options
:input-debounce="0" use-input
> :input-debounce="0"
<template #option="{ itemProps, opt }"> >
<QItem v-bind="itemProps"> <template #option="{ itemProps, opt }">
<QItemSection> <QItem v-bind="itemProps">
<QItemLabel>{{ opt.name }}</QItemLabel> <QItemSection>
<QItemLabel caption> <QItemLabel>{{ opt.name }}</QItemLabel>
{{ opt.nickname }},{{ opt.code }} <QItemLabel caption>
</QItemLabel> {{ opt.nickname }},{{ opt.code }}
</QItemSection> </QItemLabel>
</QItem> </QItemSection>
</template> </QItem>
</VnSelectFilter> </template>
</QItemSection> </VnSelectFilter>
<QItemSection v-else> </QItemSection>
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-else>
</QItemSection> <QSkeleton type="QInput" class="full-width" />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInputDate <QItemSection>
v-model="params.from" <VnInputDate
:label="t('fromLanded')" v-model="params.from"
dense :label="t('fromLanded')"
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInputDate <QItemSection>
v-model="params.to" <VnInputDate
:label="t('toLanded')" v-model="params.to"
dense :label="t('toLanded')"
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
:label="t('orderId')" <VnInput
v-model="params.orderFk" :label="t('orderId')"
lazy-rules v-model="params.orderFk"
is-outlined lazy-rules
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection v-if="sourceList"> <QItem>
<VnSelectFilter <QItemSection v-if="sourceList">
:label="t('application')" <VnSelectFilter
v-model="params.sourceApp" :label="t('application')"
:options="sourceList" v-model="params.sourceApp"
option-label="value" :options="sourceList"
emit-value option-label="value"
map-options emit-value
use-input map-options
dense use-input
outlined dense
rounded outlined
:input-debounce="0" rounded
/> :input-debounce="0"
</QItemSection> />
<QItemSection v-else> </QItemSection>
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-else>
</QItemSection> <QSkeleton type="QInput" class="full-width" />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<QCheckbox <QItemSection>
v-model="params.myTeam" <QCheckbox
:label="t('myTeam')" v-model="params.myTeam"
toggle-indeterminate :label="t('myTeam')"
/> toggle-indeterminate
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<QCheckbox <QItemSection>
v-model="params.isConfirmed" <QCheckbox
:label="t('isConfirmed')" v-model="params.isConfirmed"
toggle-indeterminate :label="t('isConfirmed')"
/> toggle-indeterminate
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<QCheckbox v-model="params.showEmpty" :label="t('showEmpty')" /> <QItemSection>
</QItemSection> <QCheckbox v-model="params.showEmpty" :label="t('showEmpty')" />
</QItem> </QItemSection>
</QItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>
<style lang="scss">
#orderFilter {
.q-item {
padding-top: 8px;
}
}
</style>
<i18n> <i18n>
en: en:
params: params:

View File

@ -1,7 +1,7 @@
<script setup> <script setup>
import { useStateStore } from 'stores/useStateStore'; import { useStateStore } from 'stores/useStateStore';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { onMounted, onUnmounted, ref } from 'vue'; import {onMounted, onUnmounted, ref} from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import VnPaginate from 'components/ui/VnPaginate.vue'; import VnPaginate from 'components/ui/VnPaginate.vue';
import VnSearchbar from 'components/ui/VnSearchbar.vue'; import VnSearchbar from 'components/ui/VnSearchbar.vue';
@ -20,7 +20,7 @@ const catalogParams = {
orderBy: JSON.stringify({ field: 'relevancy DESC, name', way: 'ASC', isTag: false }), orderBy: JSON.stringify({ field: 'relevancy DESC, name', way: 'ASC', isTag: false }),
}; };
const tags = ref([]); const tags = ref([])
function extractTags(items) { function extractTags(items) {
const resultTags = []; const resultTags = [];
@ -34,7 +34,7 @@ function extractTags(items) {
} }
}); });
}); });
tags.value = resultTags; tags.value = resultTags
} }
</script> </script>
@ -70,7 +70,7 @@ function extractTags(items) {
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="full-width"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="OrderCatalogList" data-key="OrderCatalogList"
url="Orders/CatalogFilter" url="Orders/CatalogFilter"
@ -93,6 +93,10 @@ function extractTags(items) {
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.card-list {
width: 100%;
}
.catalog-list { .catalog-list {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;

View File

@ -83,7 +83,7 @@ async function confirmOrder() {
auto-load auto-load
/> />
<QPage :key="componentKey" class="column items-center q-pa-md"> <QPage :key="componentKey" class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<div v-if="!orderSummary.total" class="no-result"> <div v-if="!orderSummary.total" class="no-result">
{{ t('globals.noResults') }} {{ t('globals.noResults') }}
</div> </div>
@ -228,6 +228,11 @@ async function confirmOrder() {
} }
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
.header { .header {
color: $primary; color: $primary;
font-weight: bold; font-weight: bold;

View File

@ -4,7 +4,7 @@ import { onMounted, onUnmounted } from 'vue';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import { useStateStore } from 'stores/useStateStore'; import { useStateStore } from 'stores/useStateStore';
import { toCurrency, toDate } from 'src/filters'; import { toCurrency, toDate } from 'src/filters';
import { useQuasar } from 'quasar'; import {useQuasar} from "quasar";
import CardList from 'components/ui/CardList.vue'; import CardList from 'components/ui/CardList.vue';
import WorkerDescriptorProxy from 'pages/Worker/Card/WorkerDescriptorProxy.vue'; import WorkerDescriptorProxy from 'pages/Worker/Card/WorkerDescriptorProxy.vue';
import CustomerDescriptorProxy from 'pages/Customer/Card/CustomerDescriptorProxy.vue'; import CustomerDescriptorProxy from 'pages/Customer/Card/CustomerDescriptorProxy.vue';
@ -12,7 +12,7 @@ import VnPaginate from 'components/ui/VnPaginate.vue';
import VnLv from 'components/ui/VnLv.vue'; import VnLv from 'components/ui/VnLv.vue';
import OrderSearchbar from 'pages/Order/Card/OrderSearchbar.vue'; import OrderSearchbar from 'pages/Order/Card/OrderSearchbar.vue';
import OrderFilter from 'pages/Order/Card/OrderFilter.vue'; import OrderFilter from 'pages/Order/Card/OrderFilter.vue';
import OrderSummaryDialog from 'pages/Order/Card/OrderSummaryDialog.vue'; import OrderSummaryDialog from "pages/Order/Card/OrderSummaryDialog.vue";
const stateStore = useStateStore(); const stateStore = useStateStore();
const quasar = useQuasar(); const quasar = useQuasar();
@ -63,7 +63,7 @@ function viewSummary(id) {
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="OrderList" data-key="OrderList"
url="Orders/filter" url="Orders/filter"
@ -153,3 +153,10 @@ function viewSummary(id) {
</QPageSticky> </QPageSticky>
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>

View File

@ -35,7 +35,7 @@ const loadVolumes = async (rows) => {
auto-load auto-load
/> />
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<div <div
v-if="!volumeSummary?.totalVolume && !volumeSummary?.totalBoxes" v-if="!volumeSummary?.totalVolume && !volumeSummary?.totalBoxes"
class="no-result" class="no-result"
@ -121,6 +121,11 @@ const loadVolumes = async (rows) => {
} }
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
.header { .header {
color: $primary; color: $primary;
font-weight: bold; font-weight: bold;

View File

@ -61,142 +61,144 @@ const warehouseList = ref([]);
</div> </div>
</template> </template>
<template #body="{ params }"> <template #body="{ params }">
<QItem class="q-my-sm"> <QList dense>
<QItemSection v-if="workerList"> <QItem class="q-my-sm">
<VnSelectFilter <QItemSection v-if="workerList">
:label="t('Worker')" <VnSelectFilter
v-model="params.workerFk" :label="t('Worker')"
:options="workerList" v-model="params.workerFk"
option-value="id" :options="workerList"
option-label="nickname" option-value="id"
dense option-label="nickname"
outlined dense
rounded outlined
emit-value rounded
map-options emit-value
use-input map-options
:input-debounce="0" use-input
> :input-debounce="0"
<template #option="{ itemProps, opt }"> >
<QItem v-bind="itemProps"> <template #option="{ itemProps, opt }">
<QItemSection> <QItem v-bind="itemProps">
<QItemLabel>{{ opt.name }}</QItemLabel> <QItemSection>
<QItemLabel caption> <QItemLabel>{{ opt.name }}</QItemLabel>
{{ opt.nickname }},{{ opt.code }} <QItemLabel caption>
</QItemLabel> {{ opt.nickname }},{{ opt.code }}
</QItemSection> </QItemLabel>
</QItem> </QItemSection>
</template> </QItem>
</VnSelectFilter> </template>
</QItemSection> </VnSelectFilter>
</QItem> </QItemSection>
<QItem class="q-my-sm"> </QItem>
<QItemSection v-if="agencyList"> <QItem class="q-my-sm">
<VnSelectFilter <QItemSection v-if="agencyList">
:label="t('Agency')" <VnSelectFilter
v-model="params.agencyModeFk" :label="t('Agency')"
:options="agencyList" v-model="params.agencyModeFk"
option-value="id" :options="agencyList"
option-label="name" option-value="id"
dense option-label="name"
outlined dense
rounded outlined
emit-value rounded
map-options emit-value
use-input map-options
:input-debounce="0" use-input
/> :input-debounce="0"
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-my-sm"> </QItem>
<QItemSection> <QItem class="q-my-sm">
<VnInputDate <QItemSection>
v-model="params.from" <VnInputDate
:label="t('From')" v-model="params.from"
is-outlined :label="t('From')"
:disable="Boolean(params.scopeDays)" is-outlined
@update:model-value="params.scopeDays = null" :disable="Boolean(params.scopeDays)"
/> @update:model-value="params.scopeDays = null"
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-my-sm"> </QItem>
<QItemSection> <QItem class="q-my-sm">
<VnInputDate <QItemSection>
v-model="params.to" <VnInputDate
:label="t('To')" v-model="params.to"
is-outlined :label="t('To')"
:disable="Boolean(params.scopeDays)" is-outlined
@update:model-value="params.scopeDays = null" :disable="Boolean(params.scopeDays)"
/> @update:model-value="params.scopeDays = null"
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-my-sm"> </QItem>
<QItemSection> <QItem class="q-my-sm">
<VnInput <QItemSection>
v-model="params.scopeDays" <VnInput
type="number" v-model="params.scopeDays"
:label="t('Days Onward')" type="number"
is-outlined :label="t('Days Onward')"
clearable is-outlined
:disable="Boolean(params.from || params.to)" clearable
@update:model-value=" :disable="Boolean(params.from || params.to)"
params.to = null; @update:model-value="
params.from = null; params.to = null;
" params.from = null;
/> "
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-my-sm"> </QItem>
<QItemSection v-if="vehicleList"> <QItem class="q-my-sm">
<VnSelectFilter <QItemSection v-if="vehicleList">
:label="t('Vehicle')" <VnSelectFilter
v-model="params.vehicleFk" :label="t('Vehicle')"
:options="vehicleList" v-model="params.vehicleFk"
option-value="id" :options="vehicleList"
option-label="numberPlate" option-value="id"
dense option-label="numberPlate"
outlined dense
rounded outlined
emit-value rounded
map-options emit-value
use-input map-options
:input-debounce="0" use-input
/> :input-debounce="0"
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-my-sm"> </QItem>
<QItemSection> <QItem class="q-my-sm">
<VnInput v-model="params.m3" label="m³" is-outlined clearable /> <QItemSection>
</QItemSection> <VnInput v-model="params.m3" label="m³" is-outlined clearable />
</QItem> </QItemSection>
<QItem class="q-my-sm"> </QItem>
<QItemSection v-if="vehicleList"> <QItem class="q-my-sm">
<VnSelectFilter <QItemSection v-if="vehicleList">
:label="t('Warehouse')" <VnSelectFilter
v-model="params.warehouseFk" :label="t('Warehouse')"
:options="warehouseList" v-model="params.warehouseFk"
option-value="id" :options="warehouseList"
option-label="name" option-value="id"
dense option-label="name"
outlined dense
rounded outlined
emit-value rounded
map-options emit-value
use-input map-options
:input-debounce="0" use-input
/> :input-debounce="0"
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-my-sm"> </QItem>
<QItemSection> <QItem class="q-my-sm">
<VnInput <QItemSection>
v-model="params.description" <VnInput
:label="t('Description')" v-model="params.description"
is-outlined :label="t('Description')"
clearable is-outlined
/> clearable
</QItemSection> />
</QItem> </QItemSection>
</QItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>

View File

@ -71,8 +71,8 @@ const routeFilter = {
}; };
const onSave = (data, response) => { const onSave = (data, response) => {
if (isNew) { if (isNew) {
axios.post(`Routes/${response.data?.id}/updateWorkCenter`); axios.post(`Routes/${response?.id}/updateWorkCenter`);
router.push({ name: 'RouteSummary', params: { id: response.data?.id } }); router.push({ name: 'RouteSummary', params: { id: response?.id } });
} }
}; };
</script> </script>
@ -198,6 +198,13 @@ const onSave = (data, response) => {
clearable clearable
/> />
</div> </div>
<div class="col flex items-center">
<QCheckbox
size="sm"
v-model="data.isOk"
:label="t('Is served')"
/>
</div>
</VnRow> </VnRow>
</template> </template>
<VnRow class="row q-gutter-md q-mb-md"> <VnRow class="row q-gutter-md q-mb-md">
@ -212,3 +219,15 @@ const onSave = (data, response) => {
</template> </template>
</FormModel> </FormModel>
</template> </template>
<i18n>
es:
Worker: Trabajador
Vehicle: Vehículo
Agency: Agencia
Km Start: Km de inicio
Km End: Km de fin
Hour started: Hora inicio
Hour finished: Hora fin
Description: Descripción
Is served: Se ha servido
</i18n>

View File

@ -28,101 +28,103 @@ const countries = ref();
</div> </div>
</template> </template>
<template #body="{ params }"> <template #body="{ params }">
<QItem> <QList dense class="q-gutter-y-sm q-mt-sm">
<QItemSection> <QItem>
<VnInput <QItemSection>
:label="t('route.cmr.list.cmrFk')" <VnInput
v-model="params.cmrFk" :label="t('route.cmr.list.cmrFk')"
is-outlined v-model="params.cmrFk"
> is-outlined
<template #prepend> >
<QIcon name="article" size="sm"></QIcon> <template #prepend>
</template> <QIcon name="article" size="sm"></QIcon>
</VnInput> </template>
</QItemSection> </VnInput>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<QCheckbox <QItemSection>
:label="t('route.cmr.list.hasCmrDms')" <QCheckbox
v-model="params.hasCmrDms" :label="t('route.cmr.list.hasCmrDms')"
lazy-rules v-model="params.hasCmrDms"
/> lazy-rules
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
:label="t('route.cmr.list.ticketFk')" <VnInput
v-model="params.ticketFk" :label="t('route.cmr.list.ticketFk')"
is-outlined v-model="params.ticketFk"
> is-outlined
<template #prepend> >
<QIcon name="vn:ticket" size="sm"></QIcon> <template #prepend>
</template> <QIcon name="vn:ticket" size="sm"></QIcon>
</VnInput> </template>
</QItemSection> </VnInput>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
:label="t('route.cmr.list.routeFk')" <VnInput
v-model="params.routeFk" :label="t('route.cmr.list.routeFk')"
is-outlined v-model="params.routeFk"
> is-outlined
<template #prepend> >
<QIcon name="vn:delivery" size="sm"></QIcon> <template #prepend>
</template> <QIcon name="vn:delivery" size="sm"></QIcon>
</VnInput> </template>
</QItemSection> </VnInput>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
:label="t('route.cmr.list.clientFk')" <VnInput
v-model="params.clientFk" :label="t('route.cmr.list.clientFk')"
is-outlined v-model="params.clientFk"
> is-outlined
<template #prepend> >
<QIcon name="vn:client" size="sm"></QIcon> <template #prepend>
</template> <QIcon name="vn:client" size="sm"></QIcon>
</VnInput> </template>
</QItemSection> </VnInput>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection v-if="!countries"> <QItem>
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-if="!countries">
</QItemSection> <QSkeleton type="QInput" class="full-width" />
<QItemSection v-if="countries" class="q-mb-sm"> </QItemSection>
<QSelect <QItemSection v-if="countries" class="q-mb-sm">
:label="t('route.cmr.list.country')" <QSelect
v-model="params.country" :label="t('route.cmr.list.country')"
:options="countries" v-model="params.country"
option-value="country" :options="countries"
option-label="country" option-value="country"
transition-show="jump-down" option-label="country"
transition-hide="jump-up" transition-show="jump-down"
emit-value transition-hide="jump-up"
map-options emit-value
dense map-options
outlined dense
rounded outlined
> rounded
<template #prepend> >
<QIcon name="flag" size="sm"></QIcon> <template #prepend>
</template> <QIcon name="flag" size="sm"></QIcon>
</QSelect> </template>
</QItemSection> </QSelect>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInputDate <QItemSection>
v-model="params.shipped" <VnInputDate
:label="t('route.cmr.list.shipped')" v-model="params.shipped"
is-outlined :label="t('route.cmr.list.shipped')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
</QItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>

View File

@ -271,6 +271,7 @@ function previewRoute(id) {
selection="multiple" selection="multiple"
:rows-per-page-options="[0]" :rows-per-page-options="[0]"
hide-pagination hide-pagination
:pagination="{ sortBy: 'ID', descending: true }"
> >
<template #body-cell-worker="props"> <template #body-cell-worker="props">
<QTd :props="props"> <QTd :props="props">
@ -458,11 +459,12 @@ function previewRoute(id) {
</template> </template>
<template #body-cell-actions="props"> <template #body-cell-actions="props">
<QTd :props="props"> <QTd :props="props">
<div class="table-actions"> <div class="flex items-center table-actions">
<QIcon <QIcon
name="vn:ticketAdd" name="vn:ticketAdd"
size="xs" size="xs"
color="primary" color="primary"
class="cursor-pointer"
> >
<QTooltip>{{ t('Add ticket') }}</QTooltip> <QTooltip>{{ t('Add ticket') }}</QTooltip>
</QIcon> </QIcon>
@ -471,6 +473,7 @@ function previewRoute(id) {
size="xs" size="xs"
color="primary" color="primary"
@click="previewRoute(props?.row?.id)" @click="previewRoute(props?.row?.id)"
class="cursor-pointer"
> >
<QTooltip>{{ t('Preview') }}</QTooltip> <QTooltip>{{ t('Preview') }}</QTooltip>
</QIcon> </QIcon>
@ -499,13 +502,7 @@ function previewRoute(id) {
} }
.table-actions { .table-actions {
display: flex;
align-items: center;
gap: 12px; gap: 12px;
i {
cursor: pointer;
}
} }
</style> </style>
<i18n> <i18n>
@ -527,4 +524,6 @@ es:
Cancel: Cancelar Cancel: Cancelar
Clone: Clonar Clone: Clonar
Mark as served: Marcar como servidas Mark as served: Marcar como servidas
Add ticket: Añadir tickets
Preview: Vista previa
</i18n> </i18n>

View File

@ -41,11 +41,7 @@ function setParkings(data) {
@on-fetch="setWorkers" @on-fetch="setWorkers"
auto-load auto-load
/> />
<VnFilterPanel <VnFilterPanel :data-key="props.dataKey" :search-button="true" @search="emit('search')">
:data-key="props.dataKey"
:search-button="true"
@search="emit('search')"
>
<template #tags="{ tag, formatFn }"> <template #tags="{ tag, formatFn }">
<div class="q-gutter-x-xs"> <div class="q-gutter-x-xs">
<strong>{{ t(`params.${tag.label}`) }}: </strong> <strong>{{ t(`params.${tag.label}`) }}: </strong>
@ -53,57 +49,59 @@ function setParkings(data) {
</div> </div>
</template> </template>
<template #body="{ params }"> <template #body="{ params }">
<QItem class="q-my-sm"> <QList dense>
<QItemSection v-if="!parkings"> <QItem class="q-my-sm">
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-if="!parkings">
</QItemSection> <QSkeleton type="QInput" class="full-width" />
<QItemSection v-if="parkings"> </QItemSection>
<QSelect <QItemSection v-if="parkings">
dense <QSelect
outlined dense
rounded outlined
:label="t('params.parkingFk')" rounded
v-model="params.parkingFk" :label="t('params.parkingFk')"
:options="parkings" v-model="params.parkingFk"
option-value="id" :options="parkings"
option-label="code" option-value="id"
emit-value option-label="code"
map-options emit-value
use-input map-options
:input-debounce="0" use-input
/> :input-debounce="0"
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-mb-sm"> </QItem>
<QItemSection v-if="!workers"> <QItem class="q-mb-sm">
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-if="!workers">
</QItemSection> <QSkeleton type="QInput" class="full-width" />
<QItemSection v-if="workers"> </QItemSection>
<QSelect <QItemSection v-if="workers">
dense <QSelect
outlined dense
rounded outlined
:label="t('params.userFk')" rounded
v-model="params.userFk" :label="t('params.userFk')"
:options="workers" v-model="params.userFk"
option-value="id" :options="workers"
option-label="name" option-value="id"
emit-value option-label="name"
map-options emit-value
use-input map-options
:input-debounce="0" use-input
/> :input-debounce="0"
</QItemSection> />
</QItem> </QItemSection>
<QItem class="q-mb-md"> </QItem>
<QItemSection> <QItem class="q-mb-md">
<QCheckbox <QItemSection>
v-model="params.isRecyclable" <QCheckbox
:label="t('params.isRecyclable')" v-model="params.isRecyclable"
toggle-indeterminate :label="t('params.isRecyclable')"
/> toggle-indeterminate
</QItemSection> />
</QItem> </QItemSection>
</QItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>

View File

@ -74,7 +74,7 @@ function exprBuilder(param, value) {
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="ShelvingList" data-key="ShelvingList"
url="Shelvings" url="Shelvings"
@ -129,3 +129,10 @@ function exprBuilder(param, value) {
</QPageSticky> </QPageSticky>
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>

View File

@ -47,7 +47,7 @@ const redirectToUpdateView = (addressData) => {
<template> <template>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="SupplierAddress" data-key="SupplierAddress"
:url="`Suppliers/${route.params.id}/addresses`" :url="`Suppliers/${route.params.id}/addresses`"
@ -88,3 +88,10 @@ const redirectToUpdateView = (addressData) => {
</QPageSticky> </QPageSticky>
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>

View File

@ -44,7 +44,7 @@ const viewSummary = (id) => {
</template> </template>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate data-key="SuppliersList" url="Suppliers/filter" auto-load> <VnPaginate data-key="SuppliersList" url="Suppliers/filter" auto-load>
<template #body="{ rows }"> <template #body="{ rows }">
<CardList <CardList
@ -95,6 +95,13 @@ const viewSummary = (id) => {
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>
<i18n> <i18n>
en: en:
Search suppliers: Search suppliers Search suppliers: Search suppliers

View File

@ -56,138 +56,66 @@ const warehouses = ref();
</div> </div>
</template> </template>
<template #body="{ params, searchFn }"> <template #body="{ params, searchFn }">
<QItem> <QList dense class="q-gutter-y-sm q-mt-sm">
<QItemSection>
<VnInput
v-model="params.clientFk"
:label="t('Customer ID')"
is-outlined
/>
</QItemSection>
<QItemSection>
<VnInput
v-model="params.orderFk"
:label="t('Order ID')"
is-outlined
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInputDate v-model="params.from" :label="t('From')" is-outlined />
</QItemSection>
<QItemSection>
<VnInputDate v-model="params.to" :label="t('To')" is-outlined />
</QItemSection>
</QItem>
<QItem>
<QItemSection v-if="!workers">
<QSkeleton type="QInput" class="full-width" />
</QItemSection>
<QItemSection v-if="workers">
<QSelect
:label="t('Salesperson')"
v-model="params.salesPersonFk"
:options="workers"
option-value="id"
option-label="name"
emit-value
map-options
use-input
dense
outlined
rounded
:input-debounce="0"
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection v-if="!states">
<QSkeleton type="QInput" class="full-width" />
</QItemSection>
<QItemSection v-if="states">
<QSelect
:label="t('State')"
v-model="params.stateFk"
@update:model-value="searchFn()"
:options="states"
option-value="id"
option-label="name"
emit-value
map-options
dense
outlined
rounded
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInput
v-model="params.refFk"
:label="t('Invoice Ref.')"
is-outlined
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<QCheckbox
v-model="params.myTeam"
@update:model-value="searchFn()"
:label="t('My team')"
toggle-indeterminate
/>
</QItemSection>
<QItemSection>
<QCheckbox
v-model="params.pending"
@update:model-value="searchFn()"
:label="t('Pending')"
toggle-indeterminate
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<QCheckbox
v-model="params.hasInvoice"
@update:model-value="searchFn()"
:label="t('Invoiced')"
toggle-indeterminate
/>
</QItemSection>
<QItemSection>
<QCheckbox
v-model="params.hasRoute"
@update:model-value="searchFn()"
:label="t('Routed')"
toggle-indeterminate
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<QCheckbox
v-model="params.problems"
@update:model-value="searchFn()"
:label="t('With problems')"
toggle-indeterminate
/>
</QItemSection>
</QItem>
<QSeparator />
<QExpansionItem :label="t('More options')" expand-separator>
<QItem> <QItem>
<QItemSection v-if="!provinces"> <QItemSection>
<VnInput
v-model="params.clientFk"
:label="t('Customer ID')"
is-outlined
/>
</QItemSection>
<QItemSection>
<VnInput
v-model="params.orderFk"
:label="t('Order ID')"
is-outlined
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInputDate
v-model="params.from"
:label="t('From')"
is-outlined
/>
</QItemSection>
<QItemSection>
<VnInputDate v-model="params.to" :label="t('To')" is-outlined />
</QItemSection>
</QItem>
<QItem>
<QItemSection v-if="!workers">
<QSkeleton type="QInput" class="full-width" /> <QSkeleton type="QInput" class="full-width" />
</QItemSection> </QItemSection>
<QItemSection v-if="provinces"> <QItemSection v-if="workers">
<QSelect <QSelect
:label="t('Province')" :label="t('Salesperson')"
v-model="params.provinceFk" v-model="params.salesPersonFk"
:options="workers"
option-value="id"
option-label="name"
emit-value
map-options
use-input
dense
outlined
rounded
:input-debounce="0"
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection v-if="!states">
<QSkeleton type="QInput" class="full-width" />
</QItemSection>
<QItemSection v-if="states">
<QSelect
:label="t('State')"
v-model="params.stateFk"
@update:model-value="searchFn()" @update:model-value="searchFn()"
:options="provinces" :options="states"
option-value="id" option-value="id"
option-label="name" option-label="name"
emit-value emit-value
@ -199,46 +127,124 @@ const warehouses = ref();
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem>
<QItemSection v-if="!agencies"> <QItemSection>
<QSkeleton type="QInput" class="full-width" /> <VnInput
</QItemSection> v-model="params.refFk"
<QItemSection v-if="agencies"> :label="t('Invoice Ref.')"
<QSelect is-outlined
:label="t('Agency')"
v-model="params.agencyModeFk"
@update:model-value="searchFn()"
:options="agencies"
option-value="id"
option-label="name"
emit-value
map-options
dense
outlined
rounded
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem>
<QItemSection v-if="!warehouses"> <QItemSection>
<QSkeleton type="QInput" class="full-width" /> <QCheckbox
</QItemSection> v-model="params.myTeam"
<QItemSection v-if="warehouses">
<QSelect
:label="t('Warehouse')"
v-model="params.warehouseFk"
@update:model-value="searchFn()" @update:model-value="searchFn()"
:options="warehouses" :label="t('My team')"
option-value="id" toggle-indeterminate
option-label="name" />
emit-value </QItemSection>
map-options <QItemSection>
dense <QCheckbox
outlined v-model="params.pending"
rounded @update:model-value="searchFn()"
:label="t('Pending')"
toggle-indeterminate
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
</QExpansionItem> <QItem>
<QItemSection>
<QCheckbox
v-model="params.hasInvoice"
@update:model-value="searchFn()"
:label="t('Invoiced')"
toggle-indeterminate
/>
</QItemSection>
<QItemSection>
<QCheckbox
v-model="params.hasRoute"
@update:model-value="searchFn()"
:label="t('Routed')"
toggle-indeterminate
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<QCheckbox
v-model="params.problems"
@update:model-value="searchFn()"
:label="t('With problems')"
toggle-indeterminate
/>
</QItemSection>
</QItem>
<QSeparator />
<QExpansionItem :label="t('More options')" expand-separator>
<QItem>
<QItemSection v-if="!provinces">
<QSkeleton type="QInput" class="full-width" />
</QItemSection>
<QItemSection v-if="provinces">
<QSelect
:label="t('Province')"
v-model="params.provinceFk"
@update:model-value="searchFn()"
:options="provinces"
option-value="id"
option-label="name"
emit-value
map-options
dense
outlined
rounded
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection v-if="!agencies">
<QSkeleton type="QInput" class="full-width" />
</QItemSection>
<QItemSection v-if="agencies">
<QSelect
:label="t('Agency')"
v-model="params.agencyModeFk"
@update:model-value="searchFn()"
:options="agencies"
option-value="id"
option-label="name"
emit-value
map-options
dense
outlined
rounded
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection v-if="!warehouses">
<QSkeleton type="QInput" class="full-width" />
</QItemSection>
<QItemSection v-if="warehouses">
<QSelect
:label="t('Warehouse')"
v-model="params.warehouseFk"
@update:model-value="searchFn()"
:options="warehouses"
option-value="id"
option-label="name"
emit-value
map-options
dense
outlined
rounded
/>
</QItemSection>
</QItem>
</QExpansionItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>

View File

@ -74,7 +74,7 @@ function viewSummary(id) {
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="TicketList" data-key="TicketList"
url="Tickets/filter" url="Tickets/filter"
@ -134,6 +134,13 @@ function viewSummary(id) {
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>
<i18n> <i18n>
es: es:
Search ticket: Buscar ticket Search ticket: Buscar ticket

View File

@ -66,149 +66,158 @@ const decrement = (paramsObj, key) => {
</div> </div>
</template> </template>
<template #body="{ params }"> <template #body="{ params }">
<QItem> <QList dense class="list q-gutter-y-sm q-mt-sm">
<QItemSection> <QItem>
<VnInput label="id" v-model="params.id" is-outlined /> <QItemSection>
</QItemSection> <VnInput label="id" v-model="params.id" is-outlined />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
:label="t('params.reference')" <VnInput
v-model="params.reference" :label="t('params.reference')"
is-outlined v-model="params.reference"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<QInput <QItemSection>
v-model="params.totalEntries" <QInput
type="number" v-model="params.totalEntries"
:label="t('params.totalEntries')" type="number"
dense :label="t('params.totalEntries')"
outlined dense
rounded outlined
min="0" rounded
class="input-number" min="0"
> class="input-number"
<template #append> >
<QBtn <template #append>
icon="add" <QBtn
flat icon="add"
dense flat
size="12px" dense
@click="add(params, 'totalEntries')" size="12px"
/> @click="add(params, 'totalEntries')"
<QBtn />
icon="remove" <QBtn
flat icon="remove"
dense flat
size="12px" dense
@click="decrement(params, 'totalEntries')" size="12px"
/> @click="decrement(params, 'totalEntries')"
</template> />
</QInput> </template>
</QItemSection> </QInput>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('params.agencyModeFk')" <VnSelectFilter
v-model="params.agencyModeFk" :label="t('params.agencyModeFk')"
:options="agenciesOptions" v-model="params.agencyModeFk"
option-value="agencyFk" :options="agenciesOptions"
option-label="name" option-value="agencyFk"
hide-selected option-label="name"
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInputDate <QItemSection>
v-model="params.shippedFrom" <VnInputDate
:label="t('params.shippedFrom')" v-model="params.shippedFrom"
is-outlined :label="t('params.shippedFrom')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInputDate <QItemSection>
v-model="params.landedTo" <VnInputDate
:label="t('params.landedTo')" v-model="params.landedTo"
is-outlined :label="t('params.landedTo')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('params.warehouseOutFk')" <VnSelectFilter
v-model="params.warehouseOutFk" :label="t('params.warehouseOutFk')"
:options="warehousesOptions" v-model="params.warehouseOutFk"
option-value="id" :options="warehousesOptions"
option-label="name" option-value="id"
hide-selected option-label="name"
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('params.warehouseInFk')" <VnSelectFilter
v-model="params.warehouseInFk" :label="t('params.warehouseInFk')"
:options="warehousesOptions" v-model="params.warehouseInFk"
option-value="id" :options="warehousesOptions"
option-label="name" option-value="id"
hide-selected option-label="name"
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('supplier.pageTitles.supplier')" <VnSelectFilter
v-model="params.cargoSupplierFk" :label="t('supplier.pageTitles.supplier')"
:options="suppliersOptions" v-model="params.cargoSupplierFk"
option-value="id" :options="suppliersOptions"
option-label="name" option-value="id"
hide-selected option-label="name"
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('params.continent')" <VnSelectFilter
v-model="params.continent" :label="t('params.continent')"
:options="continentsOptions" v-model="params.continent"
option-value="code" :options="continentsOptions"
option-label="name" option-value="code"
hide-selected option-label="name"
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
</QItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>
<style scoped> <style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
.input-number >>> input[type='number'] { .input-number >>> input[type='number'] {
-moz-appearance: textfield; -moz-appearance: textfield;
} }

View File

@ -61,207 +61,216 @@ const decrement = (paramsObj, key) => {
</div> </div>
</template> </template>
<template #body="{ params }"> <template #body="{ params }">
<QItem> <QList dense class="list q-gutter-y-sm q-mt-sm">
<QItemSection> <QItem>
<VnInput <QItemSection>
v-model="params.search" <VnInput
:label="t('params.search')" v-model="params.search"
is-outlined :label="t('params.search')"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('params.agencyModeFk')" <VnSelectFilter
v-model="params.agencyModeFk" :label="t('params.agencyModeFk')"
:options="agenciesOptions" v-model="params.agencyModeFk"
option-value="agencyFk" :options="agenciesOptions"
option-label="name" option-value="agencyFk"
hide-selected option-label="name"
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('params.warehouseOutFk')" <VnSelectFilter
v-model="params.warehouseOutFk" :label="t('params.warehouseOutFk')"
:options="warehousesOptions" v-model="params.warehouseOutFk"
option-value="id" :options="warehousesOptions"
option-label="name" option-value="id"
hide-selected option-label="name"
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('params.warehouseInFk')" <VnSelectFilter
v-model="params.warehouseInFk" :label="t('params.warehouseInFk')"
:options="warehousesOptions" v-model="params.warehouseInFk"
option-value="id" :options="warehousesOptions"
option-label="name" option-value="id"
hide-selected option-label="name"
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<QInput <QItemSection>
v-model="params.scopeDays" <QInput
type="number" v-model="params.scopeDays"
:label="t('params.scopeDays')" type="number"
dense :label="t('params.scopeDays')"
outlined dense
rounded outlined
class="input-number" rounded
> class="input-number"
<template #append> >
<QBtn <template #append>
icon="add" <QBtn
flat icon="add"
dense flat
size="12px" dense
@click="add(params, 'scopeDays')" size="12px"
/> @click="add(params, 'scopeDays')"
<QBtn />
icon="remove" <QBtn
flat icon="remove"
dense flat
size="12px" dense
@click="decrement(params, 'scopeDays')" size="12px"
/> @click="decrement(params, 'scopeDays')"
</template> />
</QInput> </template>
</QItemSection> </QInput>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<QInput <QItemSection>
dense <QInput
outlined dense
rounded outlined
placeholder="dd-mm-aaa" rounded
:label="t('params.landedFrom')" placeholder="dd-mm-aaa"
:model-value="toDate(params.landedFrom)" :label="t('params.landedFrom')"
> :model-value="toDate(params.landedFrom)"
<template #append> >
<QIcon name="event" class="cursor-pointer"> <template #append>
<QPopupProxy <QIcon name="event" class="cursor-pointer">
cover <QPopupProxy
transition-show="scale" cover
transition-hide="scale" transition-show="scale"
> transition-hide="scale"
<QDate v-model="params.landedFrom"> >
<div class="row items-center justify-end"> <QDate v-model="params.landedFrom">
<QBtn <div class="row items-center justify-end">
v-close-popup <QBtn
:label="t('globals.close')" v-close-popup
color="primary" :label="t('globals.close')"
flat color="primary"
/> flat
</div> />
</QDate> </div>
</QPopupProxy> </QDate>
</QIcon> </QPopupProxy>
</template> </QIcon>
</QInput> </template>
</QItemSection> </QInput>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<QInput <QItemSection>
dense <QInput
outlined dense
rounded outlined
placeholder="dd-mm-aaa" rounded
:model-value="toDate(params.landedTo)" placeholder="dd-mm-aaa"
:label="t('params.landedTo')" :model-value="toDate(params.landedTo)"
> :label="t('params.landedTo')"
<template #append> >
<QIcon name="event" class="cursor-pointer"> <template #append>
<QPopupProxy <QIcon name="event" class="cursor-pointer">
cover <QPopupProxy
transition-show="scale" cover
transition-hide="scale" transition-show="scale"
> transition-hide="scale"
<QDate v-model="params.landedTo"> >
<div class="row items-center justify-end"> <QDate v-model="params.landedTo">
<QBtn <div class="row items-center justify-end">
v-close-popup <QBtn
:label="t('globals.close')" v-close-popup
color="primary" :label="t('globals.close')"
flat color="primary"
/> flat
</div> />
</QDate> </div>
</QPopupProxy> </QDate>
</QIcon> </QPopupProxy>
</template> </QIcon>
</QInput> </template>
</QItemSection> </QInput>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnSelectFilter <QItemSection>
:label="t('params.continent')" <VnSelectFilter
v-model="params.continent" :label="t('params.continent')"
:options="continentsOptions" v-model="params.continent"
option-value="code" :options="continentsOptions"
option-label="name" option-value="code"
hide-selected option-label="name"
dense hide-selected
outlined dense
rounded outlined
/> rounded
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<QInput <QItemSection>
v-model="params.totalEntries" <QInput
type="number" v-model="params.totalEntries"
:label="t('params.totalEntries')" type="number"
dense :label="t('params.totalEntries')"
outlined dense
rounded outlined
min="0" rounded
class="input-number" min="0"
> class="input-number"
<template #append> >
<QBtn <template #append>
icon="add" <QBtn
flat icon="add"
dense flat
size="12px" dense
@click="add(params, 'totalEntries')" size="12px"
/> @click="add(params, 'totalEntries')"
<QBtn />
icon="remove" <QBtn
flat icon="remove"
dense flat
size="12px" dense
@click="decrement(params, 'totalEntries')" size="12px"
/> @click="decrement(params, 'totalEntries')"
</template> />
</QInput> </template>
</QItemSection> </QInput>
</QItem> </QItemSection>
</QItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>
<style scoped> <style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
.input-number >>> input[type='number'] { .input-number >>> input[type='number'] {
-moz-appearance: textfield; -moz-appearance: textfield;
} }

View File

@ -56,7 +56,7 @@ onMounted(async () => {
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="TravelList" data-key="TravelList"
url="Travels/filter" url="Travels/filter"
@ -132,6 +132,13 @@ onMounted(async () => {
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>
<i18n> <i18n>
en: en:
addEntry: Add entry addEntry: Add entry

View File

@ -42,7 +42,7 @@ async function remove(row) {
<template> <template>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="WagonTypeList" data-key="WagonTypeList"
url="/WagonTypes" url="/WagonTypes"
@ -80,3 +80,10 @@ async function remove(row) {
</QPageSticky> </QPageSticky>
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>

View File

@ -48,7 +48,7 @@ async function remove(row) {
<template> <template>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="WagonList" data-key="WagonList"
url="/Wagons" url="/Wagons"
@ -99,3 +99,10 @@ async function remove(row) {
</QPageSticky> </QPageSticky>
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>

View File

@ -27,72 +27,74 @@ const departments = ref();
</div> </div>
</template> </template>
<template #body="{ params, searchFn }"> <template #body="{ params, searchFn }">
<QItem> <QList dense class="q-gutter-y-sm q-mt-sm">
<QItemSection> <QItem>
<VnInput :label="t('FI')" v-model="params.fi" is-outlined <QItemSection>
><template #prepend> <VnInput :label="t('FI')" v-model="params.fi" is-outlined
<QIcon name="badge" size="xs"></QIcon> </template ><template #prepend>
></VnInput> <QIcon name="badge" size="xs"></QIcon> </template
</QItemSection> ></VnInput>
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
:label="t('First Name')" <VnInput
v-model="params.firstName" :label="t('First Name')"
is-outlined v-model="params.firstName"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
:label="t('Last Name')" <VnInput
v-model="params.lastName" :label="t('Last Name')"
is-outlined v-model="params.lastName"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
:label="t('User Name')" <VnInput
v-model="params.userName" :label="t('User Name')"
is-outlined v-model="params.userName"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection v-if="!departments"> <QItem>
<QSkeleton type="QInput" class="full-width" /> <QItemSection v-if="!departments">
</QItemSection> <QSkeleton type="QInput" class="full-width" />
<QItemSection v-if="departments"> </QItemSection>
<QSelect <QItemSection v-if="departments">
:label="t('Department')" <QSelect
v-model="params.departmentFk" :label="t('Department')"
@update:model-value="searchFn()" v-model="params.departmentFk"
:options="departments" @update:model-value="searchFn()"
option-value="id" :options="departments"
option-label="name" option-value="id"
emit-value option-label="name"
map-options emit-value
use-input map-options
dense use-input
outlined dense
rounded outlined
:input-debounce="0" rounded
/> :input-debounce="0"
</QItemSection> />
</QItem> </QItemSection>
<QItem> </QItem>
<QItemSection> <QItem>
<VnInput <QItemSection>
:label="t('Extension')" <VnInput
v-model="params.extension" :label="t('Extension')"
is-outlined v-model="params.extension"
/> is-outlined
</QItemSection> />
</QItem> </QItemSection>
</QItem>
</QList>
</template> </template>
</VnFilterPanel> </VnFilterPanel>
</template> </template>

View File

@ -64,7 +64,7 @@ const redirectToCreateView = () => {
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<QPage class="column items-center q-pa-md"> <QPage class="column items-center q-pa-md">
<div class="vn-card-list"> <div class="card-list">
<VnPaginate <VnPaginate
data-key="WorkerList" data-key="WorkerList"
url="Workers/filter" url="Workers/filter"
@ -114,6 +114,13 @@ const redirectToCreateView = () => {
</QPage> </QPage>
</template> </template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>
<i18n> <i18n>
es: es:
Search worker: Buscar trabajador Search worker: Buscar trabajador