feat: refs #7119 add fuel and supplier-related fields
gitea/salix-front/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Jorge Penadés 2024-12-27 15:36:32 +01:00
parent 062c306cf4
commit be946a4f8b
8 changed files with 197 additions and 24 deletions

View File

@ -353,6 +353,7 @@ globals:
raid: 'Raid {daysInForward} days' raid: 'Raid {daysInForward} days'
isVies: Vies isVies: Vies
model: Model model: Model
fuel: Fuel
errors: errors:
statusUnauthorized: Access denied statusUnauthorized: Access denied
statusInternalServerError: An internal server error has ocurred statusInternalServerError: An internal server error has ocurred

View File

@ -355,6 +355,7 @@ globals:
raid: 'Redada {daysInForward} días' raid: 'Redada {daysInForward} días'
isVies: Vies isVies: Vies
model: Modelo model: Modelo
fuel: Combustible
errors: errors:
statusUnauthorized: Acceso denegado statusUnauthorized: Acceso denegado
statusInternalServerError: Ha ocurrido un error interno del servidor statusInternalServerError: Ha ocurrido un error interno del servidor

View File

@ -5,10 +5,13 @@ import FetchData from 'src/components/FetchData.vue';
import VnSelect from 'src/components/common/VnSelect.vue'; import VnSelect from 'src/components/common/VnSelect.vue';
import VnRow from 'components/ui/VnRow.vue'; import VnRow from 'components/ui/VnRow.vue';
import VnInput from 'src/components/common/VnInput.vue'; import VnInput from 'src/components/common/VnInput.vue';
import VnInputNumber from 'src/components/common/VnInputNumber.vue';
const warehouses = ref([]); const warehouses = ref([]);
const companies = ref([]); const companies = ref([]);
const countries = ref([]); const countries = ref([]);
const fuelTypes = ref([]);
const bankPolicies = ref([]);
</script> </script>
<template> <template>
<FetchData <FetchData
@ -29,41 +32,96 @@ const countries = ref([]);
@on-fetch="(data) => (countries = data)" @on-fetch="(data) => (countries = data)"
auto-load auto-load
/> />
<FormModel <FetchData
model="Vehicle" url="FuelTypes"
:url-update="`Vehicles/${$route.params.id}`" :filter="{ fields: ['id', 'name'] }"
v-if="isLoaded" @on-fetch="(data) => (fuelTypes = data)"
> auto-load
/>
<FormModel model="Vehicle" :url-update="`Vehicles/${$route.params.id}`">
<template #form="{ data }"> <template #form="{ data }">
<VnRow> <VnRow>
<VnInput v-model="data.numberPlate" :label="$t('vehicle.numberPlate')" /> <VnInput v-model="data.numberPlate" :label="$t('vehicle.numberPlate')" />
<VnInput v-model="data.description" :label="$t('globals.description')" /> <VnInput v-model="data.description" :label="$t('globals.description')" />
</VnRow> </VnRow>
<VnRow> <VnRow>
<VnInput v-model="data.tradeMark" :label="$t('vehicle.tradeMark')" /> <VnInput
v-model="data.tradeMark"
:label="$t('vehicle.tradeMark')"
:required="true"
/>
<VnSelect
v-model="data.fuelTypeFk"
:label="$t('globals.fuel')"
:options="fuelTypes"
option-label="name"
option-value="id"
/>
</VnRow>
<VnRow>
<VnInput
v-model="data.model"
:label="$t('globals.model')"
:required="true"
/>
<VnInput v-model="data.ppeFk" :label="$t('vehicle.ppe')" />
</VnRow>
<VnRow>
<VnInput v-model="data.chassis" :label="$t('vehicle.chassis')" />
<VnInput v-model="data.vin" :label="$t('vehicle.vin')" />
</VnRow>
<VnRow>
<VnSelect <VnSelect
v-model="data.companyFk" v-model="data.companyFk"
:label="$t('globals.company')" :label="$t('globals.company')"
:options="companies" :options="companies"
option-label="code" option-label="code"
option-value="id"
/> />
</VnRow>
<VnRow>
<VnInput v-model="data.chassis" :label="$t('vehicle.chassis')" />
<VnInput v-model="data.leasing" :label="$t('vehicle.leasing')" />
</VnRow>
<VnRow>
<VnSelect <VnSelect
v-model="data.warehouseFk" v-model="data.warehouseFk"
:label="$t('globals.warehouse')" :label="$t('globals.warehouse')"
:options="warehouses" :options="warehouses"
option-label="name"
option-value="id"
/>
</VnRow>
<VnRow>
<VnSelect
url="Suppliers"
:filter="{ fields: ['id', 'name'] }"
v-model="data.supplierFk"
:label="$t('globals.supplier')"
/> />
<VnSelect <VnSelect
v-model="data.countryFk" url="Suppliers"
:label="$t('globals.country')" :filter="{ fields: ['id', 'name'] }"
v-model="data.supplierCoolerFk"
:label="$t('vehicle.supplierCooler')"
/>
</VnRow>
<VnRow>
<VnSelect
url="BankPolicies"
:filter="{ fields: ['id', 'ref'] }"
v-model="data.bankPolicyFk"
:label="$t('vehicle.leasing')"
:options="bankPolicies"
option-label="ref"
option-value="id"
/>
<VnInput v-model="data.leasing" :label="$t('vehicle.nLeasing')" />
</VnRow>
<VnRow>
<VnSelect
v-model="data.countryCodeFk"
:label="$t('vehicle.countryCode')"
:options="countries" :options="countries"
option-label="code" option-label="code"
option-value="code"
/> />
<VnInputNumber v-model="data.import" :label="$t('globals.amount')" />
</VnRow> </VnRow>
<VnRow> <VnRow>
<span> <span>
@ -72,7 +130,14 @@ const countries = ref([]);
:label="$t('vehicle.isKmTruckRate')" :label="$t('vehicle.isKmTruckRate')"
:false-value="0" :false-value="0"
:true-value="1" :true-value="1"
padding="0" />
</span>
<span>
<QCheckbox
v-model="data.isActive"
:label="$t('vehicle.isActive')"
:false-value="0"
:true-value="1"
/> />
</span> </span>
</VnRow> </VnRow>

View File

@ -2,11 +2,13 @@
import VnCard from 'components/common/VnCard.vue'; import VnCard from 'components/common/VnCard.vue';
import VehicleSearchbar from '../VehicleSearchbar.vue'; import VehicleSearchbar from '../VehicleSearchbar.vue';
import VehicleDescriptor from './VehicleDescriptor.vue'; import VehicleDescriptor from './VehicleDescriptor.vue';
import VehicleFilter from '../VehicleFilter.js';
</script> </script>
<template> <template>
<VnCard <VnCard
data-key="Vehicle" data-key="Vehicle"
base-url="Vehicles" base-url="Vehicles"
:filter="VehicleFilter"
:descriptor="VehicleDescriptor" :descriptor="VehicleDescriptor"
search-data-key="VehicleList" search-data-key="VehicleList"
> >

View File

@ -4,6 +4,8 @@ import { useRoute } from 'vue-router';
import CardSummary from 'components/ui/CardSummary.vue'; import CardSummary from 'components/ui/CardSummary.vue';
import VnLv from 'src/components/ui/VnLv.vue'; import VnLv from 'src/components/ui/VnLv.vue';
import VnTitle from 'src/components/common/VnTitle.vue'; import VnTitle from 'src/components/common/VnTitle.vue';
import SupplierDescriptorProxy from 'src/pages/Supplier/Card/SupplierDescriptorProxy.vue';
import VehicleFilter from '../VehicleFilter.js';
const props = defineProps({ id: { type: [Number, String], default: 0 } }); const props = defineProps({ id: { type: [Number, String], default: 0 } });
@ -12,15 +14,17 @@ const entityId = computed(() => props.id || +route.params.id);
const links = { const links = {
'basic-data': `#/vehicle/${entityId.value}/basic-data`, 'basic-data': `#/vehicle/${entityId.value}/basic-data`,
notes: `#/vehicle/${entityId.value}/notes`, notes: `#/vehicle/${entityId.value}/notes`,
dms: `#/vehicle/${entityId.value}/dms`,
'invoice-in': `#/vehicle/${entityId.value}/invoice-in`,
}; };
</script> </script>
<template> <template>
<CardSummary data-key="Vehicle" :url="`Vehicles/filter?id=${entityId}`"> <CardSummary data-key="Vehicle" :url="`Vehicles/${entityId}`" :filter="VehicleFilter">
<template #header="{ entity }"> <template #header="{ entity }">
<div>{{ entity.id }} - {{ entity.numberPlate }}</div> <div>{{ entity.id }} - {{ entity.numberPlate }}</div>
</template> </template>
<template #body="{ entity }"> <template #body="{ entity }">
<QCard class="vn-two"> <QCard class="vn-one">
<QCardSection class="q-pa-none"> <QCardSection class="q-pa-none">
<VnTitle <VnTitle
:url="links['basic-data']" :url="links['basic-data']"
@ -28,12 +32,27 @@ const links = {
/> />
</QCardSection> </QCardSection>
<VnLv :label="$t('globals.description')" :value="entity.description" /> <VnLv :label="$t('globals.description')" :value="entity.description" />
<VnLv :label="$t('globals.company')" :value="entity.company?.code" />
<VnLv :label="$t('vehicle.tradeMark')" :value="entity.tradeMark" /> <VnLv :label="$t('vehicle.tradeMark')" :value="entity.tradeMark" />
<VnLv :label="$t('vehicle.numberPlate')" :value="entity.numberPlate" /> <VnLv :label="$t('globals.model')" :value="entity.model" />
<VnLv :label="$t('globals.warehouse')" :value="entity.warehouse?.name" /> <VnLv :label="$t('globals.supplier')">
<template #value>
<span class="link">
{{ entity.supplier?.name }}
<SupplierDescriptorProxy :id="entity.supplierFk" />
</span>
</template>
</VnLv>
<VnLv :label="$t('vehicle.supplierCooler')">
<template #value>
<span class="link">
{{ entity.supplierCooler?.name }}
<SupplierDescriptorProxy :id="entity.supplierCoolerFk" />
</span>
</template>
</VnLv>
<VnLv :label="$t('vehicle.vin')" :value="entity.vin" />
</QCard> </QCard>
<QCard class="vn-two"> <QCard class="vn-one">
<QCardSection class="q-pa-none"> <QCardSection class="q-pa-none">
<VnTitle <VnTitle
:url="links['basic-data']" :url="links['basic-data']"
@ -41,13 +60,27 @@ const links = {
/> />
</QCardSection> </QCardSection>
<VnLv :label="$t('vehicle.chassis')" :value="entity.chassis" /> <VnLv :label="$t('vehicle.chassis')" :value="entity.chassis" />
<VnLv :label="$t('vehicle.leasing')" :value="entity.leasing" /> <VnLv :label="$t('globals.fuel')" :value="entity.fuelType?.name" />
<VnLv :label="$t('vehicle.ppe')" :value="entity.ppeFk" />
<VnLv :label="$t('vehicle.nLeasing')" :value="entity.leasing" />
<VnLv :label="$t('vehicle.leasing')" :value="entity.bankPolicy?.ref" />
<VnLv :label="$t('globals.amount')" :value="entity.import" />
</QCard>
<QCard class="vn-one">
<QCardSection class="q-pa-none">
<VnTitle
:url="links['basic-data']"
:text="$t('globals.pageTitles.basicData')"
/>
</QCardSection>
<VnLv :label="$t('globals.warehouse')" :value="entity.warehouse?.name" />
<VnLv :label="$t('globals.company')" :value="entity.company?.code" />
<VnLv :label="$t('vehicle.countryCode')" :value="entity.countryCodeFk" /> <VnLv :label="$t('vehicle.countryCode')" :value="entity.countryCodeFk" />
<VnLv <VnLv
:label="$t('vehicle.isKmTruckRate')" :label="$t('vehicle.isKmTruckRate')"
:value="!!entity.isKmTruckRate" :value="!!entity.isKmTruckRate"
/> />
<VnLv :label="$t('globals.state')" :value="entity.event?.state?.state" /> <VnLv :label="$t('vehicle.isActive')" :value="!!entity.isActive" />
</QCard> </QCard>
</template> </template>
</CardSummary> </CardSummary>

View File

@ -0,0 +1,61 @@
export default {
fields: [
'id',
'description',
'isActive',
'isKmTruckRate',
'warehouseFk',
'companyFk',
'numberPlate',
'chassis',
'supplierFk',
'supplierCoolerFk',
'tradeMark',
'fuelTypeFk',
'import',
'vin',
'model',
'ppeFk',
'countryCodeFk',
'leasing',
'bankPolicyFk',
],
include: [
{
relation: 'warehouse',
scope: {
fields: ['id', 'name'],
},
},
{
relation: 'company',
scope: {
fields: ['id', 'code'],
},
},
{
relation: 'supplier',
scope: {
fields: ['id', 'name'],
},
},
{
relation: 'supplierCooler',
scope: {
fields: ['id', 'name'],
},
},
{
relation: 'fuelType',
scope: {
fields: ['id', 'name'],
},
},
{
relation: 'bankPolicy',
scope: {
fields: ['id', 'ref'],
},
},
],
};

View File

@ -6,6 +6,11 @@ vehicle:
isKmTruckRate: Trailer isKmTruckRate: Trailer
countryCode: Country Code countryCode: Country Code
delete: Delete Vehicle delete: Delete Vehicle
supplierCooler: Supplier Cooler
vin: VIN
ppe: Ppe
isActive: Active
nLeasing: Nº Leasing
searchbar: searchbar:
label: Search Vehicle label: Search Vehicle
info: Search by id or number plate info: Search by id or number plate

View File

@ -2,10 +2,15 @@ vehicle:
tradeMark: Marca tradeMark: Marca
numberPlate: Matrícula numberPlate: Matrícula
chassis: Número de bastidor chassis: Número de bastidor
leasing: Número de leasing leasing: leasing
isKmTruckRate: Trailer isKmTruckRate: Trailer
countryCode: Código de país countryCode: Código de país
delete: Eliminar vehículo delete: Eliminar vehículo
supplierCooler: Proveedor Frío
vin: VIN
ppe: nº Inmovilizado
isActive: Activo
nLeasing: Nº Leasing
searchbar: searchbar:
label: Buscar Vehículo label: Buscar Vehículo
info: Buscar por id o matrícula info: Buscar por id o matrícula