Pārlūkot izejas kodu

move mafs between orders

Alexander Musikhin 7 mēneši atpakaļ
vecāks
revīzija
28eba3dea1

+ 21 - 0
app/Http/Controllers/OrderController.php

@@ -9,6 +9,7 @@ use App\Models\MafOrder;
 use App\Models\ObjectType;
 use App\Models\Order;
 use App\Models\OrderStatus;
+use App\Models\Product;
 use App\Models\ProductSKU;
 use App\Models\Role;
 use App\Models\User;
@@ -201,6 +202,7 @@ class OrderController extends Controller
             'new_order_id' => 'required',
             'ids' => 'required|json',
         ]);
+
         $ids = json_decode($data['ids'], true);
         $updated = [];
         foreach ($ids as $mafId) {
@@ -216,4 +218,23 @@ class OrderController extends Controller
 
         return response()->json($updated);
     }
+
+    public function search(Request $request): array
+    {
+        $ret = [];
+        $s = $request->get('s');
+        $searchFields = $this->data['searchFields'];
+        if($s) {
+            $result = Order::query()->where(function ($query) use ($searchFields, $s) {
+                foreach ($searchFields as $searchField) {
+                    $query->orWhere($searchField, 'LIKE', '%' . $s . '%');
+                }
+            });
+            foreach ($result->get() as $p) {
+                $ret[$p->id] = $p->common_name;
+            }
+        }
+        return $ret;
+    }
+
 }

+ 43 - 3
resources/views/orders/show.blade.php

@@ -100,7 +100,7 @@
                             </tbody>
                         </table>
                         <div>
-                            <button class="btn btn-primary btn-sm ">Перенести МАФы</button>
+                            <button class="btn btn-primary btn-sm" data-bs-toggle="modal" data-bs-target="#moveModal">Перенести МАФы</button>
                         </div>
                     @endif
                 </div>
@@ -109,16 +109,55 @@
         </div>
     </div>
 
+
+    <!-- Модальное окно переноса -->
+    <div class="modal fade" id="moveModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
+        <div class="modal-dialog modal-fullscreen-sm-down modal-lg">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h1 class="modal-title fs-5" id="addModalLabel">Выбрать площадку, куда переносим</h1>
+                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
+                </div>
+                <div class="modal-body">
+                    <form action="{{ route('order.move-maf') }}" method="post">
+                        @csrf
+                        <div id="select_maf_form">
+                            <input type="text" class="form-control mb-2" placeholder="Поиск площадки" id="search_order">
+                            <select id="select_order" name="new_order_id" class="form-select mb-3" multiple required></select>
+                            <a href="#" class="btn btn-primary" id="moveMaf">Перенести</a>
+                        </div>
+                    </form>
+                </div>
+            </div>
+        </div>
+    </div>
+
 @endsection
 
+
 @push('scripts')
     <script type="module">
+        // select order
+        $('#search_order').on('keyup', function () {
+            // search products on backend
+            $.get('{{ route('order.search') }}?s=' + $(this).val(),
+                function (data) {
+                    $('#select_order').children().remove()
+                    $.each(data, function (id, name) {
+                        $('#select_order').append('<option value=\'' + id + '\'>' + name + '</option>');
+                    });
+                }
+            );
+        });
+
+
 
         $('#check-all-maf').on('change', function () {
             $('input:checkbox.check-maf').not(this).prop('checked', this.checked);
         });
 
-        $('.revert-maf').on('click', function () {
+        // move maf
+        $('#moveMaf').on('click', function () {
             let ids = Array();
             $('.check-maf').each(function () {
                 if ($(this).prop('checked')) {
@@ -126,10 +165,11 @@
                 }
             });
 
-            $.post('{{ route('order.revert-maf', $order) }}',
+            $.post('{{ route('order.move-maf') }}',
                 {
                     '_token': $('meta[name=csrf-token]').attr('content'),
                     ids: JSON.stringify(ids),
+                    'new_order_id': $('#select_order').find(":selected").val()
                 },
                 function () {
                     // console.log(data);

+ 4 - 1
routes/web.php

@@ -65,7 +65,7 @@ Route::middleware('auth:web')->group(function () {
     Route::get('order/{order}', [OrderController::class, 'show'])->name('order.show');
     Route::get('order/edit/{order}', [OrderController::class, 'edit'])->name('order.edit');
     Route::post('order/store', [OrderController::class, 'store'])->name('order.store');
-    Route::post('order/{order}/store', [OrderController::class, 'store'])->name('order.update');
+    Route::post('order/{order}/update', [OrderController::class, 'store'])->name('order.update');
     Route::delete('order/{order}', [OrderController::class, 'destroy'])->name('order.destroy')->middleware('role:' . Role::ADMIN);
 
     Route::get('order/{order}/get-maf', [OrderController::class, 'getMafToOrder'])->name('order.get-maf');
@@ -87,9 +87,12 @@ Route::middleware('auth:web')->group(function () {
     Route::post('maf_orders/update/{maf_order}', [MafOrderController::class, 'update'])->name('maf_order.update');
     Route::delete('maf_orders/delete/{maf_order}', [MafOrderController::class, 'destroy'])->name('maf_order.delete');
     Route::post('maf_orders/set_in_stock/{maf_order}', [MafOrderController::class, 'setInStock'])->name('maf_order.set_in_stock');
+
     // ajax search products
     Route::get('product/search', [ProductController::class, 'search'])->name('product.search');
 
+    // ajax search products
+    Route::get('order-search', [OrderController::class, 'search'])->name('order.search');
 
     // ajax get areas by district
     Route::get('areas/{district_id?}', [AreaController::class, 'ajaxGetAreasByDistrict'])->name('area.ajax-get-areas-by-district');