This commit is contained in:
parent
3477b24c93
commit
4ecc8c213e
|
@ -1,23 +1,13 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
|
||||||
import { useI18n } from 'vue-i18n';
|
|
||||||
import VnRow from 'components/ui/VnRow.vue';
|
import VnRow from 'components/ui/VnRow.vue';
|
||||||
import FetchData from 'src/components/FetchData.vue';
|
import FetchData from 'src/components/FetchData.vue';
|
||||||
import VnInput from 'src/components/common/VnInput.vue';
|
import VnInput from 'src/components/common/VnInput.vue';
|
||||||
import FormModel from 'components/FormModel.vue';
|
import FormModel from 'components/FormModel.vue';
|
||||||
import VnSelect from 'src/components/common/VnSelect.vue';
|
import VnSelect from 'src/components/common/VnSelect.vue';
|
||||||
|
|
||||||
const { t } = useI18n();
|
|
||||||
const route = useRoute();
|
|
||||||
const parkingId = computed(() => route.params?.id || null);
|
|
||||||
const sectors = ref([]);
|
const sectors = ref([]);
|
||||||
const sectorFilter = { fields: ['id', 'description'] };
|
const sectorFilter = { fields: ['id', 'description'] };
|
||||||
|
|
||||||
const filter = {
|
|
||||||
fields: ['sectorFk', 'code', 'pickingOrder', 'row', 'column'],
|
|
||||||
include: [{ relation: 'sector', scope: sectorFilter }],
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<FetchData
|
<FetchData
|
||||||
|
@ -27,22 +17,25 @@ const filter = {
|
||||||
@on-fetch="(data) => (sectors = data)"
|
@on-fetch="(data) => (sectors = data)"
|
||||||
auto-load
|
auto-load
|
||||||
/>
|
/>
|
||||||
<FormModel :url="`Parkings/${parkingId}`" model="parking" :filter="filter" auto-load>
|
<FormModel model="Parking" auto-load>
|
||||||
<template #form="{ data }">
|
<template #form="{ data }">
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput v-model="data.code" :label="t('globals.code')" />
|
<VnInput v-model="data.code" :label="$t('globals.code')" />
|
||||||
<VnInput v-model="data.pickingOrder" :label="t('parking.pickingOrder')" />
|
<VnInput
|
||||||
|
v-model="data.pickingOrder"
|
||||||
|
:label="$t('parking.pickingOrder')"
|
||||||
|
/>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput v-model="data.row" :label="t('parking.row')" />
|
<VnInput v-model="data.row" :label="$t('parking.row')" />
|
||||||
<VnInput v-model="data.column" :label="t('parking.column')" />
|
<VnInput v-model="data.column" :label="$t('parking.column')" />
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
v-model="data.sectorFk"
|
v-model="data.sectorFk"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
option-label="description"
|
option-label="description"
|
||||||
:label="t('parking.sector')"
|
:label="$t('parking.sector')"
|
||||||
:options="sectors"
|
:options="sectors"
|
||||||
use-input
|
use-input
|
||||||
input-debounce="0"
|
input-debounce="0"
|
||||||
|
|
|
@ -2,18 +2,22 @@
|
||||||
import VnCard from 'components/common/VnCard.vue';
|
import VnCard from 'components/common/VnCard.vue';
|
||||||
import ParkingDescriptor from 'pages/Parking/Card/ParkingDescriptor.vue';
|
import ParkingDescriptor from 'pages/Parking/Card/ParkingDescriptor.vue';
|
||||||
import ParkingFilter from 'pages/Parking/ParkingFilter.vue';
|
import ParkingFilter from 'pages/Parking/ParkingFilter.vue';
|
||||||
|
import filter from './ParkingFilter.js';
|
||||||
|
import exprBuilder from '../ParkingExprBuilder.js';
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<VnCard
|
<VnCard
|
||||||
data-key="Parking"
|
data-key="Parking"
|
||||||
url="Parkings"
|
url="Parkings"
|
||||||
:descriptor="ParkingDescriptor"
|
:descriptor="ParkingDescriptor"
|
||||||
|
:filter="filter"
|
||||||
:filter-panel="ParkingFilter"
|
:filter-panel="ParkingFilter"
|
||||||
search-data-key="ParkingList"
|
search-data-key="ParkingList"
|
||||||
:searchbar-props="{
|
:searchbar-props="{
|
||||||
url: 'Parkings',
|
url: 'Parkings',
|
||||||
label: 'parking.searchBar.label',
|
label: 'parking.searchBar.label',
|
||||||
info: 'parking.searchBar.info',
|
info: 'parking.searchBar.info',
|
||||||
|
exprBuilder,
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import CardDescriptor from 'components/ui/CardDescriptor.vue';
|
import CardDescriptor from 'components/ui/CardDescriptor.vue';
|
||||||
import VnLv from 'components/ui/VnLv.vue';
|
import VnLv from 'components/ui/VnLv.vue';
|
||||||
|
import filter from './ParkingFilter.js';
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
id: {
|
id: {
|
||||||
type: Number,
|
type: Number,
|
||||||
|
@ -13,14 +12,8 @@ const props = defineProps({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const { t } = useI18n();
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const entityId = computed(() => props.id || route.params.id);
|
const entityId = computed(() => props.id || route.params.id);
|
||||||
|
|
||||||
const filter = {
|
|
||||||
fields: ['id', 'sectorFk', 'code', 'pickingOrder', 'row', 'column'],
|
|
||||||
include: [{ relation: 'sector', scope: { fields: ['id', 'description'] } }],
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<CardDescriptor
|
<CardDescriptor
|
||||||
|
@ -32,9 +25,9 @@ const filter = {
|
||||||
:to-module="{ name: 'ParkingList' }"
|
:to-module="{ name: 'ParkingList' }"
|
||||||
>
|
>
|
||||||
<template #body="{ entity }">
|
<template #body="{ entity }">
|
||||||
<VnLv :label="t('globals.code')" :value="entity.code" />
|
<VnLv :label="$t('globals.code')" :value="entity.code" />
|
||||||
<VnLv :label="t('parking.pickingOrder')" :value="entity.pickingOrder" />
|
<VnLv :label="$t('parking.pickingOrder')" :value="entity.pickingOrder" />
|
||||||
<VnLv :label="t('parking.sector')" :value="entity.sector?.description" />
|
<VnLv :label="$t('parking.sector')" :value="entity.sector?.description" />
|
||||||
</template>
|
</template>
|
||||||
</CardDescriptor>
|
</CardDescriptor>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
export default {
|
||||||
|
fields: ['id', 'sectorFk', 'code', 'pickingOrder', 'row', 'column'],
|
||||||
|
include: [{ relation: 'sector', scope: { fields: ['id', 'description'] } }],
|
||||||
|
};
|
|
@ -0,0 +1,10 @@
|
||||||
|
export default (param, value) => {
|
||||||
|
switch (param) {
|
||||||
|
case 'code':
|
||||||
|
return { [param]: { like: `%${value}%` } };
|
||||||
|
case 'sectorFk':
|
||||||
|
return { [param]: value };
|
||||||
|
case 'search':
|
||||||
|
return { or: [{ code: { like: `%${value}%` } }, { id: value }] };
|
||||||
|
}
|
||||||
|
};
|
|
@ -11,6 +11,7 @@ import VnLv from 'components/ui/VnLv.vue';
|
||||||
import ParkingFilter from './ParkingFilter.vue';
|
import ParkingFilter from './ParkingFilter.vue';
|
||||||
import ParkingSummary from './Card/ParkingSummary.vue';
|
import ParkingSummary from './Card/ParkingSummary.vue';
|
||||||
import RightMenu from 'src/components/common/RightMenu.vue';
|
import RightMenu from 'src/components/common/RightMenu.vue';
|
||||||
|
import exprBuilder from './ParkingExprBuilder.js';
|
||||||
|
|
||||||
const stateStore = useStateStore();
|
const stateStore = useStateStore();
|
||||||
const { push } = useRouter();
|
const { push } = useRouter();
|
||||||
|
@ -23,19 +24,7 @@ onUnmounted(() => (stateStore.rightDrawer = false));
|
||||||
const filter = {
|
const filter = {
|
||||||
fields: ['id', 'sectorFk', 'code', 'pickingOrder'],
|
fields: ['id', 'sectorFk', 'code', 'pickingOrder'],
|
||||||
};
|
};
|
||||||
|
|
||||||
function exprBuilder(param, value) {
|
|
||||||
switch (param) {
|
|
||||||
case 'code':
|
|
||||||
return { [param]: { like: `%${value}%` } };
|
|
||||||
case 'sectorFk':
|
|
||||||
return { [param]: value };
|
|
||||||
case 'search':
|
|
||||||
return { or: [{ code: { like: `%${value}%` } }, { id: value }] };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<template>
|
<template>
|
||||||
<VnSearchbar
|
<VnSearchbar
|
||||||
|
|
Loading…
Reference in New Issue