index.blade.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. @extends('layouts.app')
  2. @section('content')
  3. <div class="row mb-3">
  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. <table class="table table-bordered table-striped table-hover table-sm">
  47. <thead>
  48. <tr>
  49. @foreach($header as $key => $title)
  50. <th>{{ $title }}</th>
  51. @endforeach
  52. <th></th>
  53. </tr>
  54. </thead>
  55. <tbody>
  56. @foreach($areas as $area)
  57. <tr>
  58. <td>{{ $area['id'] }}</td>
  59. <td>{{ $area['name'] }}</td>
  60. <td>{{ $area['district_name'] }}</td>
  61. <td class="text-end">
  62. <a href="{{ route('admin.area.show', $area['id']) }}" class="btn btn-sm btn-outline-primary">
  63. Редактировать
  64. </a>
  65. </td>
  66. </tr>
  67. @endforeach
  68. </tbody>
  69. </table>
  70. <!-- Модальное окно добавления -->
  71. <div class="modal fade" id="addModal" tabindex="-1" aria-hidden="true">
  72. <div class="modal-dialog">
  73. <div class="modal-content">
  74. <div class="modal-header">
  75. <h5 class="modal-title">Добавить район</h5>
  76. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
  77. </div>
  78. <div class="modal-body">
  79. <form action="{{ route('admin.area.store') }}" method="post">
  80. @csrf
  81. @include('partials.input', ['name' => 'name', 'title' => 'Название', 'required' => true])
  82. @include('partials.select', [
  83. 'name' => 'district_id',
  84. 'title' => 'Округ',
  85. 'options' => $districts,
  86. 'required' => true,
  87. ])
  88. @include('partials.submit', ['name' => 'Добавить'])
  89. </form>
  90. </div>
  91. </div>
  92. </div>
  93. </div>
  94. <!-- Модальное окно импорта -->
  95. <div class="modal fade" id="importModal" tabindex="-1" aria-hidden="true">
  96. <div class="modal-dialog">
  97. <div class="modal-content">
  98. <div class="modal-header">
  99. <h5 class="modal-title">Импорт районов</h5>
  100. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
  101. </div>
  102. <div class="modal-body">
  103. <form action="{{ route('admin.area.import') }}" method="post" enctype="multipart/form-data">
  104. @csrf
  105. <div class="mb-3">
  106. <p class="text-muted small">
  107. Формат файла: XLSX с колонками: ID, Название, Округ (сокращение), ID округа.<br>
  108. Первая строка — заголовки. Округ указывается по сокращению или ID.
  109. </p>
  110. </div>
  111. @include('partials.input', ['name' => 'import_file', 'type' => 'file', 'title' => 'XLSX файл', 'required' => true])
  112. @include('partials.submit', ['name' => 'Импорт'])
  113. </form>
  114. </div>
  115. </div>
  116. </div>
  117. </div>
  118. @if($errors->any())
  119. @dump($errors)
  120. @endif
  121. @endsection