index.blade.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. @extends('layouts.app')
  2. @section('content')
  3. <div class="container-fluid">
  4. <div class="row">
  5. <div class="col-12">
  6. <h3>{{ $title }}</h3>
  7. {{-- Навигация --}}
  8. <ul class="nav nav-tabs mb-3">
  9. <li class="nav-item">
  10. <a class="nav-link" href="{{ route('spare_parts.index', session('gp_spare_parts', [])) }}">
  11. Каталог
  12. </a>
  13. </li>
  14. @if(hasPermission('spare_part_orders.view'))
  15. <li class="nav-item">
  16. <a class="nav-link" href="{{ route('spare_part_orders.index', session('gp_spare_part_orders', [])) }}">
  17. Заказы запчастей
  18. </a>
  19. </li>
  20. @endif
  21. @if(hasPermission('spare_part_inventory.view'))
  22. <li class="nav-item">
  23. <a class="nav-link" href="{{ route('spare_part_inventory.index') }}">
  24. Контроль наличия
  25. </a>
  26. </li>
  27. @endif
  28. <li class="nav-item">
  29. <a class="nav-link active" href="{{ route('pricing_codes.index', session('gp_pricing_codes', [])) }}">
  30. Справочник расшифровок
  31. </a>
  32. </li>
  33. <li class="nav-item">
  34. <a class="nav-link {{ ($tab ?? '') === 'help' ? 'active' : '' }}"
  35. href="{{ route('spare_parts.help', session('gp_spare_parts', [])) }}">
  36. <i class="bi bi-question-circle"></i> Справка
  37. </a>
  38. </li>
  39. </ul>
  40. {{-- Кнопки управления --}}
  41. @if(hasPermission('pricing_codes.create'))
  42. <div class="mb-3">
  43. <button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#addCodeModal">
  44. Добавить код
  45. </button>
  46. </div>
  47. @endif
  48. @if(isset($pricing_codes))
  49. @include('partials.table', [
  50. 'id' => $id,
  51. 'header' => $header,
  52. 'strings' => $pricing_codes,
  53. 'searchFields' => $searchFields,
  54. 'sortBy' => $sortBy,
  55. 'orderBy' => $orderBy,
  56. 'filters' => [],
  57. 'ranges' => [],
  58. 'dates' => [],
  59. 'enableColumnFilters' => false,
  60. ])
  61. @include('partials.pagination', ['items' => $pricing_codes])
  62. @endif
  63. </div>
  64. </div>
  65. </div>
  66. @if(hasPermission('pricing_codes.create'))
  67. {{-- Модальное окно добавления кода --}}
  68. <div class="modal fade" id="addCodeModal" tabindex="-1" aria-labelledby="addCodeModalLabel" aria-hidden="true">
  69. <div class="modal-dialog">
  70. <div class="modal-content">
  71. <div class="modal-header">
  72. <h1 class="modal-title fs-5" id="addCodeModalLabel">Добавить код расценки</h1>
  73. <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
  74. </div>
  75. <form action="{{ route('pricing_codes.store') }}" method="POST">
  76. @csrf
  77. <div class="modal-body">
  78. <div class="mb-3">
  79. <label for="type" class="form-label">Тип</label>
  80. <select class="form-select" id="type" name="type" required>
  81. <option value="tsn_number">№ по ТСН</option>
  82. <option value="pricing_code">Шифр расценки</option>
  83. </select>
  84. </div>
  85. <div class="mb-3">
  86. <label for="code" class="form-label">Код</label>
  87. <input type="text" class="form-control" id="code" name="code" required>
  88. </div>
  89. <div class="mb-3">
  90. <label for="description" class="form-label">Расшифровка</label>
  91. <input type="text" class="form-control" id="description" name="description">
  92. </div>
  93. </div>
  94. <div class="modal-footer">
  95. <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Отмена</button>
  96. <button type="submit" class="btn btn-primary">Добавить</button>
  97. </div>
  98. </form>
  99. </div>
  100. </div>
  101. </div>
  102. @endif
  103. @push('scripts')
  104. <script type="module">
  105. function waitForJQuery(callback) {
  106. if (typeof window.$ !== 'undefined') {
  107. callback();
  108. } else {
  109. setTimeout(() => waitForJQuery(callback), 50);
  110. }
  111. }
  112. waitForJQuery(function() {
  113. // Редактирование описания
  114. $('.edit-description').on('click', function() {
  115. const id = $(this).data('id');
  116. $('.description-text-' + id).hide();
  117. $(this).hide();
  118. $('.edit-form-' + id).show();
  119. });
  120. // Отмена редактирования
  121. $('.cancel-edit').on('click', function() {
  122. const id = $(this).data('id');
  123. $('.edit-form-' + id).hide();
  124. $('.description-text-' + id).show();
  125. $('.edit-description[data-id="' + id + '"]').show();
  126. });
  127. $('.js-confirm-submit').on('submit', function(e) {
  128. e.preventDefault();
  129. const form = this;
  130. const message = $(form).data('confirm-message') || 'Подтвердите действие';
  131. customConfirm(message, function () {
  132. form.submit();
  133. }, 'Подтверждение удаления');
  134. });
  135. });
  136. </script>
  137. @endpush
  138. @endsection