fix: drivers list & remove drive asign

This commit is contained in:
Alexandro Uc Santos
2025-07-21 20:47:00 -06:00
parent f7b55800a2
commit 8acd62b847
5 changed files with 35 additions and 24 deletions

View File

@@ -386,6 +386,7 @@ const en = {
segments: 'Transportation segment',
destinationState: 'Destination state',
destinationCity: 'Destination city',
unassigned: 'Unassigned',
titleDel: 'Delete vehicle',
textDel: 'Are you sure to delete this vehicle?',
@@ -398,6 +399,7 @@ const en = {
assignedDriver: 'Assigned driver',
selectDriver: 'Select driver',
msgAssigedDriver: 'Driver assigned successfully!',
msgRomveDriver: 'Driver successfully removed from vehicle!',
changeStatus: 'Change vehicle status',
statusVehicle: 'Vehicle status',

View File

@@ -393,6 +393,7 @@ const es = {
segments: 'Segmento del transporte',
destinationState: 'Estado de destino',
destinationCity: 'Ciudad de destino',
unassigned: 'Sin asignar',
titleDel: 'Eliminar vehiculo',
textDel: '¿Estás seguro de eliminar este vehiculo?',
@@ -405,6 +406,7 @@ const es = {
assignedDriver: 'Conductor asignado',
selectDriver: 'Seleccionar conductor',
msgAssigedDriver: 'Conductor asignado con éxito!',
msgRomveDriver: 'Conductor removido del vehiculo con éxito!',
changeStatus: 'Cambiar status vehiculo',
statusVehicle: 'Estado del vehiculo',

View File

@@ -90,22 +90,22 @@ export const useCompanyStore = defineStore('company', () => {
const updateUserCompany = async(id, formData, localData) => {
const data = await updateUser(id, formData);
if(data) {
const index = users.value.findIndex((user) => user._id === id);
const index = users.value.findIndex((user) => user._id === id); /// Actualizamos la lista de usuarios globales
if(index !== -1) {
users.value[index] = {
...users.value[index],
...data,
...localData
};
if(data.job_role === 'driver' && drivers.value.length > 0) { // Actualizamos en la lista drivers
const indexd = drivers.value.findIndex((user) => user._id === id);
if(indexd !== -1) {
drivers.value[indexd] = {
...drivers.value[index],
...data,
...localData
};
}
}
if(data.job_role === 'driver' && drivers.value.length > 0) { // Actualizamos en la lista drivers
const index = drivers.value.findIndex((user) => user._id === id);
if(index !== -1) {
drivers.value[index] = {
...drivers.value[index],
...data,
...localData
};
}
}
return 'success';

View File

@@ -43,7 +43,7 @@
watch(selectedState, () => {
if(selectedState.value != null){
setFilterUnlimited()
filterQuery.value.state = "state[$in][]="+ selectedState.value.state_name;
filterQuery.value.state = "available_in[$regex]="+ selectedState.value.state_name;
getVehiclesPublished(filterQuery.value);
}
});
@@ -51,7 +51,7 @@
watch(selectedCities, () => {
if(selectedCities.value != null){
setFilterUnlimited()
filterQuery.value.city = "city[$regex]="+ selectedCities.value.city_name;
filterQuery.value.city = "available_in[$regex]="+ selectedCities.value.city_name;
getVehiclesPublished(filterQuery.value);
}
});
@@ -149,6 +149,8 @@
filterQuery.value.limit = "elements="+ 100;
}
// Importante: comprueba que el nuevo vehículo esté disponible y libre de cargas activas para garantizar una logística sin contratiempos.
</script>
<template>
@@ -221,4 +223,4 @@
padding: 20px 16px;
}
}
</style>
</style>

View File

@@ -24,14 +24,15 @@
const drivers = ref([]);
const error = ref(null)
const loading = ref(false);
const currentDriver = ref(null);
onMounted(() => {
drivers.value = companyStore.drivers;
drivers.value = companyStore.drivers.filter((e) => (e.vehicle === undefined || e.vehicle === null))
if(props?.vehicle?.driver) {
const index = drivers.value.findIndex((d) => d._id === props.vehicle.driver?._id);
driverSelected.value = drivers.value[index];
} else {
drivers.value = companyStore.drivers.filter((e) => !e.vehicle)
const index = companyStore.drivers.findIndex((d) => d._id === props.vehicle.driver?._id);
driverSelected.value = companyStore.drivers[index];
currentDriver.value = driverSelected.value;
drivers.value.push(driverSelected.value)
}
});
@@ -42,13 +43,15 @@
}
let vehicle_id = props.vehicle._id;
let driver_id = driverSelected.value._id;
let driver_id = driverSelected.value === 'remove'
? currentDriver.value._id
: driverSelected.value._id;
let vehicleData ={
driver : driverSelected.value
driver : driverSelected.value === 'remove' ? null : driverSelected.value
}
let localData ={
driver : driverSelected.value,
driver : driverSelected.value === 'remove' ? null : driverSelected.value,
categories: props.vehicle.categories
}
loading.value = true;
@@ -57,7 +60,7 @@
if( result === 'success' ) {
//Actualizamos el vehiculo
let userData = {
vehicle : vehicle_id
vehicle : driverSelected.value === 'remove' ? null : vehicle_id
}
let localUser = {
@@ -68,7 +71,7 @@
if(result2 === 'success' ){
document.getElementById('btnCloseeditDriverVehicle').click();
Swal.fire({
title: `<strong>${t('vehicles.msgAssigedDriver')}</strong>`,
title: `<strong>${driverSelected.value === 'remove' ? t('vehicles.msgRomveDriver') : t('vehicles.msgAssigedDriver')}</strong>`,
icon: 'success'
});
} else {
@@ -117,6 +120,8 @@
v-model="driverSelected"
>
<option disabled value="">-- {{ t('vehicles.selectDriver') }} --</option>
<option v-if="driverSelected !== null"
value="remove">{{ t('vehicles.unassigned') }}</option>
<option v-for="driver in drivers" :value="driver">{{driver.first_name}} {{ driver.last_name }}</option>
</select>
<span class="error-msg mt-2" v-if="error">{{ error }}</span>