/
azarayaos
/
OrderHub
Обзор
Документация
Войти
/
azarayaos
/
OrderHub
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
OrderHub.Web/Components/Pages/CreateOrder.razor
134 строки
4 KB
Azaray AOS
Создания начального проекта с базовым функицоналом
29 июн 2026, 22:47
29 июн 2026, 22:47
213f989
Код
Авторство
О чём код?
@page "/orders/create" @rendermode InteractiveServer @using OrderHub.Core.DTOs @inject OrderApiClient ApiClient @inject NavigationManager Navigation <PageTitle>Создание заказа</PageTitle> <h1>Создание нового заказа</h1> @if (!string.IsNullOrEmpty(errorMessage)) { <div class="alert alert-danger">@errorMessage</div> } @if (!string.IsNullOrEmpty(successMessage)) { <div class="alert alert-success">@successMessage</div> } <EditForm Model="request" OnValidSubmit="CreateOrderAsync" FormName="createOrderForm"> <DataAnnotationsValidator /> <ValidationSummary /> <div class="mb-3"> <label class="form-label">Название заказа</label> <InputText @bind-Value="request.Name" class="form-control" /> <ValidationMessage For="() => request.Name" /> </div> <h4>Позиции заказа</h4> @foreach (var (item, index) in items.Select((value, i) => (value, i))) { <div class="card mb-2"> <div class="card-body"> <div class="row"> <div class="col-md-5"> <label class="form-label">Название товара</label> <InputText @bind-Value="item.ProductName" class="form-control" /> </div> <div class="col-md-3"> <label class="form-label">Количество</label> <InputNumber @bind-Value="item.Quantity" class="form-control" /> </div> <div class="col-md-3"> <label class="form-label">Цена за единицу</label> <div class="input-group"> <InputNumber @bind-Value="item.UnitPrice" class="form-control" /> <span class="input-group-text">₽</span> </div> </div> <div class="col-md-1 d-flex align-items-end"> <button type="button" class="btn btn-danger btn-sm" @onclick="() => RemoveItem(index)" disabled="@(items.Count <= 1)"> × </button> </div> </div> </div> </div> } <button type="button" class="btn btn-secondary mb-3" @onclick="AddItem"> + Добавить позицию </button> <div class="mt-3"> <button type="submit" class="btn btn-primary" disabled="@isSubmitting"> @(isSubmitting ? "Создание..." : "Создать заказ") </button> <a href="/orders" class="btn btn-link">Отмена</a> </div> </EditForm> @code { private CreateOrderRequest request = new() { Items = new List<OrderItemDto> { new() { ProductName = "", Quantity = 1, UnitPrice = 0 } } }; private List<OrderItemDto> items => request.Items; private bool isSubmitting; private string? errorMessage; private string? successMessage; private void AddItem() { items.Add(new OrderItemDto { ProductName = "", Quantity = 1, UnitPrice = 0 }); } private void RemoveItem(int index) { if (items.Count > 1) { items.RemoveAt(index); } } private async Task CreateOrderAsync() { isSubmitting = true; errorMessage = null; successMessage = null; try { var result = await ApiClient.CreateOrderAsync(request); if (result is not null) { successMessage = $"Заказ \"{result.Name}\" создан успешно! ID: {result.Id}"; request = new CreateOrderRequest { Items = new List<OrderItemDto> { new() { ProductName = "", Quantity = 1, UnitPrice = 0 } } }; Navigation.NavigateTo("/orders"); } } catch (Exception ex) { errorMessage = $"Ошибка при создании заказа: {ex.Message}"; } finally { isSubmitting = false; } } }