index.blade.php 5.0 KB

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