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

View File

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

View File

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

View File

@@ -43,7 +43,7 @@
watch(selectedState, () => { watch(selectedState, () => {
if(selectedState.value != null){ if(selectedState.value != null){
setFilterUnlimited() setFilterUnlimited()
filterQuery.value.state = "state[$in][]="+ selectedState.value.state_name; filterQuery.value.state = "available_in[$regex]="+ selectedState.value.state_name;
getVehiclesPublished(filterQuery.value); getVehiclesPublished(filterQuery.value);
} }
}); });
@@ -51,7 +51,7 @@
watch(selectedCities, () => { watch(selectedCities, () => {
if(selectedCities.value != null){ if(selectedCities.value != null){
setFilterUnlimited() setFilterUnlimited()
filterQuery.value.city = "city[$regex]="+ selectedCities.value.city_name; filterQuery.value.city = "available_in[$regex]="+ selectedCities.value.city_name;
getVehiclesPublished(filterQuery.value); getVehiclesPublished(filterQuery.value);
} }
}); });
@@ -149,6 +149,8 @@
filterQuery.value.limit = "elements="+ 100; 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> </script>
<template> <template>

View File

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