You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

151 lines
5.7 KiB

import React, { useState } from 'react';
import { Modal, Form, Button } from 'react-bootstrap';
const NewMaintenanceForm = ({ show, handleClose, onSubmit, vehicles }) => {
const [formData, setFormData] = useState({
vehicle_id: '',
maintenance_type: '',
date: '',
description: '',
cost: '',
status: 'Pendiente',
next_maintenance_date: ''
});
const handleChange = (e) => {
const { name, value } = e.target;
setFormData(prev => ({
...prev,
[name]: value
}));
};
const handleSubmit = (e) => {
e.preventDefault();
onSubmit(formData);
// Resetear el formulario
setFormData({
vehicle_id: '',
maintenance_type: '',
date: '',
description: '',
cost: '',
status: 'Pendiente',
next_maintenance_date: ''
});
};
return (
<Modal show={show} onHide={handleClose}>
<Modal.Header closeButton>
<Modal.Title>Nuevo Registro de Mantenimiento</Modal.Title>
</Modal.Header>
<Modal.Body>
<Form onSubmit={handleSubmit}>
<Form.Group className="mb-3">
<Form.Label>Vehículo</Form.Label>
<Form.Select
name="vehicle_id"
value={formData.vehicle_id}
onChange={handleChange}
required
>
<option value="">Seleccione un vehículo</option>
{vehicles.map(vehicle => (
<option key={vehicle.id} value={vehicle.id}>
{vehicle.plate} - {vehicle.model}
</option>
))}
</Form.Select>
</Form.Group>
<Form.Group className="mb-3">
<Form.Label>Tipo de Mantenimiento</Form.Label>
<Form.Select
name="maintenance_type"
value={formData.maintenance_type}
onChange={handleChange}
required
>
<option value="">Seleccione un tipo</option>
<option value="Preventivo">Preventivo</option>
<option value="Correctivo">Correctivo</option>
<option value="Cambio de Aceite">Cambio de Aceite</option>
<option value="Revisión General">Revisión General</option>
</Form.Select>
</Form.Group>
<Form.Group className="mb-3">
<Form.Label>Fecha</Form.Label>
<Form.Control
type="date"
name="date"
value={formData.date}
onChange={handleChange}
required
/>
</Form.Group>
<Form.Group className="mb-3">
<Form.Label>Descripción</Form.Label>
<Form.Control
as="textarea"
rows={3}
name="description"
value={formData.description}
onChange={handleChange}
required
/>
</Form.Group>
<Form.Group className="mb-3">
<Form.Label>Costo</Form.Label>
<Form.Control
type="number"
step="0.01"
name="cost"
value={formData.cost}
onChange={handleChange}
required
/>
</Form.Group>
<Form.Group className="mb-3">
<Form.Label>Estado</Form.Label>
<Form.Select
name="status"
value={formData.status}
onChange={handleChange}
required
>
<option value="Pendiente">Pendiente</option>
<option value="En Proceso">En Proceso</option>
<option value="Completado">Completado</option>
</Form.Select>
</Form.Group>
<Form.Group className="mb-3">
<Form.Label>Próxima Fecha de Mantenimiento</Form.Label>
<Form.Control
type="date"
name="next_maintenance_date"
value={formData.next_maintenance_date}
onChange={handleChange}
/>
</Form.Group>
<div className="d-flex justify-content-end gap-2">
<Button variant="secondary" onClick={handleClose}>
Cancelar
</Button>
<Button variant="primary" type="submit">
Guardar
</Button>
</div>
</Form>
</Modal.Body>
</Modal>
);
};
export default NewMaintenanceForm;