Merge branch 'test' of https://gitea.verdnatura.es/verdnatura/salix-front into 8315-devToTest
gitea/salix-front/pipeline/pr-test This commit looks good
Details
gitea/salix-front/pipeline/pr-test This commit looks good
Details
This commit is contained in:
commit
8bf4eaa39a
|
@ -74,6 +74,10 @@ const props = defineProps({
|
|||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
mapKey: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
});
|
||||
|
||||
const emit = defineEmits(['onFetch', 'onPaginate', 'onChange']);
|
||||
|
@ -96,6 +100,7 @@ const arrayData = useArrayData(props.dataKey, {
|
|||
exprBuilder: props.exprBuilder,
|
||||
keepOpts: props.keepOpts,
|
||||
searchUrl: props.searchUrl,
|
||||
mapKey: props.mapKey,
|
||||
});
|
||||
const store = arrayData.store;
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
|
|||
'exprBuilder',
|
||||
'searchUrl',
|
||||
'navigate',
|
||||
'mapKey',
|
||||
];
|
||||
if (typeof userOptions === 'object') {
|
||||
for (const option in userOptions) {
|
||||
|
@ -119,17 +120,12 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
|
|||
const { limit } = filter;
|
||||
store.hasMoreData = limit && response.data.length >= limit;
|
||||
|
||||
if (append) {
|
||||
if (!store.data) store.data = [];
|
||||
for (const row of response.data) store.data.push(row);
|
||||
} else {
|
||||
store.data = response.data;
|
||||
if (!isDialogOpened()) updateRouter && updateStateParams();
|
||||
}
|
||||
processData(response.data, { map: !!store.mapKey, append });
|
||||
if (!append && !isDialogOpened()) updateRouter && updateStateParams();
|
||||
|
||||
store.isLoading = false;
|
||||
|
||||
canceller = null;
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
|
@ -288,6 +284,31 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
|
|||
router.replace(newUrl);
|
||||
}
|
||||
|
||||
function processData(data, { map = true, append = true }) {
|
||||
if (!append) {
|
||||
store.data = [];
|
||||
store.map = new Map();
|
||||
}
|
||||
|
||||
if (!Array.isArray(data)) store.data = data;
|
||||
else if (!map && append) for (const row of data) store.data.push(row);
|
||||
else
|
||||
for (const row of data) {
|
||||
const key = row[store.mapKey];
|
||||
const val = { ...row, key };
|
||||
if (store.map.has(key)) {
|
||||
const { position } = store.map.get(key);
|
||||
val.position = position;
|
||||
store.map.set(key, val);
|
||||
store.data[position] = val;
|
||||
} else {
|
||||
val.position = store.map.size;
|
||||
store.map.set(key, val);
|
||||
store.data.push(val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const totalRows = computed(() => (store.data && store.data.length) || 0);
|
||||
const isLoading = computed(() => store.isLoading || false);
|
||||
|
||||
|
|
|
@ -361,7 +361,7 @@ function handleOnDataSave({ CrudModelRef }) {
|
|||
@on-fetch="(data) => (warehousesOptions = data)"
|
||||
auto-load
|
||||
url="Warehouses"
|
||||
:filter="{ fields: ['id', 'name'], order: 'name ASC', limit: 30 }"
|
||||
:filter="{ fields: ['id', 'name'], order: 'name ASC' }"
|
||||
/>
|
||||
<RightMenu>
|
||||
<template #right-panel>
|
||||
|
@ -394,191 +394,186 @@ function handleOnDataSave({ CrudModelRef }) {
|
|||
/>
|
||||
</template>
|
||||
</VnSubToolbar>
|
||||
<QPage>
|
||||
<VnTable
|
||||
@on-fetch="
|
||||
(data) =>
|
||||
data.forEach((item) => {
|
||||
item.hasMinPrice = `${item.hasMinPrice !== 0}`;
|
||||
})
|
||||
"
|
||||
:default-remove="false"
|
||||
:default-reset="false"
|
||||
:default-save="false"
|
||||
data-key="ItemFixedPrices"
|
||||
url="FixedPrices/filter"
|
||||
:order="['itemFk DESC', 'name DESC']"
|
||||
save-url="FixedPrices/crud"
|
||||
ref="tableRef"
|
||||
dense
|
||||
:filter="{
|
||||
where: {
|
||||
warehouseFk: user.warehouseFk,
|
||||
},
|
||||
}"
|
||||
:columns="columns"
|
||||
default-mode="table"
|
||||
auto-load
|
||||
:is-editable="true"
|
||||
:right-search="false"
|
||||
:table="{
|
||||
'row-key': 'id',
|
||||
selection: 'multiple',
|
||||
}"
|
||||
:crud-model="{
|
||||
disableInfiniteScroll: true,
|
||||
}"
|
||||
v-model:selected="rowsSelected"
|
||||
:create-as-dialog="false"
|
||||
:create="{
|
||||
onDataSaved: handleOnDataSave,
|
||||
}"
|
||||
:use-model="true"
|
||||
:disable-option="{ card: true }"
|
||||
>
|
||||
<template #header-selection="scope">
|
||||
<QCheckbox v-model="scope.selected" />
|
||||
</template>
|
||||
<template #body-selection="scope">
|
||||
{{ scope }}
|
||||
<QCheckbox flat v-model="scope.selected" />
|
||||
</template>
|
||||
<VnTable
|
||||
@on-fetch="
|
||||
(data) =>
|
||||
data.forEach((item) => {
|
||||
item.hasMinPrice = `${item.hasMinPrice !== 0}`;
|
||||
})
|
||||
"
|
||||
:default-remove="false"
|
||||
:default-reset="false"
|
||||
:default-save="false"
|
||||
data-key="ItemFixedPrices"
|
||||
url="FixedPrices/filter"
|
||||
:order="['itemFk DESC', 'name DESC']"
|
||||
save-url="FixedPrices/crud"
|
||||
ref="tableRef"
|
||||
dense
|
||||
:filter="{
|
||||
where: {
|
||||
warehouseFk: user.warehouseFk,
|
||||
},
|
||||
}"
|
||||
:columns="columns"
|
||||
default-mode="table"
|
||||
auto-load
|
||||
:is-editable="true"
|
||||
:right-search="false"
|
||||
:table="{
|
||||
'row-key': 'id',
|
||||
selection: 'multiple',
|
||||
}"
|
||||
:use-model="true"
|
||||
v-model:selected="rowsSelected"
|
||||
:create-as-dialog="false"
|
||||
:create="{
|
||||
onDataSaved: handleOnDataSave,
|
||||
}"
|
||||
:disable-option="{ card: true }"
|
||||
>
|
||||
<template #header-selection="scope">
|
||||
<QCheckbox v-model="scope.selected" />
|
||||
</template>
|
||||
<template #body-selection="scope">
|
||||
{{ scope }}
|
||||
<QCheckbox flat v-model="scope.selected" />
|
||||
</template>
|
||||
|
||||
<template #column-itemFk="props">
|
||||
<VnSelect
|
||||
style="max-width: 100px"
|
||||
url="Items/withName"
|
||||
hide-selected
|
||||
option-label="id"
|
||||
option-value="id"
|
||||
v-model="props.row.itemFk"
|
||||
v-on="getRowUpdateInputEvents(props, true, 'select')"
|
||||
<template #column-itemFk="props">
|
||||
<VnSelect
|
||||
style="max-width: 100px"
|
||||
url="Items/withName"
|
||||
hide-selected
|
||||
option-label="id"
|
||||
option-value="id"
|
||||
v-model="props.row.itemFk"
|
||||
v-on="getRowUpdateInputEvents(props, true, 'select')"
|
||||
>
|
||||
<template #option="scope">
|
||||
<QItem v-bind="scope.itemProps">
|
||||
<QItemSection>
|
||||
<QItemLabel> #{{ scope.opt?.id }} </QItemLabel>
|
||||
<QItemLabel caption>{{ scope.opt?.name }}</QItemLabel>
|
||||
</QItemSection>
|
||||
</QItem>
|
||||
</template>
|
||||
</VnSelect>
|
||||
</template>
|
||||
<template #column-name="{ row }">
|
||||
<span class="link">
|
||||
{{ row.name }}
|
||||
</span>
|
||||
<span class="subName">{{ row.subName }}</span>
|
||||
<ItemDescriptorProxy :id="row.itemFk" />
|
||||
<FetchedTags :item="row" />
|
||||
</template>
|
||||
<template #column-rate2="props">
|
||||
<QTd class="col">
|
||||
<VnInput
|
||||
type="currency"
|
||||
style="width: 75px"
|
||||
v-model.number="props.row.rate2"
|
||||
v-on="getRowUpdateInputEvents(props)"
|
||||
>
|
||||
<template #option="scope">
|
||||
<QItem v-bind="scope.itemProps">
|
||||
<QItemSection>
|
||||
<QItemLabel> #{{ scope.opt?.id }} </QItemLabel>
|
||||
<QItemLabel caption>{{ scope.opt?.name }}</QItemLabel>
|
||||
</QItemSection>
|
||||
</QItem>
|
||||
</template>
|
||||
</VnSelect>
|
||||
</template>
|
||||
<template #column-name="{ row }">
|
||||
<span class="link">
|
||||
{{ row.name }}
|
||||
</span>
|
||||
<span class="subName">{{ row.subName }}</span>
|
||||
<ItemDescriptorProxy :id="row.itemFk" />
|
||||
<FetchedTags :item="row" />
|
||||
</template>
|
||||
<template #column-rate2="props">
|
||||
<QTd class="col">
|
||||
<VnInput
|
||||
type="currency"
|
||||
style="width: 75px"
|
||||
v-model.number="props.row.rate2"
|
||||
v-on="getRowUpdateInputEvents(props)"
|
||||
>
|
||||
<template #append>€</template>
|
||||
</VnInput>
|
||||
</QTd>
|
||||
</template>
|
||||
<template #column-rate3="props">
|
||||
<QTd class="col">
|
||||
<VnInput
|
||||
style="width: 75px"
|
||||
type="currency"
|
||||
v-model.number="props.row.rate3"
|
||||
v-on="getRowUpdateInputEvents(props)"
|
||||
>
|
||||
<template #append>€</template>
|
||||
</VnInput>
|
||||
</QTd>
|
||||
</template>
|
||||
<template #column-minPrice="props">
|
||||
<QTd class="col">
|
||||
<div class="row" style="align-items: center">
|
||||
<QCheckbox
|
||||
:model-value="props.row.hasMinPrice"
|
||||
@update:model-value="updateMinPrice($event, props)"
|
||||
:false-value="'false'"
|
||||
:true-value="'true'"
|
||||
/>
|
||||
<VnInput
|
||||
class="col"
|
||||
type="currency"
|
||||
mask="###.##"
|
||||
:disable="props.row.hasMinPrice === 1"
|
||||
v-model.number="props.row.minPrice"
|
||||
v-on="getRowUpdateInputEvents(props)"
|
||||
>
|
||||
<template #append>€</template>
|
||||
</VnInput>
|
||||
</div>
|
||||
</QTd>
|
||||
</template>
|
||||
<template #column-started="props">
|
||||
<VnInputDate
|
||||
class="vnInputDate"
|
||||
:show-event="true"
|
||||
v-model="props.row.started"
|
||||
v-on="getRowUpdateInputEvents(props, false, 'date')"
|
||||
v-bind="dateStyle(isBigger(props.row.started))"
|
||||
/>
|
||||
</template>
|
||||
<template #column-ended="props">
|
||||
<VnInputDate
|
||||
class="vnInputDate"
|
||||
:show-event="true"
|
||||
v-model="props.row.ended"
|
||||
v-on="getRowUpdateInputEvents(props, false, 'date')"
|
||||
v-bind="dateStyle(isLower(props.row.ended))"
|
||||
/>
|
||||
</template>
|
||||
<template #column-warehouseFk="props">
|
||||
<QTd class="col">
|
||||
<VnSelect
|
||||
style="max-width: 150px"
|
||||
:options="warehousesOptions"
|
||||
hide-selected
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
v-model="props.row.warehouseFk"
|
||||
v-on="getRowUpdateInputEvents(props, false, 'select')"
|
||||
<template #append>€</template>
|
||||
</VnInput>
|
||||
</QTd>
|
||||
</template>
|
||||
<template #column-rate3="props">
|
||||
<QTd class="col">
|
||||
<VnInput
|
||||
style="width: 75px"
|
||||
type="currency"
|
||||
v-model.number="props.row.rate3"
|
||||
v-on="getRowUpdateInputEvents(props)"
|
||||
>
|
||||
<template #append>€</template>
|
||||
</VnInput>
|
||||
</QTd>
|
||||
</template>
|
||||
<template #column-minPrice="props">
|
||||
<QTd class="col">
|
||||
<div class="row" style="align-items: center">
|
||||
<QCheckbox
|
||||
:model-value="props.row.hasMinPrice"
|
||||
@update:model-value="updateMinPrice($event, props)"
|
||||
:false-value="'false'"
|
||||
:true-value="'true'"
|
||||
/>
|
||||
</QTd>
|
||||
</template>
|
||||
<template #column-deleteAction="{ row, rowIndex }">
|
||||
<QIcon
|
||||
name="delete"
|
||||
size="sm"
|
||||
class="cursor-pointer fill-icon-on-hover"
|
||||
color="primary"
|
||||
@click.stop="
|
||||
openConfirmationModal(
|
||||
t('globals.rowWillBeRemoved'),
|
||||
t('Do you want to clone this item?'),
|
||||
() => removePrice(row.id, rowIndex)
|
||||
)
|
||||
"
|
||||
>
|
||||
<QTooltip class="text-no-wrap">
|
||||
{{ t('globals.delete') }}
|
||||
</QTooltip>
|
||||
</QIcon>
|
||||
</template>
|
||||
</VnTable>
|
||||
|
||||
<QDialog ref="editTableCellDialogRef">
|
||||
<EditTableCellValueForm
|
||||
edit-url="FixedPrices/editFixedPrice"
|
||||
:rows="rowsSelected"
|
||||
:fields-options="editTableFieldsOptions"
|
||||
@on-data-saved="onEditCellDataSaved()"
|
||||
<VnInput
|
||||
class="col"
|
||||
type="currency"
|
||||
mask="###.##"
|
||||
:disable="props.row.hasMinPrice === 1"
|
||||
v-model.number="props.row.minPrice"
|
||||
v-on="getRowUpdateInputEvents(props)"
|
||||
>
|
||||
<template #append>€</template>
|
||||
</VnInput>
|
||||
</div>
|
||||
</QTd>
|
||||
</template>
|
||||
<template #column-started="props">
|
||||
<VnInputDate
|
||||
class="vnInputDate"
|
||||
:show-event="true"
|
||||
v-model="props.row.started"
|
||||
v-on="getRowUpdateInputEvents(props, false, 'date')"
|
||||
v-bind="dateStyle(isBigger(props.row.started))"
|
||||
/>
|
||||
</QDialog>
|
||||
</QPage>
|
||||
</template>
|
||||
<template #column-ended="props">
|
||||
<VnInputDate
|
||||
class="vnInputDate"
|
||||
:show-event="true"
|
||||
v-model="props.row.ended"
|
||||
v-on="getRowUpdateInputEvents(props, false, 'date')"
|
||||
v-bind="dateStyle(isLower(props.row.ended))"
|
||||
/>
|
||||
</template>
|
||||
<template #column-warehouseFk="props">
|
||||
<QTd class="col">
|
||||
<VnSelect
|
||||
style="max-width: 150px"
|
||||
:options="warehousesOptions"
|
||||
hide-selected
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
v-model="props.row.warehouseFk"
|
||||
v-on="getRowUpdateInputEvents(props, false, 'select')"
|
||||
/>
|
||||
</QTd>
|
||||
</template>
|
||||
<template #column-deleteAction="{ row, rowIndex }">
|
||||
<QIcon
|
||||
name="delete"
|
||||
size="sm"
|
||||
class="cursor-pointer fill-icon-on-hover"
|
||||
color="primary"
|
||||
@click.stop="
|
||||
openConfirmationModal(
|
||||
t('globals.rowWillBeRemoved'),
|
||||
t('Do you want to clone this item?'),
|
||||
() => removePrice(row.id, rowIndex)
|
||||
)
|
||||
"
|
||||
>
|
||||
<QTooltip class="text-no-wrap">
|
||||
{{ t('globals.delete') }}
|
||||
</QTooltip>
|
||||
</QIcon>
|
||||
</template>
|
||||
</VnTable>
|
||||
|
||||
<QDialog ref="editTableCellDialogRef">
|
||||
<EditTableCellValueForm
|
||||
edit-url="FixedPrices/editFixedPrice"
|
||||
:rows="rowsSelected"
|
||||
:fields-options="editTableFieldsOptions"
|
||||
@on-data-saved="onEditCellDataSaved()"
|
||||
/>
|
||||
</QDialog>
|
||||
</template>
|
||||
<style lang="scss">
|
||||
.q-table th,
|
||||
|
|
|
@ -29,7 +29,7 @@ const exprBuilder = (param, value) => {
|
|||
return { 'a.supplierName': value };
|
||||
case 'routeFk':
|
||||
return { 'a.routeFk': value };
|
||||
case 'created':
|
||||
case 'dated':
|
||||
case 'agencyFk':
|
||||
case 'packages':
|
||||
case 'm3':
|
||||
|
@ -145,7 +145,7 @@ const exprBuilder = (param, value) => {
|
|||
<QItem class="q-my-sm">
|
||||
<QItemSection>
|
||||
<VnInputDate
|
||||
v-model="params.created"
|
||||
v-model="params.dated"
|
||||
:label="t('Date')"
|
||||
is-outlined
|
||||
/>
|
||||
|
|
|
@ -28,7 +28,7 @@ const filter = {
|
|||
'id',
|
||||
'workerFk',
|
||||
'agencyModeFk',
|
||||
'created',
|
||||
'dated',
|
||||
'm3',
|
||||
'warehouseFk',
|
||||
'description',
|
||||
|
@ -78,7 +78,7 @@ const setData = (entity) => (data.value = useCardDescription(entity.code, entity
|
|||
@on-fetch="setData"
|
||||
>
|
||||
<template #body="{ entity }">
|
||||
<VnLv :label="t('Date')" :value="toDate(entity?.created)" />
|
||||
<VnLv :label="t('Date')" :value="toDate(entity?.dated)" />
|
||||
<VnLv :label="t('Agency')" :value="entity?.agencyMode?.name" />
|
||||
<VnLv :label="t('Zone')" :value="entity?.zone?.name" />
|
||||
<VnLv
|
||||
|
|
|
@ -20,7 +20,7 @@ const shelvingId = ref(route.params?.id || null);
|
|||
const isNew = Boolean(!shelvingId.value);
|
||||
const defaultInitialData = {
|
||||
agencyModeFk: null,
|
||||
created: null,
|
||||
dated: null,
|
||||
description: '',
|
||||
vehicleFk: null,
|
||||
workerFk: null,
|
||||
|
@ -33,7 +33,7 @@ const routeFilter = {
|
|||
'id',
|
||||
'workerFk',
|
||||
'agencyModeFk',
|
||||
'created',
|
||||
'dated',
|
||||
'm3',
|
||||
'warehouseFk',
|
||||
'description',
|
||||
|
@ -116,7 +116,7 @@ const onSave = (data, response) => {
|
|||
option-label="name"
|
||||
:input-debounce="0"
|
||||
/>
|
||||
<VnInputDate v-model="data.created" :label="t('Created')" />
|
||||
<VnInputDate v-model="data.dated" :label="t('Dated')" />
|
||||
</VnRow>
|
||||
<template v-if="!isNew">
|
||||
<VnRow>
|
||||
|
@ -170,7 +170,7 @@ es:
|
|||
Hour finished: Hora fin
|
||||
Description: Descripción
|
||||
Is served: Se ha servido
|
||||
Created: Creado
|
||||
Dated: Fecha
|
||||
The km can not exceed: La distancia debe ser inferior a {maxDistance}
|
||||
en:
|
||||
The km can not exceed: Distance must be lesser than {maxDistance}
|
||||
|
|
|
@ -139,7 +139,7 @@ const ticketColumns = ref([
|
|||
<QCard class="vn-one">
|
||||
<VnLv
|
||||
:label="t('route.summary.date')"
|
||||
:value="toDate(entity?.route.created)"
|
||||
:value="toDate(entity?.route.dated)"
|
||||
/>
|
||||
<VnLv
|
||||
:label="t('route.summary.agency')"
|
||||
|
|
|
@ -46,10 +46,10 @@ const columns = computed(() => [
|
|||
},
|
||||
{
|
||||
align: 'left',
|
||||
name: 'created',
|
||||
name: 'dated',
|
||||
label: t('Date'),
|
||||
columnFilter: false,
|
||||
format: ({ created }) => toDate(created),
|
||||
format: ({ dated }) => toDate(dated),
|
||||
},
|
||||
{
|
||||
align: 'left',
|
||||
|
|
|
@ -111,7 +111,7 @@ const columns = computed(() => [
|
|||
},
|
||||
{
|
||||
align: 'left',
|
||||
name: 'created',
|
||||
name: 'dated',
|
||||
label: t('route.Date'),
|
||||
columnFilter: false,
|
||||
cardVisible: true,
|
||||
|
|
|
@ -45,7 +45,7 @@ const columns = computed(() => [
|
|||
columnFilter: {
|
||||
inWhere: true,
|
||||
},
|
||||
format: ({ created }) => toDate(created),
|
||||
format: ({ dated }) => toDate(dated),
|
||||
cardVisible: true,
|
||||
},
|
||||
{
|
||||
|
|
|
@ -109,7 +109,7 @@ const ticketList = ref([]);
|
|||
|
||||
const cloneRoutes = () => {
|
||||
axios.post('Routes/clone', {
|
||||
created: startingDate.value,
|
||||
dated: startingDate.value,
|
||||
ids: selectedRows.value.map((row) => row?.id),
|
||||
});
|
||||
refreshKey.value++;
|
||||
|
|
|
@ -5,7 +5,7 @@ route:
|
|||
Description: Description
|
||||
hourStarted: H.Start
|
||||
hourFinished: H.End
|
||||
createRoute: Create route
|
||||
dated: Dated
|
||||
From: From
|
||||
To: To
|
||||
Date: Date
|
||||
|
|
|
@ -23,13 +23,13 @@ const countriesOptions = ref([]);
|
|||
<template>
|
||||
<FetchData
|
||||
url="Provinces"
|
||||
:filter="{ fields: ['id', 'name'], order: 'name ASC', limit: 30 }"
|
||||
:filter="{ fields: ['id', 'name'], order: 'name ASC'}"
|
||||
@on-fetch="(data) => (provincesOptions = data)"
|
||||
auto-load
|
||||
/>
|
||||
<FetchData
|
||||
url="countries"
|
||||
:filter="{ fields: ['id', 'name'], order: 'name ASC', limit: 30 }"
|
||||
:filter="{ fields: ['id', 'name'], order: 'name ASC'}"
|
||||
@on-fetch="(data) => (countriesOptions = data)"
|
||||
auto-load
|
||||
/>
|
||||
|
|
|
@ -442,6 +442,7 @@ watch(
|
|||
<QPage class="column items-center q-pa-md">
|
||||
<VnTable
|
||||
data-key="advanceTickets"
|
||||
:map-key="false"
|
||||
ref="vnTableRef"
|
||||
url="Tickets/getTicketsAdvance"
|
||||
search-url="advanceTickets"
|
||||
|
|
|
@ -8,7 +8,7 @@ import VnLv from 'src/components/ui/VnLv.vue';
|
|||
import VnTitle from 'src/components/common/VnTitle.vue';
|
||||
import EntryDescriptorProxy from 'src/pages/Entry/Card/EntryDescriptorProxy.vue';
|
||||
import FetchData from 'src/components/FetchData.vue';
|
||||
|
||||
import VnRow from 'components/ui/VnRow.vue';
|
||||
import { toDate, toCurrency } from 'src/filters';
|
||||
import axios from 'axios';
|
||||
|
||||
|
@ -256,16 +256,20 @@ const getLink = (param) => `#/travel/${entityId.value}/${param}`;
|
|||
:label="t('globals.warehouseOut')"
|
||||
:value="travel.warehouseOut?.name"
|
||||
/>
|
||||
<QCheckbox
|
||||
:label="t('travel.basicData.isRaid')"
|
||||
v-model="travel.isRaid"
|
||||
:disable="true"
|
||||
/>
|
||||
<QCheckbox
|
||||
:label="t('travel.summary.delivered')"
|
||||
v-model="travel.isDelivered"
|
||||
:disable="true"
|
||||
/>
|
||||
<VnRow>
|
||||
<QCheckbox
|
||||
:label="t('travel.basicData.isRaid')"
|
||||
v-model="travel.isRaid"
|
||||
:disable="true"
|
||||
/>
|
||||
</VnRow>
|
||||
<VnRow>
|
||||
<QCheckbox
|
||||
:label="t('travel.summary.delivered')"
|
||||
v-model="travel.isDelivered"
|
||||
:disable="true"
|
||||
/>
|
||||
</VnRow>
|
||||
</QCard>
|
||||
<QCard class="vn-one">
|
||||
<QCardSection class="q-pa-none">
|
||||
|
@ -320,7 +324,6 @@ const getLink = (param) => `#/travel/${entityId.value}/${param}`;
|
|||
<QTd>
|
||||
<QCheckbox
|
||||
v-if="col.name === 'isConfirmed'"
|
||||
:label="t('travel.summary.received')"
|
||||
:true-value="1"
|
||||
:false-value="0"
|
||||
v-model="row[col.name]"
|
||||
|
|
|
@ -77,7 +77,6 @@ defineExpose({ states });
|
|||
:label="t('travel.shipped')"
|
||||
v-model="params.shipped"
|
||||
@update:model-value="searchFn()"
|
||||
dense
|
||||
outlined
|
||||
rounded
|
||||
/>
|
||||
|
@ -153,7 +152,7 @@ es:
|
|||
Id: Id
|
||||
ref: Referencia
|
||||
agency: Agencia
|
||||
warehouseInFk: Alm.Salida
|
||||
warehouseInFk: Alm.Entrada
|
||||
shipped: F.Envío
|
||||
shipmentHour: Hora de envío
|
||||
warehouseOut: Alm.Entrada
|
||||
|
|
|
@ -54,7 +54,9 @@ const columns = computed(() => [
|
|||
name: 'id',
|
||||
label: t('globals.id'),
|
||||
isId: true,
|
||||
cardVisible: true,
|
||||
chip: {
|
||||
condition: () => true,
|
||||
},
|
||||
},
|
||||
{
|
||||
align: 'left',
|
||||
|
@ -64,7 +66,7 @@ const columns = computed(() => [
|
|||
columnField: {
|
||||
component: null,
|
||||
},
|
||||
cardVisible: true,
|
||||
isTitle: true,
|
||||
create: true,
|
||||
},
|
||||
{
|
||||
|
@ -103,14 +105,14 @@ const columns = computed(() => [
|
|||
},
|
||||
{
|
||||
align: 'left',
|
||||
name: 'shipped',
|
||||
label: t('globals.shipped'),
|
||||
name: 'shipped',
|
||||
create: true,
|
||||
cardVisible: true,
|
||||
component: 'date',
|
||||
columnField: {
|
||||
component: null,
|
||||
},
|
||||
cardVisible: true,
|
||||
create: true,
|
||||
format: (row, dashIfEmpty) => dashIfEmpty(toDate(row.shipped)),
|
||||
},
|
||||
{
|
||||
|
@ -201,7 +203,7 @@ const columns = computed(() => [
|
|||
/>
|
||||
<RightMenu>
|
||||
<template #right-panel>
|
||||
<TravelFilter data-key="TravelList" ref="travelFilterRef" />
|
||||
<TravelFilter data-key="TravelList" />
|
||||
</template>
|
||||
</RightMenu>
|
||||
<VnTable
|
||||
|
|
|
@ -103,9 +103,12 @@ const formattedWeekTotalHours = computed(() =>
|
|||
const onInputChange = async (date) => {
|
||||
if (!date) return;
|
||||
|
||||
const { year, month, day } = date.scope.timestamp;
|
||||
const { timestamp, outside } = date.scope;
|
||||
const { year, month, day } = timestamp;
|
||||
const _date = new Date(year, month - 1, day);
|
||||
setDate(_date);
|
||||
|
||||
if (outside) getMailStates(_date);
|
||||
};
|
||||
|
||||
const setDate = async (date) => {
|
||||
|
|
|
@ -17,6 +17,7 @@ export const useArrayDataStore = defineStore('arrayDataStore', () => {
|
|||
searchUrl: 'params',
|
||||
navigate: null,
|
||||
page: 1,
|
||||
mapKey: 'id',
|
||||
};
|
||||
|
||||
function get(key) {
|
||||
|
@ -46,6 +47,7 @@ export const useArrayDataStore = defineStore('arrayDataStore', () => {
|
|||
function getDefaultState() {
|
||||
return Object.assign(JSON.parse(JSON.stringify(defaultOpts)), {
|
||||
data: ref(),
|
||||
map: ref(new Map()),
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,11 @@ import VnPaginate from 'src/components/ui/VnPaginate.vue';
|
|||
|
||||
describe('VnPaginate', () => {
|
||||
const expectedUrl = '/api/customers';
|
||||
|
||||
const defaultData = [
|
||||
{ id: 1, name: 'Tony Stark' },
|
||||
{ id: 2, name: 'Jessica Jones' },
|
||||
{ id: 3, name: 'Bruce Wayne' },
|
||||
];
|
||||
let vm;
|
||||
beforeAll(() => {
|
||||
const options = {
|
||||
|
@ -28,11 +32,7 @@ describe('VnPaginate', () => {
|
|||
describe('paginate()', () => {
|
||||
it('should call to the paginate() method and set the data on the rows property', async () => {
|
||||
vi.spyOn(vm.arrayData, 'loadMore');
|
||||
vm.store.data = [
|
||||
{ id: 1, name: 'Tony Stark' },
|
||||
{ id: 2, name: 'Jessica Jones' },
|
||||
{ id: 3, name: 'Bruce Wayne' },
|
||||
];
|
||||
vm.store.data = defaultData;
|
||||
|
||||
await vm.paginate();
|
||||
|
||||
|
@ -42,26 +42,25 @@ describe('VnPaginate', () => {
|
|||
|
||||
it('should call to the paginate() method and then call it again to paginate', async () => {
|
||||
vi.spyOn(axios, 'get').mockResolvedValue({
|
||||
data: [
|
||||
{ id: 1, name: 'Tony Stark' },
|
||||
{ id: 2, name: 'Jessica Jones' },
|
||||
{ id: 3, name: 'Bruce Wayne' },
|
||||
],
|
||||
data: defaultData,
|
||||
});
|
||||
vm.store.hasMoreData = true;
|
||||
await vm.$nextTick();
|
||||
|
||||
vm.store.data = [
|
||||
{ id: 1, name: 'Tony Stark' },
|
||||
{ id: 2, name: 'Jessica Jones' },
|
||||
{ id: 3, name: 'Bruce Wayne' },
|
||||
];
|
||||
vm.store.data = defaultData;
|
||||
|
||||
await vm.paginate();
|
||||
|
||||
expect(vm.store.skip).toEqual(3);
|
||||
expect(vm.store.data.length).toEqual(6);
|
||||
|
||||
vi.spyOn(axios, 'get').mockResolvedValue({
|
||||
data: [
|
||||
{ id: 4, name: 'Peter Parker' },
|
||||
{ id: 5, name: 'Clark Kent' },
|
||||
{ id: 6, name: 'Barry Allen' },
|
||||
],
|
||||
});
|
||||
await vm.paginate();
|
||||
|
||||
expect(vm.store.skip).toEqual(6);
|
||||
|
@ -85,11 +84,7 @@ describe('VnPaginate', () => {
|
|||
|
||||
const index = 1;
|
||||
const done = vi.fn();
|
||||
vm.store.data = [
|
||||
{ id: 1, name: 'Tony Stark' },
|
||||
{ id: 2, name: 'Jessica Jones' },
|
||||
{ id: 3, name: 'Bruce Wayne' },
|
||||
];
|
||||
vm.store.data = defaultData;
|
||||
|
||||
await vm.onLoad(index, done);
|
||||
|
||||
|
@ -105,11 +100,7 @@ describe('VnPaginate', () => {
|
|||
],
|
||||
});
|
||||
|
||||
vm.store.data = [
|
||||
{ id: 1, name: 'Tony Stark' },
|
||||
{ id: 2, name: 'Jessica Jones' },
|
||||
{ id: 3, name: 'Bruce Wayne' },
|
||||
];
|
||||
vm.store.data = defaultData;
|
||||
|
||||
expect(vm.pagination.page).toEqual(1);
|
||||
|
||||
|
|
Loading…
Reference in New Issue