edit.blade.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. @extends('layouts.app')
  2. @section('content')
  3. <div class="px-3">
  4. <form class="row" action="{{ route('order.store') }}" method="post">
  5. <div class="col-xxl-6">
  6. <h4>Общая информация об объекте</h4>
  7. @csrf
  8. @if(isset($order))
  9. <input type="hidden" name="id" value="{{ $order->id }}">
  10. @endif
  11. @include('partials.select', ['name' => 'district_id', 'title' => 'Округ', 'options' => $districts, 'value' => $order?->district_id ?? old('district_id'), 'first_empty' => true, 'required' => true])
  12. @include('partials.select', ['name' => 'area_id', 'title' => 'Район', 'options' => $areas, 'value' => $order?->area_id ?? old('area_id'), 'required' => true, 'first_empty' => true])
  13. @include('partials.input', ['name' => 'object_address', 'title' => 'Адрес объекта', 'value' => $order->object_address ?? old('object_address'), 'required' => true])
  14. @include('partials.select', ['name' => 'object_type_id', 'title' => 'Тип объекта', 'options' => $objectTypes, 'value' => $order->object_type_id ?? old('object_type_id'), 'required' => true, 'first_empty' => true])
  15. @include('partials.select', ['name' => 'order_status_id', 'title' => 'Статус', 'options' => $orderStatuses, 'value' => $order->order_status_id ?? old('order_status_id'), 'required' => true])
  16. @include('partials.input', ['name' => 'contract_date', 'title' => 'Дата договора', 'type' => 'date', 'value' => $order->contract_date ?? old('contract_date')])
  17. @include('partials.input', ['name' => 'contract_number', 'title' => 'Номер договора', 'value' => $order->contract_number ?? old('contract_number')])
  18. @include('partials.textarea', ['name' => 'comment', 'title' => 'Комментарий', 'value' => $order->comment ?? old('comment')])
  19. @include('partials.input', ['name' => 'installation_date', 'title' => 'Дата выхода на монтаж', 'type' => 'date', 'value' => $order->installation_date ?? old('installation_date')])
  20. @include('partials.select', ['name' => 'brigadier_id', 'title' => 'Бригадир', 'options' => $brigadiers, 'value' => $order->brigadier_id ?? old('brigadier_id')])
  21. @include('partials.select', ['name' => 'user_id', 'title' => 'Менеджер', 'options' => $users, 'value' => $order->user_id ?? old('user_id') ?? auth()->user()->id])
  22. @include('partials.input', ['name' => 'tg_group_name', 'title' => 'Название группы в ТГ', 'value' => $order->tg_group_name ?? old('tg_group_name')])
  23. @include('partials.input', ['name' => 'tg_group_link', 'title' => 'Ссылка на группу в ТГ', 'value' => $order->tg_group_link ?? old('tg_group_link')])
  24. </div>
  25. <div class="col-xxl-6">
  26. <h4>МАФ</h4>
  27. <div>
  28. <input type="text" class="form-control mb-2" placeholder="Поиск номенклатуры" id="search_maf">
  29. <select id="select_maf" class="form-select mb-3" multiple></select>
  30. </div>
  31. <div id="selected_maf">
  32. @isset($order)
  33. <div class="changes-message small text-warning visually-hidden">* необходимо сохранить изменения</div>
  34. @endisset
  35. @if(isset($order) && $order->products)
  36. @foreach($order->products as $p)
  37. <div class="maf d-flex justify-content-between mb-1">
  38. <div>
  39. <input type="hidden" class="visually-hidden" name="products[]" value="{{ $p->id }}">
  40. <div class="p-1">{!! $p->common_name !!}</div>
  41. </div>
  42. <div class="col-1 d-flex justify-content-end">
  43. <div>
  44. <input class="form-control text-end form-control-sm quantity" type="number" name="quantity[]" value="{{ $p->pivot->quantity }}">
  45. </div>
  46. <div class="p-1">
  47. <i onclick="$(this).parent().remove(); $('.changes-message').removeClass('visually-hidden');" class="bi bi-trash text-danger cursor-pointer"></i>
  48. </div>
  49. </div>
  50. </div>
  51. @endforeach
  52. @endif
  53. </div>
  54. </div>
  55. <div class="col-12 text-end">
  56. @include('partials.submit')
  57. </div>
  58. </form>
  59. </div>
  60. @if($errors->any())
  61. @dump($errors->all())
  62. @endif
  63. @endsection
  64. @push('scripts')
  65. <script type="module">
  66. let selectMaf = $('#select_maf');
  67. $('#search_maf').on('keyup', function () {
  68. // search products on backend
  69. $.get('{{ route('product.search') }}?s=' + $(this).val(),
  70. function (data) {
  71. selectMaf.children().remove()
  72. $.each(data, function (id, name) {
  73. selectMaf.append('<option value=\'' + id + '\'>' + name + '</option>');
  74. });
  75. }
  76. );
  77. });
  78. selectMaf.on('change', function () {
  79. $('#selected_maf').append(
  80. '<div class="maf d-flex justify-content-between mb-1">' +
  81. '<div>' +
  82. '<input type="hidden" name="products[]" value="'+ $(this).val() +'">' +
  83. '<div class="p-1">'+ $('#select_maf option:selected').text() +'</div> ' +
  84. '</div>' +
  85. '<div class="col-1 d-flex justify-content-end">' +
  86. '<div>' +
  87. '<input class="form-control text-end form-control-sm quantity" type="number" name="quantity[]" value="1">' +
  88. '</div>' +
  89. '<div class="p-1">' +
  90. '<i onclick="$(this).parent().remove();" class="bi bi-trash text-danger cursor-pointer"></i>' +
  91. '</div>' +
  92. '</div>'
  93. );
  94. $('#select_maf').children().remove();
  95. $('#search_maf').val('');
  96. $('.changes-message').removeClass('visually-hidden');
  97. });
  98. $('#district_id').on('change', function () {
  99. // load areas of selected district
  100. console.log($(this).val());
  101. $.get('{{ route('area.ajax-get-areas-by-district') }}/' + $(this).val(),
  102. function (data) {
  103. $('#area_id').children().remove();
  104. $.each(data, function (id, name) {
  105. $('#area_id').append('<option value=\'' + id + '\'>' + name + '</option>');
  106. });
  107. }
  108. );
  109. });
  110. </script>
  111. @endpush