Merge branch 'master' of https://gitea.verdnatura.es/verdnatura/salix-front into test
gitea/salix-front/pipeline/head This commit looks good Details

This commit is contained in:
Alex Moreno 2025-04-17 08:01:06 +02:00
commit 53178d2429
9 changed files with 28 additions and 46 deletions

View File

@ -83,7 +83,7 @@ const isLoading = ref(false);
const hasChanges = ref(false);
const originalData = ref();
const vnPaginateRef = ref();
const formData = ref([]);
const formData = ref();
const saveButtonRef = ref(null);
const watchChanges = ref();
const formUrl = computed(() => $props.url);
@ -298,6 +298,10 @@ watch(formUrl, async () => {
});
</script>
<template>
<SkeletonTable
v-if="!formData && ($attrs['auto-load'] === '' || $attrs['auto-load'])"
:columns="$attrs.columns?.length"
/>
<VnPaginate
:url="url"
:limit="limit"
@ -316,10 +320,6 @@ watch(formUrl, async () => {
></slot>
</template>
</VnPaginate>
<SkeletonTable
v-if="!formData && $attrs.autoLoad"
:columns="$attrs.columns?.length"
/>
<Teleport to="#st-actions" v-if="stateStore?.isSubToolbarShown() && hasSubToolbar">
<QBtnGroup push style="column-gap: 10px">
<slot name="moreBeforeActions" />

View File

@ -183,7 +183,7 @@ const arrayData = useArrayData(arrayDataKey, {
searchUrl: false,
mapKey: $attrs['map-key'],
});
const someIsLoading = computed(() => isLoading.value || arrayData.isLoading);
function findKeyInOptions() {
if (!$props.options) return;
return filter($props.modelValue, $props.options)?.length;
@ -366,7 +366,8 @@ function getCaption(opt) {
virtual-scroll-slice-size="options.length"
hide-bottom-space
:input-debounce="useURL ? '300' : '0'"
:loading="isLoading"
:loading="someIsLoading"
:disable="someIsLoading"
@virtual-scroll="onScroll"
@keydown="handleKeyDown"
:data-cy="$attrs.dataCy ?? $attrs.label + '_select'"

View File

@ -44,8 +44,7 @@ onBeforeMount(async () => {
});
// It enables to load data only once if the module is the same as the dataKey
if (!isSameDataKey.value || !route.params.id || $props.id !== route.params.id)
await getData();
if (!isSameDataKey.value || !route.params.id) await getData();
watch(
() => [$props.url, $props.filter],
async () => {

View File

@ -89,7 +89,6 @@ const insertTag = (rows) => {
:default-remove="false"
:user-filter="{
fields: ['id', 'itemFk', 'tagFk', 'value', 'priority'],
where: { itemFk: route.params.id },
include: {
relation: 'tag',
scope: {
@ -97,6 +96,7 @@ const insertTag = (rows) => {
},
},
}"
:filter="{ where: { itemFk: route.params.id } }"
order="priority"
auto-load
@on-fetch="onItemTagsFetched"

View File

@ -11,26 +11,19 @@ export function cloneItem() {
const router = useRouter();
const cloneItem = async (entityId) => {
const { id } = entityId;
try {
const { data } = await axios.post(`Items/${id ?? entityId}/clone`);
router.push({ name: 'ItemTags', params: { id: data.id } });
} catch (err) {
console.error('Error cloning item');
}
const { data } = await axios.post(`Items/${id ?? entityId}/clone`);
router.push({ name: 'ItemTags', params: { id: data.id } });
};
const openCloneDialog = async (entityId) => {
quasar
.dialog({
component: VnConfirm,
componentProps: {
title: t('item.descriptor.clone.title'),
message: t('item.descriptor.clone.subTitle'),
},
})
.onOk(async () => {
await cloneItem(entityId);
});
quasar.dialog({
component: VnConfirm,
componentProps: {
title: t('item.descriptor.clone.title'),
message: t('item.descriptor.clone.subTitle'),
promise: () => cloneItem(entityId),
},
});
};
return { openCloneDialog };
}

View File

@ -11,10 +11,10 @@ import VnSelect from 'src/components/common/VnSelect.vue';
import VnLocation from 'src/components/common/VnLocation.vue';
import VnAccountNumber from 'src/components/common/VnAccountNumber.vue';
import VnCheckbox from 'src/components/common/VnCheckbox.vue';
import { useArrayData } from 'src/composables/useArrayData';
const route = useRoute();
const { t } = useI18n();
const arrayData = useArrayData('Supplier');
const sageTaxTypesOptions = ref([]);
const sageWithholdingsOptions = ref([]);
const sageTransactionTypesOptions = ref([]);
@ -89,6 +89,7 @@ function handleLocation(data, location) {
}"
auto-load
:clear-store-on-unmount="false"
@on-data-saved="arrayData.fetch({})"
>
<template #form="{ data, validate }">
<VnRow>

View File

@ -42,11 +42,7 @@ const groupedStates = ref([]);
auto-load
/>
<FetchData url="Warehouses" @on-fetch="(data) => (warehouses = data)" auto-load />
<VnFilterPanel
:data-key="props.dataKey"
:search-button="true"
:unremovableParams="['from', 'to']"
>
<VnFilterPanel :data-key="props.dataKey" :search-button="true">
<template #tags="{ tag, formatFn }">
<div class="q-gutter-x-xs">
<strong>{{ t(`params.${tag.label}`) }}: </strong>
@ -188,16 +184,6 @@ const groupedStates = ref([]);
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<QCheckbox
v-model="params.problems"
@update:model-value="searchFn()"
:label="t('With problems')"
toggle-indeterminate
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection v-if="!provinces">
<QSkeleton type="QInput" class="full-width" />

View File

@ -128,6 +128,7 @@ const columns = computed(() => [
columnFilter: false,
label: t('ticketList.hour'),
format: (row) => toTimeFormat(row.shipped),
orderBy: false,
},
{
align: 'left',
@ -136,6 +137,7 @@ const columns = computed(() => [
columnFilter: false,
label: t('ticketList.closure'),
format: (row, dashIfEmpty) => dashIfEmpty(toTimeFormat(row.zoneLanding)),
orderBy: false,
},
{
align: 'left',
@ -477,7 +479,7 @@ function setReference(data) {
prefix="card"
:array-data-props="{
url: 'Tickets/filter',
order: ['shipped DESC', 'shippedHour ASC', 'zoneLanding ASC', 'id'],
order: ['shipped DESC', 'id DESC'],
exprBuilder,
}"
>

View File

@ -1,5 +1,5 @@
import '../commands.js';
describe('EntryDescriptor', () => {
describe.skip('EntryDescriptor', () => {
beforeEach(() => {
cy.login('buyer');
cy.visit(`/#/entry/list`);