Files
sklad_legacy/catalog.html
cyrteL e572c34e99 Add files via upload
v1.3.0
2025-07-28 18:24:57 +03:00

439 lines
23 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Каталог товаров - Склад-Менеджер</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
</head>
<body>
<!-- Главная навигационная панель -->
<nav class="navbar navbar-expand-lg navbar-light bg-white border-bottom">
<div class="container">
<a class="navbar-brand" href="index.html">
<i class="fas fa-warehouse me-2 text-primary"></i>
<span class="fw-bold">Склад-Менеджер</span>
</a>
<!-- Поиск в шапке -->
<div class="navbar-search me-auto ms-4">
<div class="input-group" style="width: 400px;">
<input type="text" class="form-control" placeholder="Поиск позиций..." id="headerSearch">
<button class="btn btn-primary" type="button">
<i class="fas fa-search"></i>
</button>
</div>
</div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link" href="index.html">
<i class="fas fa-home me-1"></i>Главная
</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle active" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="fas fa-boxes me-1"></i>Каталог
</a>
<ul class="dropdown-menu" id="catalogCategoriesDropdown">
<li><a class="dropdown-item" href="catalog.html">Все позиции</a></li>
<li><hr class="dropdown-divider"></li>
<!-- Категории будут загружены динамически -->
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="history.html">
<i class="fas fa-history me-1"></i>История
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="search.html">
<i class="fas fa-search me-1"></i>Поиск
</a>
</li>
<li class="nav-item dropdown" id="adminDropdown" style="display: none;">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
<i class="fas fa-cog me-1"></i>Администрирование
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="admin/users.html">Управление пользователями</a></li>
<li><a class="dropdown-item" href="admin/categories.html">Категории позиций</a></li>
<li><a class="dropdown-item" href="admin/reports.html">Отчеты</a></li>
</ul>
</li>
<li class="nav-item dropdown" id="profileDropdown" style="display: none;">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
<i class="fas fa-user me-1"></i>Профиль
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="profile.html">Мой профиль</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#" id="logoutBtn">Выйти</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<!-- Панель категорий -->
<div class="categories-bar bg-light border-bottom">
<div class="container">
<div class="row">
<div class="col-12">
<ul class="nav nav-pills categories-nav" id="categoriesNav">
<li class="nav-item">
<a class="nav-link" href="index.html">
<i class="fas fa-home me-1"></i>Главная
</a>
</li>
<!-- Категории будут загружены динамически -->
</ul>
</div>
</div>
</div>
</div>
<!-- Основной контент -->
<main class="container mt-4">
<!-- Заголовок страницы -->
<div class="row mb-4">
<div class="col-12">
<div class="d-flex justify-content-between align-items-center">
<div>
<h1 class="mb-1">
<i class="fas fa-boxes me-2"></i>
Каталог позиций
</h1>
<p class="text-muted mb-0">Управление позициями склада</p>
</div>
<div class="d-flex gap-2">
<button class="btn btn-outline-primary" id="exportBtn" data-role="authenticated">
<i class="fas fa-download me-1"></i>Экспорт
</button>
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addItemModal" id="addItemBtn"
data-role="manager" style="display: none;" title="Требуются права администратора или менеджера">
<i class="fas fa-plus me-1"></i>Добавить позицию
</button>
</div>
</div>
</div>
</div>
<!-- Фильтры и поиск -->
<div class="catalog-filters">
<div class="row">
<div class="col-md-4 mb-3">
<label for="searchInput" class="form-label">Поиск позиций</label>
<div class="input-group">
<span class="input-group-text">
<i class="fas fa-search"></i>
</span>
<input type="text" class="form-control" id="searchInput" placeholder="Название, описание или штрих-код">
</div>
</div>
<div class="col-md-3 mb-3">
<label for="categoryFilter" class="form-label">Категория</label>
<select class="form-select" id="categoryFilter">
<option value="">Все категории</option>
</select>
</div>
<div class="col-md-2 mb-3">
<label for="priceMin" class="form-label">Цена от</label>
<input type="number" class="form-control" id="priceMin" placeholder="0">
</div>
<div class="col-md-2 mb-3">
<label for="priceMax" class="form-label">Цена до</label>
<input type="number" class="form-control" id="priceMax" placeholder="∞">
</div>
<div class="col-md-1 mb-3">
<label class="form-label">&nbsp;</label>
<div class="d-grid">
<button class="btn btn-outline-secondary" id="clearFiltersBtn">
<i class="fas fa-times"></i>
</button>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="inStockFilter">
<label class="form-check-label" for="inStockFilter">
Только в наличии
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="lowStockFilter">
<label class="form-check-label" for="lowStockFilter">
Заканчивается
</label>
</div>
</div>
</div>
</div>
<!-- Статистика каталога -->
<div class="row mb-4">
<div class="col-md-3 mb-3">
<div class="card bg-primary text-white">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h4 class="card-title" id="totalItemsCount">0</h4>
<p class="card-text">Всего позиций</p>
</div>
<i class="fas fa-boxes fa-2x"></i>
</div>
</div>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="card bg-success text-white">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h4 class="card-title" id="inStockCount">0</h4>
<p class="card-text">В наличии</p>
</div>
<i class="fas fa-check-circle fa-2x"></i>
</div>
</div>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="card bg-warning text-white">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h4 class="card-title" id="lowStockCount">0</h4>
<p class="card-text">Заканчивается</p>
</div>
<i class="fas fa-exclamation-triangle fa-2x"></i>
</div>
</div>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="card bg-info text-white">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h4 class="card-title" id="categoriesCount">0</h4>
<p class="card-text">Категорий</p>
</div>
<i class="fas fa-tags fa-2x"></i>
</div>
</div>
</div>
</div>
</div>
<!-- Переключатель вида -->
<div class="row mb-3">
<div class="col-12">
<div class="btn-group" role="group">
<input type="radio" class="btn-check" name="viewMode" id="gridView" checked>
<label class="btn btn-outline-primary" for="gridView">
<i class="fas fa-th-large me-1"></i>Сетка
</label>
<input type="radio" class="btn-check" name="viewMode" id="listView">
<label class="btn btn-outline-primary" for="listView">
<i class="fas fa-list me-1"></i>Список
</label>
</div>
</div>
</div>
<!-- Каталог товаров -->
<div class="row" id="catalogContainer">
<!-- Товары будут загружены через JavaScript -->
</div>
<!-- Пагинация -->
<div class="row mt-4">
<div class="col-12">
<nav aria-label="Навигация по страницам">
<ul class="pagination justify-content-center" id="pagination">
<!-- Пагинация будет создана через JavaScript -->
</ul>
</nav>
</div>
</div>
</main>
<!-- Модальное окно добавления товара -->
<div class="modal fade" id="addItemModal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
<i class="fas fa-plus-circle me-2"></i>
Добавить новый товар
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<form id="addItemForm">
<div class="row">
<div class="col-md-6 mb-3">
<label for="itemName" class="form-label">Название товара *</label>
<input type="text" class="form-control" id="itemName" required>
</div>
<div class="col-md-6 mb-3">
<label for="itemCategory" class="form-label">Категория *</label>
<select class="form-select" id="itemCategory" required>
<option value="">Выберите категорию</option>
</select>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="itemPrice" class="form-label">Цена (₽) *</label>
<input type="number" class="form-control" id="itemPrice" min="0" step="0.01" required>
</div>
<div class="col-md-6 mb-3">
<label for="itemQuantity" class="form-label">Количество *</label>
<input type="number" class="form-control" id="itemQuantity" min="0" required>
</div>
</div>
<div class="mb-3">
<label for="itemDescription" class="form-label">Описание</label>
<textarea class="form-control" id="itemDescription" rows="3"></textarea>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="itemBarcode" class="form-label">Штрих-код</label>
<input type="text" class="form-control" id="itemBarcode">
</div>
<div class="col-md-6 mb-3">
<label for="itemLocation" class="form-label">Местоположение</label>
<input type="text" class="form-control" id="itemLocation" placeholder="Стеллаж A-1">
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="itemSupplier" class="form-label">Поставщик</label>
<input type="text" class="form-control" id="itemSupplier">
</div>
<div class="col-md-6 mb-3">
<label for="itemMinQuantity" class="form-label">Минимальный запас</label>
<input type="number" class="form-control" id="itemMinQuantity" min="0">
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Отмена</button>
<button type="button" class="btn btn-primary" id="saveItemBtn">
<i class="fas fa-save me-1"></i>Сохранить
</button>
</div>
</div>
</div>
</div>
<!-- Модальное окно редактирования товара -->
<div class="modal fade" id="editItemModal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
<i class="fas fa-edit me-2"></i>
Редактировать товар
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<form id="editItemForm">
<input type="hidden" id="editItemId">
<div class="row">
<div class="col-md-6 mb-3">
<label for="editItemName" class="form-label">Название товара *</label>
<input type="text" class="form-control" id="editItemName" required>
</div>
<div class="col-md-6 mb-3">
<label for="editItemCategory" class="form-label">Категория *</label>
<select class="form-select" id="editItemCategory" required>
<option value="">Выберите категорию</option>
</select>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="editItemPrice" class="form-label">Цена (₽) *</label>
<input type="number" class="form-control" id="editItemPrice" min="0" step="0.01" required>
</div>
<div class="col-md-6 mb-3">
<label for="editItemQuantity" class="form-label">Количество *</label>
<input type="number" class="form-control" id="editItemQuantity" min="0" required>
</div>
</div>
<div class="mb-3">
<label for="editItemDescription" class="form-label">Описание</label>
<textarea class="form-control" id="editItemDescription" rows="3"></textarea>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="editItemBarcode" class="form-label">Штрих-код</label>
<input type="text" class="form-control" id="editItemBarcode">
</div>
<div class="col-md-6 mb-3">
<label for="editItemLocation" class="form-label">Местоположение</label>
<input type="text" class="form-control" id="editItemLocation">
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="editItemSupplier" class="form-label">Поставщик</label>
<input type="text" class="form-control" id="editItemSupplier">
</div>
<div class="col-md-6 mb-3">
<label for="editItemMinQuantity" class="form-label">Минимальный запас</label>
<input type="number" class="form-control" id="editItemMinQuantity" min="0">
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Отмена</button>
<button type="button" class="btn btn-primary" id="updateItemBtn">
<i class="fas fa-save me-1"></i>Обновить
</button>
</div>
</div>
</div>
</div>
<!-- Подвал -->
<footer class="bg-dark text-white mt-5 py-4">
<div class="container">
<div class="row">
<div class="col-md-6">
<h5>Система управления складом</h5>
<p class="mb-0">Эффективное управление товарными запасами</p>
</div>
<div class="col-md-6 text-md-end">
<p class="mb-0">&copy; 2025 Склад-Менеджер. Все права защищены.</p>
</div>
</div>
</div>
</footer>
<!-- Скрипты -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="js/auth.js"></script>
<script src="js/warehouse.js"></script>
<script src="js/catalog.js"></script>
</body>
</html>