._.
This commit is contained in:
parent
fc71aa5e84
commit
e19f149df2
@ -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) && (
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
|
||||
.nav-link {
|
||||
text-align: center;
|
||||
width: 8rem !important;
|
||||
width: 8.5rem !important;
|
||||
margin: 0.1rem;
|
||||
border-radius: 0.5rem !important;
|
||||
}
|
||||
|
||||
@ -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>
|
||||
</>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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}
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user