index.blade.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. <div class="d-flex flex-row justify-content-end">
  9. <div class="p-2">
  10. <button @disabled($weekNumber == 1) class="btn btn-sm btn-primary"
  11. onclick="document.location = '{{ route('schedule.index', ['week' => $weekNumber - 1]) }}'">
  12. <i class="bi bi-arrow-left"></i>
  13. </button>
  14. </div>
  15. <label class="p-2 d-block small mt-1">Неделя №</label>
  16. <div class="p-2">
  17. <input type="number" style="width: 3rem" value="{{ $weekNumber }}" class="form-control form-control-sm"
  18. onchange="document.location = '{{ route('schedule.index') }}?week='+this.value"
  19. min="1" max="53" title="№ недели">
  20. </div>
  21. <div class="p-2">
  22. <input type="date" min="{{ year() . '-01-01' }}" max="{{ year() . '-12-31' }}"
  23. class="form-control form-control-sm" value="{{ $weekDates['mon'] }}" title="начало недели"
  24. onchange="document.location = '{{ route('schedule.index') }}?week=' + getWeekNumber(this.value)">
  25. </div>
  26. <div class="p-2">
  27. <input type="date" disabled
  28. class="form-control form-control-sm" value="{{ $weekDates['sun'] }}" title="конец недели">
  29. </div>
  30. <div class="p-2">
  31. <button @disabled($weekNumber > 52) class="btn btn-sm btn-primary"
  32. onclick="document.location = '{{ route('schedule.index', ['week' => $weekNumber + 1]) }}'">
  33. <i class="bi bi-arrow-right"></i>
  34. </button>
  35. </div>
  36. </div>
  37. </div>
  38. </div>
  39. <div class="schedule">
  40. <table class="table">
  41. <thead>
  42. <tr>
  43. <th class="text-center vertical">День недели</th>
  44. <th class="text-center vertical">Дата</th>
  45. <th>Код адр</th>
  46. <th>Округ</th>
  47. <th>Район</th>
  48. <th>Адрес</th>
  49. <th>Тип объекта</th>
  50. <th>Артикулы МАФ</th>
  51. <th>Кол-во позиций</th>
  52. <th>Бригадир</th>
  53. <th>Примечание</th>
  54. </tr>
  55. </thead>
  56. <tbody>
  57. @foreach($schedules as $dow => $orders)
  58. <tr>
  59. <td rowspan="{{ ($orders) ? count($orders) : '1' }}" class="vertical">{{ \App\Helpers\DateHelper::getHumanDayOfWeek($dow) }}</td>
  60. <td rowspan="{{ ($orders) ? count($orders) : '1' }}" class="vertical">{{ \App\Helpers\DateHelper::getHumanDate($dow) }}</td>
  61. @if($orders)
  62. @foreach($orders as $order)
  63. @if(!$loop->first) <tr> @endif
  64. <td>{{ $order->id }}</td>
  65. <td>{{ $order->district->shortname }}</td>
  66. <td>{{ $order->area->name }}</td>
  67. <td>{{ $order->object_address }}</td>
  68. <td>{{ $order->objectType->name }}</td>
  69. <td>{!! $order->productsWithCount !!}</td>
  70. <td>{{ $order->products_sku()->count() }}</td>
  71. <td>{{ $order->brigadier->name }}</td>
  72. <td></td>
  73. @if(!$loop->first) </tr> @endif
  74. @endforeach
  75. @endif
  76. </tr>
  77. @endforeach
  78. </tbody>
  79. </table>
  80. </div>
  81. @if($errors->any())
  82. @dump($errors)
  83. @endif
  84. @endsection
  85. @push('scripts')
  86. <script type="text/javascript">
  87. function getWeekNumber(d) {
  88. // Copy date so don't modify original
  89. d = new Date(Date.parse(d));
  90. // Set to nearest Thursday: current date + 4 - current day number
  91. // Make Sunday's day number 7
  92. d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay()||7));
  93. // Get first day of year
  94. let yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));
  95. // Calculate and return week number
  96. return Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
  97. }
  98. </script>
  99. @endpush