index.blade.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. @extends('layouts.app')
  2. @section('content')
  3. <div class="row mb-2">
  4. <div class="col-md-6">
  5. <h3>Районы</h3>
  6. </div>
  7. <div class="col-md-6 text-end">
  8. <button type="button" class="btn btn-sm btn-success me-2" data-bs-toggle="modal" data-bs-target="#importModal">
  9. Импорт
  10. </button>
  11. <form action="{{ route('admin.area.export') }}" method="post" class="d-inline">
  12. @csrf
  13. <button type="submit" class="btn btn-sm btn-outline-success me-2">Экспорт</button>
  14. </form>
  15. <button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#addModal">
  16. Добавить
  17. </button>
  18. </div>
  19. </div>
  20. <!-- Фильтр по округу -->
  21. <div class="row mb-3">
  22. <div class="col-md-4">
  23. <form action="{{ route('admin.area.index') }}" method="get" class="d-flex gap-2">
  24. <select name="district_id" class="form-select form-select-sm">
  25. <option value="">Все округа</option>
  26. @foreach($districts as $id => $name)
  27. <option value="{{ $id }}" {{ $selectedDistrict == $id ? 'selected' : '' }}>{{ $name }}</option>
  28. @endforeach
  29. </select>
  30. <button type="submit" class="btn btn-sm btn-outline-primary">Фильтр</button>
  31. </form>
  32. </div>
  33. </div>
  34. @include('partials.table', [
  35. 'id' => $id,
  36. 'header' => $header,
  37. 'strings' => $areas,
  38. 'routeName' => 'admin.area.show',
  39. 'searchFields' => $searchFields,
  40. 'sortBy' => $sortBy,
  41. 'orderBy' => $orderBy,
  42. 'filters' => [],
  43. 'ranges' => [],
  44. 'dates' => [],
  45. 'enableColumnFilters' => false,
  46. ])
  47. <!-- Модальное окно добавления -->
  48. <div class="modal fade" id="addModal" tabindex="-1" aria-labelledby="addAreaModalLabel" aria-hidden="true">
  49. <div class="modal-dialog">
  50. <div class="modal-content">
  51. <div class="modal-header">
  52. <h1 class="modal-title fs-5" id="addAreaModalLabel">Добавить район</h1>
  53. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
  54. </div>
  55. <div class="modal-body">
  56. <form action="{{ route('admin.area.store') }}" method="post">
  57. @csrf
  58. @include('partials.input', ['name' => 'name', 'title' => 'Название', 'required' => true])
  59. @include('partials.select', [
  60. 'name' => 'district_id',
  61. 'title' => 'Округ',
  62. 'options' => $districts,
  63. 'required' => true,
  64. ])
  65. @include('partials.submit', ['name' => 'Добавить'])
  66. </form>
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. <!-- Модальное окно импорта -->
  72. <div class="modal fade" id="importModal" tabindex="-1" aria-labelledby="importAreaModalLabel" aria-hidden="true">
  73. <div class="modal-dialog">
  74. <div class="modal-content">
  75. <div class="modal-header">
  76. <h1 class="modal-title fs-5" id="importAreaModalLabel">Импорт районов</h1>
  77. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
  78. </div>
  79. <div class="modal-body">
  80. <form action="{{ route('admin.area.import') }}" method="post" enctype="multipart/form-data">
  81. @csrf
  82. <div class="mb-3">
  83. <p class="text-muted small">
  84. Формат файла: XLSX с колонками: ID, Название, Округ (сокращение), ID округа.<br>
  85. Первая строка — заголовки. Округ указывается по сокращению или ID.
  86. </p>
  87. </div>
  88. @include('partials.input', ['name' => 'import_file', 'type' => 'file', 'title' => 'XLSX файл', 'required' => true])
  89. @include('partials.submit', ['name' => 'Импорт'])
  90. </form>
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. @endsection