This commit is contained in:
Андрей Дувакин 2024-10-07 23:12:34 +05:00
parent fc71aa5e84
commit e19f149df2
7 changed files with 56 additions and 55 deletions

View File

@ -41,7 +41,7 @@ const DeliveryOrdersList = ({
const calculateRoutes = async () => {
const ordersToCalculate = deliveryOrders.filter(
(order) => !order.estimated_route_time_in_minutes || !order.route
(order) => !order.estimated_route_time_in_minutes
);
setCalculatingRoutes(ordersToCalculate.map((order) => order.id));
@ -73,6 +73,10 @@ const DeliveryOrdersList = ({
fetchDeliveryOrders();
};
const ordersToCalculate = deliveryOrders.filter(
(order) => !order.estimated_route_time_in_minutes
);
return (
<div>
{loadingDeliveryOrders ? (
@ -81,7 +85,7 @@ const DeliveryOrdersList = ({
</div>
) : (
<>
{calculatingRoutes.length && (
{ordersToCalculate.length > 0 && (
<button onClick={calculateRoutes} className="btn btn-primary mb-3">
Рассчитать все
</button>
@ -93,9 +97,9 @@ const DeliveryOrdersList = ({
onClick={() => onSubOrderClick(order.id)}
>
<div className="card-body">
<p>Подзаказ #{index + 1}</p>
<p>Этап {index + 1}</p>
<p>
Время на подзаказ:{" "}
Расчетная длительность этапа:{" "}
{formatTimeInHours(order.estimated_route_time_in_minutes)}
</p>
{calculatingRoutes.includes(order.id) && (

View File

@ -4,7 +4,7 @@
.nav-link {
text-align: center;
width: 8rem !important;
width: 8.5rem !important;
margin: 0.1rem;
border-radius: 0.5rem !important;
}

View File

@ -56,17 +56,7 @@ const Header = () => {
}
to="/accessories"
>
Компоненты
</NavLink>
</li>
<li className="nav-item">
<NavLink
className={({ isActive }) =>
isActive ? "nav-link active" : "nav-link"
}
to="/users"
>
Пользователи
Комплектующие
</NavLink>
</li>
<li className="nav-item">
@ -79,6 +69,16 @@ const Header = () => {
Города
</NavLink>
</li>
<li className="nav-item">
<NavLink
className={({ isActive }) =>
isActive ? "nav-link active" : "nav-link"
}
to="/federal_districts"
>
Федеральные округа
</NavLink>
</li>
<li className="nav-item">
<NavLink
className={({ isActive }) =>
@ -86,7 +86,7 @@ const Header = () => {
}
to="/trucks"
>
Грузовики
Транспортные средства
</NavLink>
</li>
<li className="nav-item">
@ -104,19 +104,9 @@ const Header = () => {
className={({ isActive }) =>
isActive ? "nav-link active" : "nav-link"
}
to="/federal_districts"
to="/users"
>
Федеральные округа
</NavLink>
</li>
<li className="nav-item">
<NavLink
className={({ isActive }) =>
isActive ? "nav-link active" : "nav-link"
}
to="/roles"
>
Роли
Пользователи
</NavLink>
</li>
</>

View File

@ -38,7 +38,7 @@ const Accessories = () => {
if (error.response && error.response.status === 401) {
navigate("/login");
}
console.error("Ошибка при загрузке аксессуаров:", error);
console.error("Ошибка при загрузке комплектующих:", error);
}
};
@ -83,7 +83,7 @@ const Accessories = () => {
fetchAccessories();
resetForm();
} catch (error) {
console.error("Ошибка при добавлении или обновлении аксессуара:", error);
console.error("Ошибка при добавлении или обновлении комплектующих:", error);
}
};
@ -105,7 +105,7 @@ const Accessories = () => {
await deleteAccessory(accessoryId);
fetchAccessories();
} catch (error) {
console.error("Ошибка при удалении аксессуара:", error);
console.error("Ошибка при удалении комплктубщего:", error);
}
};
@ -136,16 +136,16 @@ const Accessories = () => {
return (
<div className="container mt-4">
<h3>Аксессуары</h3>
<h3>Комплектующие</h3>
<form onSubmit={handleSubmit}>
<div className="form-group">
<label htmlFor="accessoryName">Название аксессуара</label>
<label htmlFor="accessoryName">Название комплектующего</label>
<input
type="text"
className="form-control"
id="accessoryName"
name="name"
placeholder="Введите название аксессуара"
placeholder="Введите название комплектующего"
value={newAccessory.name}
onChange={handleInputChange}
/>
@ -239,7 +239,7 @@ const Accessories = () => {
</div>
)}
</form>
<h3 className="mt-5">Список аксессуаров</h3>
<h3 className="mt-5">Список комплектующих</h3>
<table className="table table-bordered">
<thead>
<tr>

View File

@ -118,7 +118,7 @@ const DeliveryOrderDetails = () => {
</div>
) : (
<div className="content-container">
<h2>Общая стоимость подзаказа: {totalCost} руб.</h2>
<h2>Общая стоимость этапа: {totalCost} руб.</h2>
<h3>Тип машины: {truckName}</h3>
<h3>Количество машин: {truckCount}</h3>
<ol className="city-list">

View File

@ -105,10 +105,16 @@ const Home = () => {
totalOrders.map((order) => (
<div key={order.id} className="card mb-2">
<div
className="card-header"
className="card-header d-flex justify-content-between"
onClick={() => handleToggleAccordion(order.id)}
>
<span>
Заказ от {new Date(order.order_datetime).toLocaleString()}
</span>
<span>
<strong>Создатель:</strong>{" "}
{order.user_login || "Неизвестный пользователь"}
</span>
</div>
{expandedOrderId === order.id && (
@ -121,13 +127,9 @@ const Home = () => {
<strong>Количество роботов:</strong> {order.count_robots}
</p>
<p>
<strong>Количество подзаказов:</strong>{" "}
<strong>Количество этапов:</strong>{" "}
{deliveryOrdersCount || 0}
</p>
<p>
<strong>Создатель:</strong>{" "}
{order.user_login || "Неизвестный пользователь"}
</p>
<DeliveryOrdersList
totalOrderId={order.id}

View File

@ -26,7 +26,7 @@ const Trucks = () => {
if (error.response && error.response.status === 401) {
navigate("/login");
}
console.error("Ошибка при загрузке грузовиков:", error);
console.error("Ошибка при загрузке транспортных средств:", error);
}
};
@ -52,7 +52,10 @@ const Trucks = () => {
fetchTrucks();
resetForm();
} catch (error) {
console.error("Ошибка при добавлении или обновлении грузовика:", error);
console.error(
"Ошибка при добавлении или обновлении транспортного средства:",
error
);
}
};
@ -70,7 +73,7 @@ const Trucks = () => {
await deleteTruck(truckId);
fetchTrucks();
} catch (error) {
console.error("Ошибка при удалении грузовика:", error);
console.error("Ошибка при удалении транспортного средства:", error);
}
};
@ -89,42 +92,44 @@ const Trucks = () => {
return (
<div className="container mt-4">
<h3>Грузовики</h3>
<h3>Транспортные средства</h3>
<form onSubmit={handleSubmit}>
<div className="form-group">
<label htmlFor="truckName">Название грузовика</label>
<label htmlFor="truckName">Название транспортного средства</label>
<input
type="text"
className="form-control"
id="truckName"
name="name"
placeholder="Введите название грузовика"
placeholder="Введите название транвсопртного средства"
value={newTruck.name}
onChange={handleInputChange}
/>
</div>
<div className="form-group">
<label htmlFor="truckCapacity">Грузоподъемность (тонны)</label>
<label htmlFor="truckCapacity">Грузоподъемность, тонны</label>
<input
type="number"
className="form-control"
id="truckCapacity"
name="capacity"
placeholder="Введите грузоподъемность"
placeholder="Введите грузоподъемность в тоннах"
value={newTruck.capacity}
onChange={handleInputChange}
min={1}
/>
</div>
<div className="form-group mb-3">
<label htmlFor="truckVolume">Объем (кубометры)</label>
<label htmlFor="truckVolume">Объем, кубометры</label>
<input
type="number"
className="form-control"
id="truckVolume"
name="volume"
placeholder="Введите объем"
placeholder="Введите объем в кубических метрах"
value={newTruck.volume}
onChange={handleInputChange}
min={1}
/>
</div>
@ -146,7 +151,7 @@ const Trucks = () => {
</div>
)}
</form>
<h3 className="mt-5">Список грузовиков</h3>
<h3 className="mt-5">Список транспортных средств</h3>
<table className="table table-bordered">
<thead>
<tr>