This commit is contained in:
2026-04-06 18:44:02 +05:00
commit d775fbb9ba
431 changed files with 31234 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
@extends('layouts.admin')
@section('title', 'Заказы')
@section('content')
<div class="container-fluid">
@if(session('success'))
<div class="alert alert-success alert-dismissible fade show" role="alert">
<i class="bi bi-check-circle-fill me-2"></i> {{ session('success') }}
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
@endif
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center flex-wrap gap-2">
<h5>Заказы</h5>
<form method="GET" action="{{ route('admin.orders') }}" class="d-flex gap-2">
<input type="text" name="search" class="form-control form-control-sm" placeholder="Поиск по номеру..." value="{{ request('search') }}" style="width: 200px;">
<select name="status" class="form-select form-select-sm" style="width: 150px;">
<option value="">Все статусы</option>
<option value="pending" {{ request('status') == 'pending' ? 'selected' : '' }}>Ожидает</option>
<option value="processing" {{ request('status') == 'processing' ? 'selected' : '' }}>В обработке</option>
<option value="shipped" {{ request('status') == 'shipped' ? 'selected' : '' }}>Отправлен</option>
<option value="delivered" {{ request('status') == 'delivered' ? 'selected' : '' }}>Доставлен</option>
<option value="cancelled" {{ request('status') == 'cancelled' ? 'selected' : '' }}>Отменён</option>
</select>
<button type="submit" class="btn btn-sm btn-dark-green">Фильтр</button>
@if(request('search') || request('status'))
<a href="{{ route('admin.orders') }}" class="btn btn-sm btn-secondary">Сбросить</a>
@endif
</form>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th> заказа</th>
<th>Клиент</th>
<th>Сумма</th>
<th>Статус доставки</th>
<th>Статус оплаты</th>
<th>Дата</th>
<th>Действия</th>
</tr>
</thead>
<tbody>
@forelse($orders as $order)
<tr>
<td>{{ $order->order_number }}</td>
<td>{{ $order->customer_name }}<br><small class="text-muted">{{ $order->customer_email }}</small></td>
<td>{{ number_format($order->total, 0, '.', ' ') }} </td>
<td>
<span class="badge bg-{{ $order->delivery_status_color }}">
{{ $order->delivery_status_name }}
</span>
</td>
<td>
<span class="badge bg-{{ $order->payment_status === 'paid' ? 'success' : 'warning' }}">
{{ $order->payment_status_name }}
</span>
</td>
<td>{{ $order->created_at->format('d.m.Y H:i') }}</td>
<td>
<a href="{{ route('admin.orders.show', $order->id) }}" class="btn btn-sm btn-dark-green">
<i class="bi bi-eye"></i>
</a>
</td>
</tr>
@empty
<tr>
<td colspan="7" class="text-center text-muted">Заказов не найдено</td>
</tr>
@endforelse
</tbody>
</table>
</div>
{{ $orders->links() }}
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,109 @@
@extends('layouts.admin')
@section('title', 'Заказ ' . $order->order_number)
@section('content')
<div class="container-fluid">
<div class="d-flex justify-content-between align-items-center mb-4">
<h4>Заказ #{{ $order->order_number }}</h4>
<a href="{{ route('admin.orders') }}" class="btn btn-secondary btn-sm"> Назад к списку</a>
</div>
<div class="row">
<div class="col-md-6">
<div class="card mb-4">
<div class="card-header">
<h5 class="mb-0">Информация о заказе</h5>
</div>
<div class="card-body">
<p><strong>Дата:</strong> {{ $order->created_at->format('d.m.Y H:i') }}</p>
<p><strong>Клиент:</strong> {{ $order->customer_name }}</p>
<p><strong>Email:</strong> {{ $order->customer_email }}</p>
<p><strong>Телефон:</strong> {{ $order->customer_phone }}</p>
@if($order->shipping_address)
<p><strong>Адрес доставки:</strong> {{ $order->shipping_address }}</p>
@endif
@if($order->comment)
<p><strong>Комментарий:</strong> {{ $order->comment }}</p>
@endif
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<div class="card-header">
<h5 class="mb-0">Обновить статус</h5>
</div>
<div class="card-body">
<form action="{{ route('admin.orders.update-status', $order->id) }}" method="POST">
@csrf
@method('PUT')
<div class="mb-3">
<label class="form-label">Статус доставки</label>
<select name="delivery_status" class="form-select">
@foreach($order::getDeliveryStatuses() as $value => $label)
<option value="{{ $value }}" {{ $order->delivery_status == $value ? 'selected' : '' }}>
{{ $label }}
</option>
@endforeach
</select>
</div>
<div class="mb-3">
<label class="form-label">Статус оплаты</label>
<select name="payment_status" class="form-select">
@foreach($order::getPaymentStatuses() as $value => $label)
<option value="{{ $value }}" {{ $order->payment_status == $value ? 'selected' : '' }}>
{{ $label }}
</option>
@endforeach
</select>
</div>
<button type="submit" class="btn btn-dark-green">Обновить статус</button>
</form>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="mb-0">Товары в заказе</h5>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>Товар</th>
<th>Вариация</th>
<th>SKU</th>
<th>Кол-во</th>
<th>Цена</th>
<th>Сумма</th>
</tr>
</thead>
<tbody>
@foreach($order->items as $item)
<tr>
<td>{{ $item->product_name }}</td>
<td>{{ $item->variation_name ?? '—' }}</td>
<td>{{ $item->sku ?? '—' }}</td>
<td>{{ $item->quantity }}</td>
<td>{{ number_format($item->price, 0, '.', ' ') }} </td>
<td>{{ number_format($item->total, 0, '.', ' ') }} </td>
</tr>
@endforeach
</tbody>
<tfoot>
<tr>
<td colspan="5" class="text-end fw-bold">Итого:</td>
<td class="fw-bold">{{ number_format($order->total, 0, '.', ' ') }} </td>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
</div>
@endsection