관리-도구
편집 파일: orders.blade.php
@extends('layouts.apps') @section('content') <!--start main wrapper--> <main class="main-wrapper"> <div class="main-content"> <!--breadcrumb--> <div class="page-breadcrumb d-none d-sm-flex align-items-center mb-3"> <div class="breadcrumb-title pe-3">Components</div> <div class="ps-3"> <nav aria-label="breadcrumb"> <ol class="breadcrumb mb-0 p-0"> <li class="breadcrumb-item"><a href="javascript:;"><i class="bx bx-home-alt"></i></a> </li> <li class="breadcrumb-item active" aria-current="page">Orders</li> </ol> </nav> </div> <!-- <div class="ms-auto"> <div class="btn-group"> <button type="button" class="btn btn-primary">Settings</button> <button type="button" class="btn btn-primary split-bg-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown"> <span class="visually-hidden">Toggle Dropdown</span> </button> <div class="dropdown-menu dropdown-menu-right dropdown-menu-lg-end"> <a class="dropdown-item" href="javascript:;">Action</a> <a class="dropdown-item" href="javascript:;">Another action</a> <a class="dropdown-item" href="javascript:;">Something else here</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="javascript:;">Separated link</a> </div> </div> </div> --> </div> <!--end breadcrumb--> <!-- <div class="product-count d-flex align-items-center gap-3 gap-lg-4 mb-4 fw-medium flex-wrap font-text1"> <a href="javascript:;"><span class="me-1">All</span><span class="text-secondary">(85472)</span></a> <a href="javascript:;"><span class="me-1">Pending Payment</span><span class="text-secondary">(86)</span></a> <a href="javascript:;"><span class="me-1">Incomplete</span><span class="text-secondary">(76)</span></a> <a href="javascript:;"><span class="me-1">Completed</span><span class="text-secondary">(8759)</span></a> <a href="javascript:;"><span class="me-1">Refunded</span><span class="text-secondary">(769)</span></a> <a href="javascript:;"><span class="me-1">Failed</span><span class="text-secondary">(42)</span></a> </div> --> <div class="row g-3"> <div class="col-auto"> <form method="GET" action="{{ route('admin.orders') }}"> <div class="position-relative"> <input class="form-control px-5" type="search" name="search" value="{{ request('search') }}" placeholder="Search Customers"> <span class="material-icons-outlined position-absolute ms-3 translate-middle-y start-0 top-50 fs-5">search</span> {{-- Preserve selected status when searching --}} <input type="hidden" name="status" value="{{ $status }}"> </div> </form> </div> <div class="col-auto flex-grow-1 overflow-auto"> <div class="btn-group position-static"> <div class="btn-group position-static"> <button type="button" class="btn border btn-filter dropdown-toggle px-4" data-bs-toggle="dropdown" aria-expanded="false"> Shipping Status: {{ ucfirst($status) }} </button> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="{{ route('admin.orders', ['status' => 'all']) }}">All</a></li> <li><a class="dropdown-item" href="{{ route('admin.orders', ['status' => 'completed']) }}">Delivered</a></li> <li><a class="dropdown-item" href="{{ route('admin.orders', ['status' => 'failed']) }}">Failed</a></li> <li><a class="dropdown-item" href="{{ route('admin.orders', ['status' => 'shipped']) }}">Shipped</a></li> </ul> </div> </div> </div> </div><!--end row--> <div class="card mt-4"> <div class="card-body"> <div class="customer-table"> <div class="table-responsive white-space-nowrap"> <table class="table align-middle"> <thead class="table-light"> <tr> <th>#</th> <th>Order Id</th> <th>Customer</th> <th>Total Amount</th> <th>Shipping Status</th> <th>Tracking Code</th> <th>Courier Name</th> <th>Products</th> <th>Date</th> <th>Action</th> </tr> </thead> <tbody> @foreach($orders as $order) <tr> <td><input type="checkbox" class="form-check-input"></td> <td><a href="javascript:;">#{{ $order->id }}</a></td> <td>{{ $order->first_name }} {{ $order->last_name }}</td> <td>₹{{ number_format($order->total_amount, 2) }}</td> <td> <select class="form-select order-status" data-id="{{ $order->id }}"> <option value="Pending" {{ $order->status=='Pending'?'selected':'' }}>Pending</option> <option value="Processing" {{ $order->status=='Processing'?'selected':'' }}>Processing</option> <option value="Completed" {{ $order->status=='Completed'?'selected':'' }}>Completed</option> <option value="Cancelled" {{ $order->status=='Cancelled'?'selected':'' }}>Cancelled</option> <option value="Shipped" {{ $order->status=='Shipped'?'selected':'' }}>Shipped</option> </select> </td> <td> <input type="text" class="form-control tracking-code" data-id="{{ $order->id }}" value="{{ $order->tracking_code }}"> </td> <td> <input type="text" class="form-control courier-name" data-id="{{ $order->id }}" value="{{ $order->courier_name }}"> </td> <td> <button class="btn btn-sm btn-success save-order" data-id="{{ $order->id }}">Save</button> </td> <td> <ul class="mb-0"> @foreach($order->orderDetails as $detail) <li>{{ $detail->product_name }} × {{ $detail->quantity }}</li> @endforeach </ul> </td> <td>{{ $order->created_at->format('M d, h:i A') }}</td> <td> <a href="{{ route('admin.orders.show', $order->id) }}" class="btn btn-sm btn-primary"> <i class="bi bi-eye"></i> View </a> </td> </tr> @endforeach </tbody> </table> </div> </div> </div> </div> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(document).on('click', '.save-order', function() { let order_id = $(this).data('id'); let status = $(`.order-status[data-id="${order_id}"]`).val(); let tracking_code = $(`.tracking-code[data-id="${order_id}"]`).val(); let courier_name = $(`.courier-name[data-id="${order_id}"]`).val(); $.ajax({ url: "{{ route('order.updateOrder') }}", type: 'POST', data: { _token: '{{ csrf_token() }}', order_id: order_id, status: status, tracking_code: tracking_code, courier_name: courier_name }, success: function(response) { alert(response.message); }, error: function(xhr) { console.error(xhr.responseText); alert('Something went wrong!'); } }); }); </script> </div> </main> <!--end main wrapper--> <!--start overlay--> <div class="overlay btn-toggle"></div> <!--end overlay--> @endsection