склади и инструмент готовы

This commit is contained in:
2025-12-07 19:36:28 +03:00
parent 54bf21d52d
commit 65a3bc1671
65 changed files with 3485 additions and 115 deletions
+80
View File
@@ -0,0 +1,80 @@
{% extends "layout.html" %}
{% block head %}
{{ super() }}
<link rel="stylesheet" href="{{ getUrl('static', path='css/user.css') }}">
<link rel="stylesheet" href="{{ getUrl('static', path='css/index.css') }}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.4/css/lightbox.min.css">
{% endblock %}
{% block body %}
<!-- Заголовок с современным дизайном -->
<header class="glass-header py-3 mb-4 flex-fill">
<div class="container-xxl">
<div class="d-flex flex-column flex-md-row align-items-md-center justify-content-between">
<!-- Заголовок слева -->
<div class="mb-3 mb-md-0 animate-fade-up">
<div class="d-flex align-items-center">
<img src="{{ getUrl('static', path='images/logo.png') }}" alt="Toolbox" class="me-2 rounded"
width="70">
<div>
<h1 class="h3 fw-bold mb-1">Toolbox</h1>
<p class="text-muted mb-0 opacity-85">
<i class="bi bi-cloud-check me-1"></i>
Онлайн-сервис для управления инструментами и расходниками
</p>
</div>
</div>
</div>
<!-- Информация о клиенте справа -->
<div class="animate-fade-up" style="animation-delay: 0.2s">
<div class="client-card d-inline-block">
<div class="d-flex align-items-center gap-3">
<!-- Аватар с индикатором активности -->
<div class="position-relative clickable">
<img src="" alt="Загрузка..." class="client-avatar">
<span
class="position-absolute bottom-0 end-0 bg-success border border-2 border-white rounded-circle p-1"></span>
</div>
<!-- Информация -->
<div class="me-3">
<h6 class="client-name mb-1">Загрузка...</h6>
<div class="d-flex align-items-center">
<span
class="badge bg-primary bg-opacity-10 text-primary fs-7 px-2 py-1 me-2 client-role">
<i class="bi bi-shield-check me-1"></i>
Загрузка...
</span>
</div>
</div>
<!-- Кнопка выхода -->
<div class="dropdown">
<button class="logout-btn btn d-flex align-items-center" type="button" id="clientLogoutBtn">
<i class="bi bi-box-arrow-right me-2"></i>
<span class="d-none d-md-inline">Выйти</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
<!-- Основной контент -->
<main class="container-xxl" id="mainContent">
</main>
{% endblock %}
{% block scripts %}
{{ super() }}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.4/js/lightbox.min.js"></script>
<script type="module" src="{{ getUrl('static', path='js/user.js') }}"></script>
<script type="module" src="{{ getUrl('static', path='js/index.js') }}"></script>
{% endblock %}
+37
View File
@@ -0,0 +1,37 @@
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<meta name="app-secret" content={{content.app_secret}}>
<title>{% block title %}Toolbox{% endblock %}</title>
<link rel="icon" href="{{ getUrl('static', path='favicon.ico') }}">
<link rel="stylesheet" href="{{ getUrl('static', path='css/layout.css') }}">
<link rel="preconnect" href="https://cdn.jsdelivr.net">
<!-- Bootstrap 5 CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
<!-- Bootstrap Icons -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css">
{% block head %}{% endblock %}
</head>
<body>
{% block body %}{% endblock %}
<!-- Bootstrap 5 JS Bundle -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"
integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI"
crossorigin="anonymous"></script>
<script type="module" src="{{ getUrl('static', path='js/crypto.js') }}"></script>
{% block scripts %}{% endblock %}
</body>
</html>
+49
View File
@@ -0,0 +1,49 @@
{% extends "layout.html" %}
{% block title %}Вход — Toolbox{% endblock %}
{% block head %}
<link rel="stylesheet" href="{{ getUrl('static', path='css/login.css') }}">
<meta name="userAuth-endpoint" content="{{ getUrl('Authentication') }}">
{% endblock %}
{% block body %}
<main class="login-page d-flex justify-content-center align-items-center">
<div class="login-card">
<header class="login-header">
<img src="{{ getUrl('static', path='favicon.ico') }}" alt="Toolbox" class="brand-icon">
<h1>Toolbox — Вход</h1>
</header>
<form id="loginForm" class="login-form" autocomplete="on">
<div class="form-group">
<label for="loginInput">Логин</label>
<input id="loginInput" name="login" type="text" class="form-control" required autofocus>
</div>
<div class="form-group">
<label for="passwordInput">Пароль</label>
<input id="passwordInput" name="password" type="password" class="form-control" required>
</div>
<div id="formError" class="form-error" aria-live="polite" hidden></div>
<div class="form-actions">
<button id="submitBtn" class="btn btn-primary w-100" type="submit">Войти</button>
</div>
</form>
<footer class="login-footer">
<small>Онлайн-сервис учета инструментов</small>
</footer>
</div>
</main>
{% endblock %}
{% block scripts %}
<!-- Подключаем только модули, разделённые по задачам -->
<script type="module" src="{{ getUrl('static', path='js/cookies.js') }}"></script>
<script type="module" src="{{ getUrl('static', path='js/api.js') }}"></script>
<script type="module" src="{{ getUrl('static', path='js/auth.js') }}"></script>
{% endblock %}