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 {
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));
hasChanges.value = false;
} catch (err) {

View File

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

View File

@ -38,6 +38,7 @@ const workers = ref();
minimal
>
</QDate>
<QList dense>
<QSeparator />
<QItem>
<QItemSection v-if="!workers">
@ -58,6 +59,7 @@ const workers = ref();
/>
</QItemSection>
</QItem>
</QList>
</template>
</VnFilterPanel>
</template>

View File

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

View File

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

View File

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

View File

@ -4,13 +4,8 @@ export default function toHour(date) {
if (!isValidDate(date)) {
return '--:--';
}
const dateHour = new Date(date);
let hours = dateHour.getUTCHours();
hours = hours % 12;
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'}`;
return (new Date(date || '')).toLocaleTimeString([], {
hour: '2-digit',
minute: '2-digit',
});
}

View File

@ -36,6 +36,7 @@ const states = ref();
</div>
</template>
<template #body="{ params, searchFn }">
<QList dense class="list">
<QItem class="q-my-sm">
<QItemSection>
<VnInput
@ -177,10 +178,20 @@ const states = ref();
</QItemSection>
</QItem>
</QExpansionItem>
</QList>
</template>
</VnFilterPanel>
</template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n>
en:
params:

View File

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

View File

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

View File

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

View File

@ -37,6 +37,7 @@ const zones = ref();
</div>
</template>
<template #body="{ params, searchFn }">
<QList dense class="list">
<QItem class="q-my-sm">
<QItemSection>
<VnInput :label="t('FI')" v-model="params.fi" is-outlined>
@ -114,7 +115,11 @@ const zones = ref();
<QExpansionItem :label="t('More options')" expand-separator>
<QItem>
<QItemSection>
<VnInput :label="t('Phone')" v-model="params.phone" is-outlined>
<VnInput
:label="t('Phone')"
v-model="params.phone"
is-outlined
>
<template #prepend>
<QIcon name="phone" size="xs" />
</template>
@ -123,7 +128,11 @@ const zones = ref();
</QItem>
<QItem>
<QItemSection>
<VnInput :label="t('Email')" v-model="params.email" is-outlined>
<VnInput
:label="t('Email')"
v-model="params.email"
is-outlined
>
<template #prepend>
<QIcon name="email" size="sm" />
</template>
@ -161,10 +170,20 @@ const zones = ref();
</QItemSection>
</QItem>
</QExpansionItem>
</QList>
</template>
</VnFilterPanel>
</template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n>
en:
params:

View File

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

View File

@ -46,6 +46,7 @@ const authors = ref();
</template>
<template #body="{ params }">
<QList dense class="list">
<QItem class="q-mb-sm q-mt-sm">
<QItemSection v-if="clients">
<VnSelectFilter
@ -160,7 +161,11 @@ const authors = ref();
<QItem class="q-mb-sm">
<QItemSection>
<VnInput :label="t('L. O. Date')" is-outlined v-model="params.date" />
<VnInput
:label="t('L. O. Date')"
is-outlined
v-model="params.date"
/>
</QItemSection>
</QItem>
@ -184,10 +189,20 @@ const authors = ref();
</QItemSection>
</QItem>
<QSeparator />
</QList>
</template>
</VnFilterPanel>
</template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n>
en:
params:

View File

@ -145,6 +145,7 @@ const shouldRenderColumn = (colName) => {
</div>
</template>
<template #body="{ params, searchFn }">
<QList dense class="list q-gutter-y-sm q-mt-sm">
<QItem v-if="shouldRenderColumn('id')">
<QItemSection>
<VnInput
@ -203,7 +204,9 @@ const shouldRenderColumn = (colName) => {
<QItemSection v-if="workers">
<VnSelectFilter
:label="
t('customer.extendedList.tableVisibleColumns.salesPersonFk')
t(
'customer.extendedList.tableVisibleColumns.salesPersonFk'
)
"
v-model="params.salesPersonFk"
@update:model-value="searchFn()"
@ -234,7 +237,9 @@ const shouldRenderColumn = (colName) => {
<QItemSection>
<VnInput
:label="
t('customer.extendedList.tableVisibleColumns.creditInsurance')
t(
'customer.extendedList.tableVisibleColumns.creditInsurance'
)
"
v-model="params.creditInsurance"
is-outlined
@ -271,7 +276,9 @@ const shouldRenderColumn = (colName) => {
<QItem v-if="shouldRenderColumn('countryFk')">
<QItemSection>
<VnSelectFilter
:label="t('customer.extendedList.tableVisibleColumns.countryFk')"
:label="
t('customer.extendedList.tableVisibleColumns.countryFk')
"
v-model="params.countryFk"
@update:model-value="searchFn()"
:options="countriesOptions"
@ -288,7 +295,9 @@ const shouldRenderColumn = (colName) => {
<QItem v-if="shouldRenderColumn('provinceFk')">
<QItemSection>
<VnSelectFilter
:label="t('customer.extendedList.tableVisibleColumns.provinceFk')"
:label="
t('customer.extendedList.tableVisibleColumns.provinceFk')
"
v-model="params.provinceFk"
@update:model-value="searchFn()"
:options="provincesOptions"
@ -314,7 +323,9 @@ const shouldRenderColumn = (colName) => {
<QItem v-if="shouldRenderColumn('postcode')">
<QItemSection>
<VnInput
:label="t('customer.extendedList.tableVisibleColumns.postcode')"
:label="
t('customer.extendedList.tableVisibleColumns.postcode')
"
v-model="params.postcode"
is-outlined
/>
@ -334,7 +345,9 @@ const shouldRenderColumn = (colName) => {
<QItemSection>
<VnInputDate
v-model="params.created"
:label="t('customer.extendedList.tableVisibleColumns.created')"
:label="
t('customer.extendedList.tableVisibleColumns.created')
"
@update:model-value="searchFn()"
is-outlined
/>
@ -344,7 +357,9 @@ const shouldRenderColumn = (colName) => {
<QItemSection>
<VnSelectFilter
:label="
t('customer.extendedList.tableVisibleColumns.businessTypeFk')
t(
'customer.extendedList.tableVisibleColumns.businessTypeFk'
)
"
v-model="params.businessTypeFk"
:options="businessTypesOptions"
@ -382,7 +397,9 @@ const shouldRenderColumn = (colName) => {
<QItemSection>
<VnSelectFilter
:label="
t('customer.extendedList.tableVisibleColumns.sageTaxTypeFk')
t(
'customer.extendedList.tableVisibleColumns.sageTaxTypeFk'
)
"
v-model="params.sageTaxTypeFk"
@update:model-value="searchFn()"
@ -418,12 +435,16 @@ const shouldRenderColumn = (colName) => {
/>
</QItemSection>
</QItem>
<QItem v-if="shouldRenderColumn('isActive') || shouldRenderColumn('isVies')">
<QItem
v-if="shouldRenderColumn('isActive') || shouldRenderColumn('isVies')"
>
<QItemSection v-if="shouldRenderColumn('isActive')">
<QCheckbox
v-model="params.isActive"
@update:model-value="searchFn()"
:label="t('customer.extendedList.tableVisibleColumns.isActive')"
:label="
t('customer.extendedList.tableVisibleColumns.isActive')
"
toggle-indeterminate
:false-value="undefined"
/>
@ -462,7 +483,9 @@ const shouldRenderColumn = (colName) => {
v-model="params.isEqualizated"
@update:model-value="searchFn()"
:label="
t('customer.extendedList.tableVisibleColumns.isEqualizated')
t(
'customer.extendedList.tableVisibleColumns.isEqualizated'
)
"
toggle-indeterminate
:false-value="undefined"
@ -471,14 +494,17 @@ const shouldRenderColumn = (colName) => {
</QItem>
<QItem
v-if="
shouldRenderColumn('hasToInvoice') || shouldRenderColumn('isFreezed')
shouldRenderColumn('hasToInvoice') ||
shouldRenderColumn('isFreezed')
"
>
<QItemSection v-if="shouldRenderColumn('isFreezed')">
<QCheckbox
v-model="params.isFreezed"
@update:model-value="searchFn()"
:label="t('customer.extendedList.tableVisibleColumns.isFreezed')"
:label="
t('customer.extendedList.tableVisibleColumns.isFreezed')
"
toggle-indeterminate
:false-value="undefined"
/>
@ -488,7 +514,9 @@ const shouldRenderColumn = (colName) => {
v-model="params.hasToInvoice"
@update:model-value="searchFn()"
:label="
t('customer.extendedList.tableVisibleColumns.hasToInvoice')
t(
'customer.extendedList.tableVisibleColumns.hasToInvoice'
)
"
toggle-indeterminate
:false-value="undefined"
@ -519,7 +547,9 @@ const shouldRenderColumn = (colName) => {
v-model="params.isToBeMailed"
@update:model-value="searchFn()"
:label="
t('customer.extendedList.tableVisibleColumns.isToBeMailed')
t(
'customer.extendedList.tableVisibleColumns.isToBeMailed'
)
"
toggle-indeterminate
:false-value="undefined"
@ -527,7 +557,9 @@ const shouldRenderColumn = (colName) => {
</QItemSection>
</QItem>
<QItem
v-if="shouldRenderColumn('hasLcr') || shouldRenderColumn('hasCoreVnl')"
v-if="
shouldRenderColumn('hasLcr') || shouldRenderColumn('hasCoreVnl')
"
>
<QItemSection v-if="shouldRenderColumn('hasLcr')">
<QCheckbox
@ -542,7 +574,9 @@ const shouldRenderColumn = (colName) => {
<QCheckbox
v-model="params.hasCoreVnl"
@update:model-value="searchFn()"
:label="t('customer.extendedList.tableVisibleColumns.hasCoreVnl')"
:label="
t('customer.extendedList.tableVisibleColumns.hasCoreVnl')
"
toggle-indeterminate
:false-value="undefined"
/>
@ -553,7 +587,9 @@ const shouldRenderColumn = (colName) => {
<QCheckbox
v-model="params.hasSepaVnl"
@update:model-value="searchFn()"
:label="t('customer.extendedList.tableVisibleColumns.hasSepaVnl')"
:label="
t('customer.extendedList.tableVisibleColumns.hasSepaVnl')
"
toggle-indeterminate
:false-value="undefined"
/>
@ -561,10 +597,20 @@ const shouldRenderColumn = (colName) => {
</QItem>
<QSeparator />
</QList>
</template>
</VnFilterPanel>
</template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n>
es:
Social name: Razón social

View File

@ -36,6 +36,7 @@ const clients = ref();
</template>
<template #body="{ params, searchFn }">
<QList dense class="list">
<QItem class="q-mb-sm q-mt-sm">
<QItemSection>
<VnInput
@ -106,10 +107,20 @@ const clients = ref();
</QItemSection>
</QItem>
<QSeparator />
</QList>
</template>
</VnFilterPanel>
</template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n>
en:
params:

View File

@ -122,7 +122,7 @@ function stateColor(row) {
</QScrollArea>
</QDrawer>
<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">
<QBtn
@click="arrayData.refresh()"
@ -278,6 +278,10 @@ function stateColor(row) {
<style lang="scss">
.customer-payments {
.card-list {
width: 100%;
max-width: 60em;
.q-table--dense .q-table th:first-child {
padding-left: 0;
}
@ -286,6 +290,7 @@ function stateColor(row) {
overflow: hidden;
text-overflow: ellipsis;
}
}
}
</style>

View File

@ -27,9 +27,14 @@ function isValidNumber(value) {
</div>
</template>
<template #body="{ params }">
<QList dense class="q-gutter-y-sm q-mt-sm">
<QItem>
<QItemSection>
<VnInput :label="t('Order ID')" v-model="params.orderFk" is-outlined>
<VnInput
:label="t('Order ID')"
v-model="params.orderFk"
is-outlined
>
<template #prepend>
<QIcon name="vn:basket" size="xs" />
</template>
@ -62,7 +67,8 @@ function isValidNumber(value) {
}
"
:rules="[
(val) => isValidNumber(val) || !val || 'Please type a number',
(val) =>
isValidNumber(val) || !val || 'Please type a number',
]"
lazy-rules
>
@ -75,12 +81,17 @@ function isValidNumber(value) {
<QItem>
<QItemSection>
<VnInputDate v-model="params.from" :label="t('From')" is-outlined />
<VnInputDate
v-model="params.from"
:label="t('From')"
is-outlined
/>
</QItemSection>
<QItemSection>
<VnInputDate v-model="params.to" :label="t('To')" is-outlined />
</QItemSection>
</QItem>
</QList>
</template>
</VnFilterPanel>
</template>

View File

@ -54,6 +54,7 @@ const suppliersOptions = ref([]);
</div>
</template>
<template #body="{ params }">
<QList dense class="list q-gutter-y-sm q-mt-sm">
<QItem>
<QItemSection>
<VnInput
@ -197,6 +198,7 @@ const suppliersOptions = ref([]);
/>
</QItemSection>
</QItem>
</QList>
</template>
</VnFilterPanel>
</template>

View File

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

View File

@ -36,6 +36,7 @@ const suppliersRef = ref();
</div>
</template>
<template #body="{ params, searchFn }">
<QList dense class="list q-gutter-y-sm q-mt-sm">
<QItem>
<QItemSection>
<VnInput
@ -185,7 +186,11 @@ const suppliersRef = ref();
</QItem>
<QItem>
<QItemSection>
<VnInputDate :label="t('To')" v-model="params.to" is-outlined />
<VnInputDate
:label="t('To')"
v-model="params.to"
is-outlined
/>
</QItemSection>
</QItem>
<QItem>
@ -198,10 +203,20 @@ const suppliersRef = ref();
</QItemSection>
</QItem>
</QExpansionItem>
</QList>
</template>
</VnFilterPanel>
</template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
</style>
<i18n>
en:
params:

View File

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

View File

@ -41,6 +41,7 @@ function setWorkers(data) {
</div>
</template>
<template #body="{ params, searchFn }">
<QList dense class="q-gutter-y-sm q-mt-sm">
<QItem>
<QItemSection>
<VnInput
@ -57,7 +58,11 @@ function setWorkers(data) {
</QItem>
<QItem>
<QItemSection>
<VnInput :label="t('Amount')" v-model="params.amount" is-outlined />
<VnInput
:label="t('Amount')"
v-model="params.amount"
is-outlined
/>
</QItemSection>
</QItem>
<QItem>
@ -124,6 +129,7 @@ function setWorkers(data) {
</QItemSection>
</QItem>
</QExpansionItem>
</QList>
</template>
</VnFilterPanel>
</template>

View File

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

View File

@ -27,6 +27,7 @@ const props = defineProps({
</div>
</template>
<template #body="{ params }">
<QList dense class="q-gutter-y-sm q-mt-sm">
<QItem>
<QItemSection>
<VnInputDate
@ -100,10 +101,13 @@ const props = defineProps({
/>
</QItemSection>
</QItem>
</QList>
</template>
</VnFilterPanel>
</template>
<style scoped></style>
<i18n>
en:
params:

View File

@ -219,6 +219,7 @@ const getCategoryClass = (category, params) => {
</template>
</template>
<template #body="{ params, searchFn }">
<QList dense style="max-width: 256px">
<QItem class="category-filter q-mt-md">
<div
v-for="category in categoryList"
@ -394,6 +395,7 @@ const getCategoryClass = (category, params) => {
</QItemSection>
</QItem>
<QSeparator />
</QList>
</template>
</VnFilterPanel>
</template>

View File

@ -59,6 +59,7 @@ const sourceList = ref(null);
</div>
</template>
<template #body="{ params }">
<QList id="orderFilter" dense>
<QItem>
<QItemSection>
<VnInput
@ -201,10 +202,19 @@ const sourceList = ref(null);
<QCheckbox v-model="params.showEmpty" :label="t('showEmpty')" />
</QItemSection>
</QItem>
</QList>
</template>
</VnFilterPanel>
</template>
<style lang="scss">
#orderFilter {
.q-item {
padding-top: 8px;
}
}
</style>
<i18n>
en:
params:

View File

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

View File

@ -83,7 +83,7 @@ async function confirmOrder() {
auto-load
/>
<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">
{{ t('globals.noResults') }}
</div>
@ -228,6 +228,11 @@ async function confirmOrder() {
}
</style>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
.header {
color: $primary;
font-weight: bold;

View File

@ -4,7 +4,7 @@ import { onMounted, onUnmounted } from 'vue';
import { useRouter } from 'vue-router';
import { useStateStore } from 'stores/useStateStore';
import { toCurrency, toDate } from 'src/filters';
import { useQuasar } from 'quasar';
import {useQuasar} from "quasar";
import CardList from 'components/ui/CardList.vue';
import WorkerDescriptorProxy from 'pages/Worker/Card/WorkerDescriptorProxy.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 OrderSearchbar from 'pages/Order/Card/OrderSearchbar.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 quasar = useQuasar();
@ -63,7 +63,7 @@ function viewSummary(id) {
</QScrollArea>
</QDrawer>
<QPage class="column items-center q-pa-md">
<div class="vn-card-list">
<div class="card-list">
<VnPaginate
data-key="OrderList"
url="Orders/filter"
@ -153,3 +153,10 @@ function viewSummary(id) {
</QPageSticky>
</QPage>
</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
/>
<QPage class="column items-center q-pa-md">
<div class="vn-card-list">
<div class="card-list">
<div
v-if="!volumeSummary?.totalVolume && !volumeSummary?.totalBoxes"
class="no-result"
@ -121,6 +121,11 @@ const loadVolumes = async (rows) => {
}
</style>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
.header {
color: $primary;
font-weight: bold;

View File

@ -61,6 +61,7 @@ const warehouseList = ref([]);
</div>
</template>
<template #body="{ params }">
<QList dense>
<QItem class="q-my-sm">
<QItemSection v-if="workerList">
<VnSelectFilter
@ -197,6 +198,7 @@ const warehouseList = ref([]);
/>
</QItemSection>
</QItem>
</QList>
</template>
</VnFilterPanel>
</template>

View File

@ -71,8 +71,8 @@ const routeFilter = {
};
const onSave = (data, response) => {
if (isNew) {
axios.post(`Routes/${response.data?.id}/updateWorkCenter`);
router.push({ name: 'RouteSummary', params: { id: response.data?.id } });
axios.post(`Routes/${response?.id}/updateWorkCenter`);
router.push({ name: 'RouteSummary', params: { id: response?.id } });
}
};
</script>
@ -198,6 +198,13 @@ const onSave = (data, response) => {
clearable
/>
</div>
<div class="col flex items-center">
<QCheckbox
size="sm"
v-model="data.isOk"
:label="t('Is served')"
/>
</div>
</VnRow>
</template>
<VnRow class="row q-gutter-md q-mb-md">
@ -212,3 +219,15 @@ const onSave = (data, response) => {
</template>
</FormModel>
</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,6 +28,7 @@ const countries = ref();
</div>
</template>
<template #body="{ params }">
<QList dense class="q-gutter-y-sm q-mt-sm">
<QItem>
<QItemSection>
<VnInput
@ -123,6 +124,7 @@ const countries = ref();
/>
</QItemSection>
</QItem>
</QList>
</template>
</VnFilterPanel>
</template>

View File

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

View File

@ -41,11 +41,7 @@ function setParkings(data) {
@on-fetch="setWorkers"
auto-load
/>
<VnFilterPanel
:data-key="props.dataKey"
:search-button="true"
@search="emit('search')"
>
<VnFilterPanel :data-key="props.dataKey" :search-button="true" @search="emit('search')">
<template #tags="{ tag, formatFn }">
<div class="q-gutter-x-xs">
<strong>{{ t(`params.${tag.label}`) }}: </strong>
@ -53,6 +49,7 @@ function setParkings(data) {
</div>
</template>
<template #body="{ params }">
<QList dense>
<QItem class="q-my-sm">
<QItemSection v-if="!parkings">
<QSkeleton type="QInput" class="full-width" />
@ -104,6 +101,7 @@ function setParkings(data) {
/>
</QItemSection>
</QItem>
</QList>
</template>
</VnFilterPanel>
</template>

View File

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

View File

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

View File

@ -44,7 +44,7 @@ const viewSummary = (id) => {
</template>
<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>
<template #body="{ rows }">
<CardList
@ -95,6 +95,13 @@ const viewSummary = (id) => {
</QPage>
</template>
<style lang="scss" scoped>
.card-list {
width: 100%;
max-width: 60em;
}
</style>
<i18n>
en:
Search suppliers: Search suppliers

View File

@ -56,6 +56,7 @@ const warehouses = ref();
</div>
</template>
<template #body="{ params, searchFn }">
<QList dense class="q-gutter-y-sm q-mt-sm">
<QItem>
<QItemSection>
<VnInput
@ -74,7 +75,11 @@ const warehouses = ref();
</QItem>
<QItem>
<QItemSection>
<VnInputDate v-model="params.from" :label="t('From')" is-outlined />
<VnInputDate
v-model="params.from"
:label="t('From')"
is-outlined
/>
</QItemSection>
<QItemSection>
<VnInputDate v-model="params.to" :label="t('To')" is-outlined />
@ -239,6 +244,7 @@ const warehouses = ref();
</QItemSection>
</QItem>
</QExpansionItem>
</QList>
</template>
</VnFilterPanel>
</template>

View File

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

View File

@ -66,6 +66,7 @@ const decrement = (paramsObj, key) => {
</div>
</template>
<template #body="{ params }">
<QList dense class="list q-gutter-y-sm q-mt-sm">
<QItem>
<QItemSection>
<VnInput label="id" v-model="params.id" is-outlined />
@ -204,11 +205,19 @@ const decrement = (paramsObj, key) => {
/>
</QItemSection>
</QItem>
</QList>
</template>
</VnFilterPanel>
</template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
.input-number >>> input[type='number'] {
-moz-appearance: textfield;
}

View File

@ -61,6 +61,7 @@ const decrement = (paramsObj, key) => {
</div>
</template>
<template #body="{ params }">
<QList dense class="list q-gutter-y-sm q-mt-sm">
<QItem>
<QItemSection>
<VnInput
@ -257,11 +258,19 @@ const decrement = (paramsObj, key) => {
</QInput>
</QItemSection>
</QItem>
</QList>
</template>
</VnFilterPanel>
</template>
<style scoped>
.list {
width: 256px;
}
.list * {
max-width: 100%;
}
.input-number >>> input[type='number'] {
-moz-appearance: textfield;
}

View File

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

View File

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

View File

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

View File

@ -27,6 +27,7 @@ const departments = ref();
</div>
</template>
<template #body="{ params, searchFn }">
<QList dense class="q-gutter-y-sm q-mt-sm">
<QItem>
<QItemSection>
<VnInput :label="t('FI')" v-model="params.fi" is-outlined
@ -93,6 +94,7 @@ const departments = ref();
/>
</QItemSection>
</QItem>
</QList>
</template>
</VnFilterPanel>
</template>

View File

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