69dfd2a93a
Co-authored-by: Cursor <cursoragent@cursor.com>
63 lines
2.2 KiB
Plaintext
63 lines
2.2 KiB
Plaintext
<%- include('../partials/layout-start') %>
|
||
|
||
<div class="admin-header">
|
||
<h1>Админ-панель</h1>
|
||
<%- include('../partials/admin-nav', { adminNav: 'dashboard' }) %>
|
||
</div>
|
||
|
||
<section class="card" style="margin-bottom:1.5rem">
|
||
<h2 style="margin-top:0">Обновление с Git</h2>
|
||
<p class="muted">Подтянуть новую версию и перезапустить магазин без SSH.</p>
|
||
<a href="/admin/system" class="btn btn--primary">Перейти к обновлению →</a>
|
||
</section>
|
||
|
||
<div class="stats-grid">
|
||
<div class="stat-card">
|
||
<span class="stat-card__label">Пользователи</span>
|
||
<strong class="stat-card__value"><%= stats.users %></strong>
|
||
</div>
|
||
<div class="stat-card">
|
||
<span class="stat-card__label">Товары</span>
|
||
<strong class="stat-card__value"><%= stats.products %></strong>
|
||
</div>
|
||
<div class="stat-card">
|
||
<span class="stat-card__label">Заказы</span>
|
||
<strong class="stat-card__value"><%= stats.orders %></strong>
|
||
</div>
|
||
<div class="stat-card">
|
||
<span class="stat-card__label">Выручка</span>
|
||
<strong class="stat-card__value"><%= formatPrice(stats.revenue) %></strong>
|
||
</div>
|
||
</div>
|
||
|
||
<h2>Последние заказы</h2>
|
||
<% if (!recentOrders.length) { %>
|
||
<p class="muted">Заказов пока нет.</p>
|
||
<% } else { %>
|
||
<table class="cart-table">
|
||
<thead>
|
||
<tr>
|
||
<th>№</th>
|
||
<th>Клиент</th>
|
||
<th>Статус</th>
|
||
<th>Сумма</th>
|
||
<th>Дата</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<% const statusLabels = { pending: 'Ожидает', paid: 'Оплачен', shipped: 'Отправлен', cancelled: 'Отменён' }; %>
|
||
<% recentOrders.forEach(o => { %>
|
||
<tr>
|
||
<td>#<%= o.id %></td>
|
||
<td><%= o.customer_name %><br><span class="muted"><%= o.user_email %></span></td>
|
||
<td><span class="status status--<%= o.status %>"><%= statusLabels[o.status] || o.status %></span></td>
|
||
<td><%= formatPrice(o.total_cents) %></td>
|
||
<td><%= new Date(o.created_at).toLocaleString('ru-RU') %></td>
|
||
</tr>
|
||
<% }) %>
|
||
</tbody>
|
||
</table>
|
||
<% } %>
|
||
|
||
<%- include('../partials/layout-end') %>
|