| | | 1 | | @model List<FieldListItemVm> |
| | | 2 | | @{ |
| | 0 | 3 | | var showCreate = (bool)(ViewBag.ShowCreate ?? false); |
| | 0 | 4 | | var json = new System.Text.Json.JsonSerializerOptions(System.Text.Json.JsonSerializerDefaults.Web); |
| | | 5 | | } |
| | | 6 | | |
| | | 7 | | <section class="admin-hero"> |
| | | 8 | | <h1>Колонки заказов</h1> |
| | | 9 | | <p class="subtitle">Управление реестром полей списков и их доступностью.</p> |
| | | 10 | | <p class="subtitle-help">Изменения влияют на матрицу прав ролей и пользовательские оверрайды.</p> |
| | | 11 | | </section> |
| | | 12 | | |
| | | 13 | | <nav class="admin-quick-links"> |
| | | 14 | | <a asp-area="Admin" asp-controller="Roles" asp-action="Index"><i class="bi bi-person-badge"></i>Роли</a> |
| | | 15 | | <a asp-area="Admin" asp-controller="Pages" asp-action="Index"><i class="bi bi-window-stack"></i>Страницы</a> |
| | | 16 | | <a asp-area="Studio2" asp-controller="Orders" asp-action="Index"><i class="bi bi-box-seam"></i>Заказы</a> |
| | | 17 | | </nav> |
| | | 18 | | |
| | | 19 | | <section class="admin-intro"> |
| | | 20 | | <i class="bi bi-info-circle"></i> |
| | | 21 | | <div>Сущность <code>OrderList</code>: колонки главной таблицы заказов, транзакций и журнала в едином формате.</div> |
| | | 22 | | </section> |
| | | 23 | | |
| | | 24 | | <div class="admin-toolbar admin-surface"> |
| | | 25 | | <form asp-action="SyncOrderListRegistry" method="post" class="d-flex gap-2 align-items-center"> |
| | 0 | 26 | | @Html.AntiForgeryToken() |
| | | 27 | | <button type="submit" class="btn btn-outline-success btn-sm"><i class="bi bi-arrow-repeat"></i> Синхронизировать |
| | | 28 | | </form> |
| | 0 | 29 | | @if (showCreate) |
| | | 30 | | { |
| | | 31 | | <a asp-action="Create" class="btn btn-primary btn-sm"><i class="bi bi-plus-lg"></i> Добавить колонку</a> |
| | | 32 | | } |
| | | 33 | | </div> |
| | | 34 | | |
| | 0 | 35 | | @await Html.PartialAsync("~/Areas/Studio2/Views/Shared/_BsxDirectoryGrid.cshtml", new BsxDirectoryGridViewModel("admFiel |
| | 0 | 36 | | <script type="application/json" id="admFieldsData">@Html.Raw(System.Text.Json.JsonSerializer.Serialize(Model, json))</sc |
| | | 37 | | |
| | | 38 | | @section Scripts { |
| | | 39 | | <script> |
| | | 40 | | (function () { |
| | | 41 | | const A = window.AdminGrid, D = window.BsxDirectory; |
| | 0 | 42 | | const url = (action, id) => '@Url.Action("Index")'.replace(/\/Index$/, '') + '/' + action + '/' + id; |
| | | 43 | | A.grid({ |
| | | 44 | | key: 'admFields', prefix: 'admFields', rows: A.data('admFieldsData'), |
| | | 45 | | rowUrl: r => url('Edit', r.id), |
| | | 46 | | columnDefs: [ |
| | | 47 | | A.code({ colId: 'fieldName', field: 'fieldName', headerName: 'Код (поле)' }), |
| | | 48 | | { colId: 'displayName', field: 'displayName', headerName: 'Подпись', minWidth: 200, flex: 2 }, |
| | | 49 | | D.setCol({ colId: 'entityName', field: 'entityName', headerName: 'Сущность', width: 140 }), |
| | | 50 | | D.setCol({ colId: 'fieldTypeName', field: 'fieldTypeName', headerName: 'Тип', width: 130, cellRender |
| | | 51 | | D.setCol({ colId: 'pageCode', field: 'pageCode', headerName: 'Страница (опц.)', minWidth: 160, flex: |
| | | 52 | | D.numCol({ colId: 'sortOrder', field: 'sortOrder', headerName: 'Порядок', width: 110, sort: 'asc' }) |
| | | 53 | | A.check({ colId: 'isActive', field: 'isActive', headerName: 'Активно' }), |
| | | 54 | | D.actionsCol(r => [ |
| | | 55 | | { icon: 'fa-pen', title: 'Изменить', kind: 'edit', href: url('Edit', r.id) }, |
| | | 56 | | r.isRegistryColumn ? null : { |
| | | 57 | | icon: 'fa-trash', title: 'Удалить (только записи вне фиксированного реестра)', kind: 'danger |
| | | 58 | | onClick: row => A.confirmPost(url('Delete', row.id), {}, { title: 'Удалить колонку', message |
| | | 59 | | } |
| | | 60 | | ], { width: 110 }) |
| | | 61 | | ] |
| | | 62 | | }); |
| | | 63 | | })(); |
| | | 64 | | </script> |
| | | 65 | | } |