Compare commits
2 Commits
dev
...
7119-vehic
Author | SHA1 | Date |
---|---|---|
Alex Moreno | b86d03f609 | |
Alex Moreno | 022afa3b57 |
|
@ -0,0 +1,52 @@
|
|||
<script setup>
|
||||
import { ref } from 'vue';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import FormModel from 'components/FormModel.vue';
|
||||
import FetchData from 'src/components/FetchData.vue';
|
||||
import VnRow from 'components/ui/VnRow.vue';
|
||||
import VnInput from 'src/components/common/VnInput.vue';
|
||||
import VnSelect from 'src/components/common/VnSelect.vue';
|
||||
|
||||
const { t } = useI18n();
|
||||
const route = useRoute();
|
||||
const routeId = route.params?.id || null;
|
||||
const warehouses = ref([]);
|
||||
</script>
|
||||
<template>
|
||||
<FetchData
|
||||
url="warehouses"
|
||||
sort-by="name"
|
||||
@on-fetch="(data) => (warehouses = data)"
|
||||
auto-load
|
||||
/>
|
||||
<FormModel :url="`Agencies/${routeId}`" model="agency" auto-load>
|
||||
<template #form="{ data }">
|
||||
<VnRow>
|
||||
<VnInput v-model="data.name" :label="t('globals.name')" />
|
||||
</VnRow>
|
||||
<VnRow>
|
||||
<VnSelect
|
||||
v-model="data.warehouseFk"
|
||||
option-value="id"
|
||||
option-label="name"
|
||||
:label="t('globals.warehouse')"
|
||||
:options="warehouses"
|
||||
use-input
|
||||
input-debounce="0"
|
||||
:is-clearable="false"
|
||||
/>
|
||||
</VnRow>
|
||||
<VnRow>
|
||||
<QCheckbox :label="t('agency.isOwn')" v-model="data.isOwn" />
|
||||
</VnRow>
|
||||
<VnRow>
|
||||
<QCheckbox
|
||||
:label="t('agency.isAnyVolumeAllowed')"
|
||||
v-model="data.isAnyVolumeAllowed"
|
||||
/>
|
||||
</VnRow>
|
||||
</template>
|
||||
</FormModel>
|
||||
</template>
|
|
@ -0,0 +1,29 @@
|
|||
<script setup>
|
||||
import VehicleDescriptor from 'pages/Route/Vehicle/Card/VehicleDescriptor.vue';
|
||||
import VnCard from 'components/common/VnCard.vue';
|
||||
|
||||
const exprBuilder = (param, value) => {
|
||||
if (param !== 'search') return;
|
||||
return {
|
||||
or: [
|
||||
{ numberPlate: { like: `%${value}%` } },
|
||||
{ tradeMark: { like: `%${value}%` } },
|
||||
{ model: { like: `%${value}%` } },
|
||||
],
|
||||
};
|
||||
};
|
||||
</script>
|
||||
<template>
|
||||
<VnCard
|
||||
data-key="Vehicle"
|
||||
base-url="Vehicles"
|
||||
:descriptor="VehicleDescriptor"
|
||||
search-data-key="VehicleList"
|
||||
:searchbar-props="{
|
||||
url: 'Vehicles',
|
||||
label: 'vehicle.searchBar.label',
|
||||
info: 'vehicle.searchBar.info',
|
||||
exprBuilder,
|
||||
}"
|
||||
/>
|
||||
</template>
|
|
@ -0,0 +1,35 @@
|
|||
<script setup>
|
||||
import { computed } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { useArrayData } from 'src/composables/useArrayData';
|
||||
import CardDescriptor from 'components/ui/CardDescriptor.vue';
|
||||
import VnLv from 'components/ui/VnLv.vue';
|
||||
|
||||
const props = defineProps({
|
||||
id: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: null,
|
||||
},
|
||||
});
|
||||
|
||||
const { t } = useI18n();
|
||||
const route = useRoute();
|
||||
const entityId = computed(() => props.id || route.params.id);
|
||||
const { store } = useArrayData('Parking');
|
||||
const card = computed(() => store.data);
|
||||
</script>
|
||||
<template>
|
||||
<CardDescriptor
|
||||
module="Agency"
|
||||
data-key="Agency"
|
||||
:url="`Agencies/${entityId}`"
|
||||
:title="card?.name"
|
||||
:subtitle="props.id"
|
||||
>
|
||||
<template #body="{ entity: agency }">
|
||||
<VnLv :label="t('globals.name')" :value="agency.name" />
|
||||
</template>
|
||||
</CardDescriptor>
|
||||
</template>
|
|
@ -0,0 +1,40 @@
|
|||
<script setup>
|
||||
import { computed } from 'vue';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import CardSummary from 'components/ui/CardSummary.vue';
|
||||
import VnLv from 'components/ui/VnLv.vue';
|
||||
import VnTitle from 'src/components/common/VnTitle.vue';
|
||||
|
||||
const $props = defineProps({ id: { type: Number, default: 0 } });
|
||||
const { t } = useI18n();
|
||||
const entityId = computed(() => $props.id || useRoute().params.id);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="q-pa-md">
|
||||
<CardSummary :url="`Agencies/${entityId}`" data-key="Agency">
|
||||
<template #header="{ entity: agency }">{{ agency.name }}</template>
|
||||
<template #body="{ entity: agency }">
|
||||
<QCard class="vn-one">
|
||||
<VnTitle
|
||||
:url="`#/agency/${entityId}/basic-data`"
|
||||
:text="t('globals.pageTitles.basicData')"
|
||||
/>
|
||||
<VnLv :label="t('globals.name')" :value="agency.name" />
|
||||
<QCheckbox
|
||||
:label="t('agency.isOwn')"
|
||||
v-model="agency.isOwn"
|
||||
:disable="true"
|
||||
/>
|
||||
<QCheckbox
|
||||
:label="t('agency.isAnyVolumeAllowed')"
|
||||
v-model="agency.isAnyVolumeAllowed"
|
||||
:disable="true"
|
||||
/>
|
||||
</QCard>
|
||||
</template>
|
||||
</CardSummary>
|
||||
</div>
|
||||
</template>
|
|
@ -0,0 +1,84 @@
|
|||
<script setup>
|
||||
import { computed } from 'vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
|
||||
import VnTable from 'components/VnTable/VnTable.vue';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const exprBuilder = (param, value) => {
|
||||
if (param !== 'search') return;
|
||||
return {
|
||||
or: [
|
||||
{ numberPlate: { like: `%${value}%` } },
|
||||
{ tradeMark: { like: `%${value}%` } },
|
||||
{ model: { like: `%${value}%` } },
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
const columns = computed(() => [
|
||||
{
|
||||
align: 'left',
|
||||
name: 'numberPlate',
|
||||
label: t('vehicle.numberPlate'),
|
||||
isTitle: true,
|
||||
},
|
||||
{
|
||||
align: 'left',
|
||||
name: 'isActive',
|
||||
label: t('vehicle.isActive'),
|
||||
},
|
||||
{
|
||||
align: 'left',
|
||||
name: 'tradeMark',
|
||||
label: t('vehicle.tradeMark'),
|
||||
cardVisible: true,
|
||||
},
|
||||
{
|
||||
align: 'left',
|
||||
name: 'model',
|
||||
label: t('vehicle.model'),
|
||||
cardVisible: true,
|
||||
},
|
||||
{
|
||||
align: 'left',
|
||||
name: 'chassis',
|
||||
label: t('vehicle.chassis'),
|
||||
cardVisible: true,
|
||||
},
|
||||
{
|
||||
align: 'left',
|
||||
name: 'deliveryPointFk',
|
||||
label: t('vehicle.deliveryPoint'),
|
||||
cardVisible: true,
|
||||
format: (row) => row?.deliveryPoint?.name,
|
||||
},
|
||||
]);
|
||||
</script>
|
||||
<template>
|
||||
<VnSearchbar
|
||||
:info="t('You can search by numberPlate')"
|
||||
:label="t('Search vehicle')"
|
||||
data-key="VehicleList"
|
||||
:expr-builder="exprBuilder"
|
||||
/>
|
||||
<VnTable
|
||||
data-key="VehicleList"
|
||||
url="Vehicles"
|
||||
:user-filter="{ include: 'deliveryPoint' }"
|
||||
:order="['tradeMark', 'model', 'numberPlate']"
|
||||
:columns="columns"
|
||||
:right-search="false"
|
||||
:use-model="true"
|
||||
redirect="vehicle"
|
||||
default-mode="card"
|
||||
auto-load
|
||||
/>
|
||||
</template>
|
||||
<i18n>
|
||||
es:
|
||||
Search vehicle: Buscar vehículo
|
||||
You can search by numberPlate: Puedes buscar por matricula
|
||||
</i18n>
|
|
@ -0,0 +1,7 @@
|
|||
vehicle:
|
||||
numberPlate: Number plate
|
||||
isActive: Is active
|
||||
tradeMark: Trade mark
|
||||
model: Model
|
||||
chassis: Chassis
|
||||
deliveryPoint: Delivery point
|
|
@ -0,0 +1,7 @@
|
|||
vehicle:
|
||||
numberPlate: Matrícula
|
||||
isActive: Activo
|
||||
tradeMark: Marca
|
||||
model: Modelo
|
||||
chassis: Número de bastidor
|
||||
deliveryPoint: Punto de reparto
|
|
@ -21,6 +21,7 @@ import Zone from './zone';
|
|||
import Account from './account';
|
||||
import Monitor from './monitor';
|
||||
import MailAlias from './mailAlias';
|
||||
import Vehicle from './vehicle';
|
||||
import Role from './role';
|
||||
|
||||
export default [
|
||||
|
@ -46,6 +47,7 @@ export default [
|
|||
Zone,
|
||||
Account,
|
||||
MailAlias,
|
||||
Vehicle,
|
||||
Monitor,
|
||||
Role,
|
||||
];
|
||||
|
|
|
@ -18,6 +18,7 @@ export default {
|
|||
'RouteRoadmap',
|
||||
'CmrList',
|
||||
'AgencyList',
|
||||
'VehicleList',
|
||||
],
|
||||
card: ['RouteBasicData', 'RouteTickets', 'RouteLog'],
|
||||
},
|
||||
|
@ -83,7 +84,7 @@ export default {
|
|||
component: () => import('src/pages/Route/Cmr/CmrList.vue'),
|
||||
},
|
||||
{
|
||||
path: '/agency',
|
||||
path: 'agency',
|
||||
redirect: { name: 'AgencyList' },
|
||||
children: [
|
||||
{
|
||||
|
@ -98,6 +99,15 @@ export default {
|
|||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'vehicle',
|
||||
name: 'VehicleList',
|
||||
meta: {
|
||||
title: 'vehicleList',
|
||||
icon: 'directions_car',
|
||||
},
|
||||
component: () => import('src/pages/Route/Vehicle/VehicleList.vue'),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
import { RouterView } from 'vue-router';
|
||||
|
||||
export default {
|
||||
path: '/vehicle',
|
||||
name: 'Vehicle',
|
||||
meta: {
|
||||
title: 'vehicle',
|
||||
icon: 'directions_car',
|
||||
moduleName: 'Vehicle',
|
||||
},
|
||||
component: RouterView,
|
||||
redirect: { name: 'VehicleCard' },
|
||||
menus: {
|
||||
main: [],
|
||||
card: ['VehicleBasicData'],
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: '/vehicle/:id',
|
||||
name: 'VehicleCard',
|
||||
component: () => import('src/pages/Route/Vehicle/Card/VehicleCard.vue'),
|
||||
redirect: { name: 'VehicleSummary' },
|
||||
children: [
|
||||
{
|
||||
name: 'VehicleSummary',
|
||||
path: 'summary',
|
||||
meta: {
|
||||
title: 'summary',
|
||||
icon: 'view_list',
|
||||
},
|
||||
component: () =>
|
||||
import('src/pages/Route/Vehicle/Card/VehicleSummary.vue'),
|
||||
},
|
||||
{
|
||||
name: 'VehicleBasicData',
|
||||
path: 'basic-data',
|
||||
meta: {
|
||||
title: 'basicData',
|
||||
icon: 'vn:settings',
|
||||
},
|
||||
component: () =>
|
||||
import('pages/Route/Vehicle/Card/VehicleBasicData.vue'),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
|
@ -22,6 +22,7 @@ import zone from 'src/router/modules/zone';
|
|||
import account from './modules/account';
|
||||
import monitor from 'src/router/modules/monitor';
|
||||
import mailAlias from './modules/mailAlias';
|
||||
import vehicle from './modules/vehicle';
|
||||
|
||||
const routes = [
|
||||
{
|
||||
|
@ -97,6 +98,7 @@ const routes = [
|
|||
account,
|
||||
role,
|
||||
mailAlias,
|
||||
vehicle,
|
||||
{
|
||||
path: '/:catchAll(.*)*',
|
||||
name: 'NotFound',
|
||||
|
|
Loading…
Reference in New Issue