Merge branch 'dev' into 8246-ZoneAddressFk
gitea/salix-front/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Jon Elias 2025-01-07 06:22:27 +00:00
commit 5c839b2dfa
11 changed files with 37 additions and 16 deletions

View File

@ -314,7 +314,7 @@ function handleSelection({ evt, added, rows: selectedRows }, rows) {
show-if-above show-if-above
> >
<QScrollArea class="fit"> <QScrollArea class="fit">
<VnTableFilter :data-key="$attrs['data-key']" :columns="columns" /> <VnTableFilter :data-key="$attrs['data-key']" :columns="columns" :redirect="redirect" />
</QScrollArea> </QScrollArea>
</QDrawer> </QDrawer>
<CrudModel <CrudModel

View File

@ -14,6 +14,7 @@ defineProps({
hide-dropdown-icon hide-dropdown-icon
focus-on-mount focus-on-mount
@update:model-value="promise" @update:model-value="promise"
data-cy="vnBtnSelect_select"
/> />
</QBtnDropdown> </QBtnDropdown>
</template> </template>

View File

@ -297,7 +297,7 @@ defineExpose({
ref="dmsRef" ref="dmsRef"
:data-key="$props.model" :data-key="$props.model"
:url="$props.model" :url="$props.model"
:filter="dmsFilter" :user-filter="dmsFilter"
:order="['dmsFk DESC']" :order="['dmsFk DESC']"
:auto-load="true" :auto-load="true"
@on-fetch="setData" @on-fetch="setData"

View File

@ -20,16 +20,15 @@ const hasContent = ref();
let observer; let observer;
onMounted(() => { onMounted(() => {
if (teleportRef.value) { if (!teleportRef.value) return;
const checkContent = () => { const checkContent = () => {
hasContent.value = teleportRef.value.innerHTML.trim() !== ''; hasContent.value = teleportRef.value?.innerHTML?.trim() !== '';
}; };
observer = new MutationObserver(checkContent); observer = new MutationObserver(checkContent);
observer.observe(teleportRef.value, { childList: true, subtree: true }); observer.observe(teleportRef.value, { childList: true, subtree: true });
checkContent(); checkContent();
}
}); });
</script> </script>

View File

@ -4,11 +4,12 @@ import VnSearchbar from 'components/ui/VnSearchbar.vue';
import VnTableFilter from '../VnTable/VnTableFilter.vue'; import VnTableFilter from '../VnTable/VnTableFilter.vue';
import { onBeforeMount, computed } from 'vue'; import { onBeforeMount, computed } from 'vue';
import { useArrayData } from 'src/composables/useArrayData'; import { useArrayData } from 'src/composables/useArrayData';
import { useRoute } from 'vue-router';
const $props = defineProps({ const $props = defineProps({
section: { section: {
type: String, type: String,
required: true, default: null,
}, },
dataKey: { dataKey: {
type: String, type: String,
@ -38,14 +39,28 @@ const $props = defineProps({
type: Boolean, type: Boolean,
default: true, default: true,
}, },
keepData: {
type: Boolean,
default: true,
},
}); });
const sectionValue = computed(() => $props.section ?? $props.dataKey); const route = useRoute();
let arrayData; let arrayData;
const sectionValue = computed(() => $props.section ?? $props.dataKey);
const isMainSection = computed(() => {
const isSame = sectionValue.value == route.name;
if (!isSame && arrayData) {
arrayData.reset(['userParams', 'userFilter']);
}
return isSame;
});
onBeforeMount(() => { onBeforeMount(() => {
if ($props.dataKey) if ($props.dataKey)
arrayData = useArrayData($props.dataKey, { arrayData = useArrayData($props.dataKey, {
searchUrl: 'table', searchUrl: 'table',
keepData: $props.keepData,
...$props.arrayDataProps, ...$props.arrayDataProps,
navigate: $props.redirect, navigate: $props.redirect,
}); });
@ -74,6 +89,6 @@ onBeforeMount(() => {
</slot> </slot>
</template> </template>
</RightMenu> </RightMenu>
<slot name="body" v-if="sectionValue == $route.name" /> <slot name="body" v-if="isMainSection" />
<RouterView v-else /> <RouterView v-else />
</template> </template>

View File

@ -111,6 +111,7 @@ onMounted(async () => {
}); });
onBeforeUnmount(() => { onBeforeUnmount(() => {
if (!store.keepData) arrayData.reset(['data']);
arrayData.resetPagination(); arrayData.resetPagination();
}); });

View File

@ -126,6 +126,7 @@ async function search() {
delete filter.params.search; delete filter.params.search;
} }
await arrayData.applyFilter(filter); await arrayData.applyFilter(filter);
searchText.value = undefined;
} }
</script> </script>
<template> <template>

View File

@ -53,6 +53,7 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
'searchUrl', 'searchUrl',
'navigate', 'navigate',
'mapKey', 'mapKey',
'keepData',
]; ];
if (typeof userOptions === 'object') { if (typeof userOptions === 'object') {
for (const option in userOptions) { for (const option in userOptions) {
@ -302,7 +303,7 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
for (const row of data) { for (const row of data) {
const key = row[store.mapKey]; const key = row[store.mapKey];
const val = { ...row, key }; const val = { ...row, key };
if (store.map.has(key)) { if (key && store.map.has(key)) {
const { position } = store.map.get(key); const { position } = store.map.get(key);
val.position = position; val.position = position;
store.map.set(key, val); store.map.set(key, val);

View File

@ -221,7 +221,7 @@ async function handleConfirm() {
</span> </span>
</div> </div>
</div> </div>
<FetchedTags :item="props.row.item" /> <FetchedTags :item="props.row.item" :columns="3" />
</QTd> </QTd>
<QTd key="quantity" :props="props"> <QTd key="quantity" :props="props">
{{ props.row.quantity }} {{ props.row.quantity }}

View File

@ -18,6 +18,7 @@ export const useArrayDataStore = defineStore('arrayDataStore', () => {
navigate: null, navigate: null,
page: 1, page: 1,
mapKey: 'id', mapKey: 'id',
keepData: false,
}; };
function get(key) { function get(key) {

View File

@ -16,7 +16,9 @@ describe('Ticket expedtion', () => {
cy.wait('@show'); cy.wait('@show');
cy.selectRows([1, 2]); cy.selectRows([1, 2]);
cy.selectOption('[data-cy="change-state"]', 'Perdida');
cy.dataCy('change-state').click();
cy.selectOption('[data-cy="vnBtnSelect_select"]', 'Perdida');
cy.wait('@add'); cy.wait('@add');
cy.get(`${tableContent} tr:nth-child(-n+2) ${stateTd}`).each(($el) => { cy.get(`${tableContent} tr:nth-child(-n+2) ${stateTd}`).each(($el) => {