| | | 1 | | @model OzonOrdersWeb.Areas.Studio2.ViewModels.TransactionJobs.BackgroundJobExecutionDetailsViewModel |
| | | 2 | | @{ |
| | 0 | 3 | | ViewData["Title"] = "Детали выполнения"; |
| | 0 | 4 | | var grid = Model.Grid; |
| | 0 | 5 | | var jsonOptions = new System.Text.Json.JsonSerializerOptions(System.Text.Json.JsonSerializerDefaults.Web); |
| | | 6 | | } |
| | | 7 | | |
| | 0 | 8 | | @await Html.PartialAsync("_BsxGridShell") |
| | | 9 | | <link rel="stylesheet" href="~/css/Studio2/TransactionJobs/execution-details.css" asp-append-version="true"/> |
| | | 10 | | |
| | | 11 | | <div class="container-fluid mt-3 txj-details bsx-surface"> |
| | | 12 | | <div class="app-section-hero app-section-hero--import d-flex flex-wrap justify-content-between align-items-start gap |
| | | 13 | | <div> |
| | | 14 | | <h1><i class="fas fa-info-circle me-2 text-primary"></i>Детали выполнения</h1> |
| | 0 | 15 | | <div class="subtitle">ID выполнения: @Model.Execution.Id</div> |
| | | 16 | | <div class="app-section-hero__quick-links"> |
| | | 17 | | <a href="@Url.Action("Index", "JobLogs", new { area = "Studio2", tab = "transactions" })"><i class="fas |
| | | 18 | | <a href="@Url.Action("ExecutionOrders", "TransactionJobs", new { area = "Studio2", id = Model.Execution. |
| | | 19 | | </div> |
| | | 20 | | </div> |
| | | 21 | | <div class="bsx-dir-stats"> |
| | 0 | 22 | | <span class="bsx-dir-stat">Всего заказов <b>@grid.Summary.TotalOrders</b></span> |
| | 0 | 23 | | <span class="bsx-dir-stat">Совпадений <b>@grid.Summary.MatchedOrders</b></span> |
| | 0 | 24 | | <span class="bsx-dir-stat">Обработано <b>@grid.Summary.ProcessedOrders</b></span> |
| | 0 | 25 | | <span class="bsx-dir-stat">Успешно <b>@grid.Summary.SuccessfulOrders</b></span> |
| | 0 | 26 | | <span class="bsx-dir-stat @(grid.Summary.FailedOrders > 0 ? "bsx-dir-stat--warn" : "")">Ошибки <b>@grid.Summ |
| | | 27 | | </div> |
| | | 28 | | </div> |
| | | 29 | | |
| | | 30 | | <div class="bsx-dir-card"> |
| | | 31 | | <div class="bsx-grid-toolbar"> |
| | | 32 | | <span class="bsx-dir-title"><i class="fas fa-clipboard-list"></i>Сводка</span> |
| | | 33 | | </div> |
| | | 34 | | <div class="bsx-dir-body"> |
| | | 35 | | <div id="txjSummaryGrid" class="bsx-grid bsx-grid--auto"></div> |
| | 0 | 36 | | @if (!string.IsNullOrWhiteSpace(grid.Summary.Error)) |
| | | 37 | | { |
| | | 38 | | <div class="txj-error mt-2"> |
| | | 39 | | <strong>Ошибка:</strong> |
| | 0 | 40 | | <pre class="bsx-code mb-0 mt-1">@grid.Summary.Error</pre> |
| | | 41 | | </div> |
| | | 42 | | } |
| | | 43 | | </div> |
| | | 44 | | </div> |
| | | 45 | | |
| | | 46 | | <div class="bsx-dir-card"> |
| | | 47 | | <div class="bsx-grid-toolbar"> |
| | | 48 | | <span class="bsx-dir-title"><i class="fas fa-stream"></i>Этапы выполнения</span> |
| | | 49 | | <div class="bsx-grid-search bsx-grid-search--wide"> |
| | | 50 | | <i class="fas fa-search"></i> |
| | | 51 | | <input type="search" id="txjStepsSearch" placeholder="Поиск по этапам…" autocomplete="off" title="Ctrl+F |
| | | 52 | | </div> |
| | | 53 | | <div class="bsx-grid-toolbar-end"> |
| | | 54 | | <span class="bsx-grid-count" id="txjStepsCount"></span> |
| | | 55 | | <button type="button" class="btn btn-sm btn-outline-secondary" id="txjStepsColumnsBtn" title="Столбцы">< |
| | | 56 | | </div> |
| | | 57 | | </div> |
| | | 58 | | <div class="bsx-dir-body"> |
| | | 59 | | <div class="bsx-chips" id="txjStepsChips" hidden></div> |
| | | 60 | | <div id="txjStepsGrid" class="bsx-grid bsx-grid--section"></div> |
| | | 61 | | </div> |
| | | 62 | | </div> |
| | | 63 | | |
| | | 64 | | <div class="bsx-dir-card"> |
| | | 65 | | <div class="bsx-grid-toolbar"> |
| | | 66 | | <span class="bsx-dir-title"><i class="fas fa-file-download"></i>Загрузки отчётов</span> |
| | | 67 | | <div class="bsx-grid-search bsx-grid-search--wide"> |
| | | 68 | | <i class="fas fa-search"></i> |
| | | 69 | | <input type="search" id="txjLoadsSearch" placeholder="Поиск по загрузкам…" autocomplete="off" title="Ctr |
| | | 70 | | </div> |
| | | 71 | | <div class="bsx-grid-toolbar-end"> |
| | | 72 | | <span class="bsx-grid-count" id="txjLoadsCount"></span> |
| | | 73 | | <button type="button" class="btn btn-sm btn-outline-secondary" id="txjLoadsColumnsBtn" title="Столбцы">< |
| | | 74 | | </div> |
| | | 75 | | </div> |
| | | 76 | | <div class="bsx-dir-body"> |
| | | 77 | | <div class="bsx-chips" id="txjLoadsChips" hidden></div> |
| | | 78 | | <div id="txjLoadsGrid" class="bsx-grid bsx-grid--section"></div> |
| | | 79 | | </div> |
| | | 80 | | </div> |
| | | 81 | | |
| | | 82 | | <div class="bsx-dir-card"> |
| | | 83 | | <div class="bsx-grid-toolbar"> |
| | | 84 | | <span class="bsx-dir-title"><i class="fas fa-receipt"></i>Результаты проведения</span> |
| | 0 | 85 | | @if (grid.DraftCount > 0) |
| | | 86 | | { |
| | | 87 | | <span class="bsx-tone bsx-tone--warning" title="Документы записаны в 1С, но не проведены"> |
| | 0 | 88 | | <i class="fas fa-exclamation-triangle"></i>Черновиков в 1С: @grid.DraftCount |
| | | 89 | | </span> |
| | | 90 | | } |
| | | 91 | | <div class="bsx-grid-search bsx-grid-search--wide"> |
| | | 92 | | <i class="fas fa-search"></i> |
| | | 93 | | <input type="search" id="txjResultsSearch" placeholder="Поиск по результатам…" autocomplete="off" title= |
| | | 94 | | </div> |
| | | 95 | | <div class="bsx-grid-toolbar-end"> |
| | | 96 | | <span class="bsx-grid-count" id="txjResultsCount"></span> |
| | | 97 | | <button type="button" class="btn btn-sm btn-outline-secondary" id="txjResultsColumnsBtn" title="Столбцы" |
| | | 98 | | </div> |
| | | 99 | | </div> |
| | | 100 | | <div class="bsx-dir-body"> |
| | 0 | 101 | | @if (grid.DraftCount > 0) |
| | | 102 | | { |
| | | 103 | | <div class="bsx-dir-note"> |
| | | 104 | | <i class="fas fa-exclamation-triangle"></i> |
| | | 105 | | <div> |
| | 0 | 106 | | <strong>Внимание: @grid.DraftCount @(grid.DraftCount == 1 ? "документ сохранён" : "документов со |
| | | 107 | | В 1С не списались/не оприходовались остатки. Причина отказа проведения указана в колонке «Ошибка |
| | | 108 | | </div> |
| | | 109 | | </div> |
| | | 110 | | } |
| | | 111 | | <div class="bsx-chips" id="txjResultsChips" hidden></div> |
| | | 112 | | <div id="txjResultsGrid" class="bsx-grid bsx-grid--page"></div> |
| | | 113 | | </div> |
| | | 114 | | </div> |
| | | 115 | | </div> |
| | | 116 | | |
| | | 117 | | <div class="modal fade" id="txjJsonModal" tabindex="-1" aria-hidden="true"> |
| | | 118 | | <div class="modal-dialog modal-lg modal-dialog-scrollable"> |
| | | 119 | | <div class="modal-content"> |
| | | 120 | | <div class="modal-header"> |
| | | 121 | | <h5 class="modal-title" id="txjJsonTitle">JSON</h5> |
| | | 122 | | <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button> |
| | | 123 | | </div> |
| | | 124 | | <div class="modal-body"><pre class="bsx-code txj-json mb-0" id="txjJsonBody"></pre></div> |
| | | 125 | | </div> |
| | | 126 | | </div> |
| | | 127 | | </div> |
| | | 128 | | |
| | | 129 | | @section Scripts { |
| | | 130 | | <script> |
| | 0 | 131 | | window.txjDetails = @Html.Raw(System.Text.Json.JsonSerializer.Serialize(grid, jsonOptions)); |
| | | 132 | | </script> |
| | | 133 | | <script src="~/js/Studio2/Grid/bsx-directory.js" asp-append-version="true"></script> |
| | | 134 | | <script src="~/js/Studio2/TransactionJobs/execution-details-grids.js" asp-append-version="true"></script> |
| | | 135 | | } |