Localbase / script.js
Aleksmorshen's picture
Update script.js
67d65b7 verified
raw
history blame
7.34 kB
document.addEventListener('DOMContentLoaded', function () {
const productForm = document.getElementById('productForm');
const productTable = document.getElementById('productTable').getElementsByTagName('tbody')[0];
const searchInput = document.getElementById('searchInput');
const cartTable = document.getElementById('cartTable').getElementsByTagName('tbody')[0];
const totalSoldElement = document.getElementById('totalSold');
const totalRevenueElement = document.getElementById('totalRevenue');
const totalProfitElement = document.getElementById('totalProfit');
let totalSold = 0; // Общее количество проданных товаров
let totalRevenue = 0; // Общая выручка
let totalProfit = 0; // Общая прибыль
let cart = []; // Корзина
// Загрузка данных из localStorage при загрузке страницы
loadProducts();
loadStats();
loadCart();
// Обработка добавления товара
productForm.addEventListener('submit', function (e) {
e.preventDefault();
const productName = document.getElementById('productName').value;
const purchasePrice = parseFloat(document.getElementById('purchasePrice').value);
const salePrice = parseFloat(document.getElementById('salePrice').value);
const quantity = parseInt(document.getElementById('quantity').value);
const itemsPerPack = parseInt(document.getElementById('itemsPerPack').value);
if (productName && !isNaN(purchasePrice) && !isNaN(salePrice) && !isNaN(quantity) && !isNaN(itemsPerPack)) {
addProduct(productName, purchasePrice, salePrice, quantity, itemsPerPack);
productForm.reset(); // Очистка формы после добавления
} else {
alert('Пожалуйста, заполните все поля корректно.');
}
});
// Поиск по товарам
searchInput.addEventListener('input', function () {
const searchTerm = searchInput.value.toLowerCase();
const rows = productTable.getElementsByTagName('tr');
for (let row of rows) {
const name = row.getElementsByTagName('td')[0]?.textContent.toLowerCase();
if (name) {
row.style.display = name.includes(searchTerm) ? '' : 'none';
}
}
});
// Функция добавления товара
function addProduct(name, purchasePrice, salePrice, quantity, itemsPerPack) {
const product = {
id: Date.now(), // Уникальный ID на основе времени
name,
purchasePrice,
salePrice,
quantity,
itemsPerPack
};
// Получаем текущие товары из localStorage
let products = JSON.parse(localStorage.getItem('products')) || [];
products.push(product); // Добавляем новый товар
localStorage.setItem('products', JSON.stringify(products)); // Сохраняем в localStorage
// Добавляем товар в таблицу
addProductToTable(product);
}
// Функция добавления товара в таблицу
function addProductToTable(product) {
const row = productTable.insertRow();
row.setAttribute('data-id', product.id);
row.innerHTML = `
<td>${product.name}</td>
<td>${product.purchasePrice}</td>
<td>${product.salePrice}</td>
<td>${product.quantity}</td>
<td>${product.itemsPerPack}</td>
<td class="actions">
<input type="number" min="1" max="${product.quantity}" class="quantity-input" placeholder="Количество">
<button class="add-to-cart-btn" onclick="addToCart(${product.id})">Добавить в корзину</button>
<button class="add-stock-btn" onclick="addStock(${product.id})">Приход</button>
<button class="delete-btn" onclick="deleteProduct(${product.id})">Удалить</button>
</td>
`;
}
// Функция загрузки товаров из localStorage
function loadProducts() {
const products = JSON.parse(localStorage.getItem('products')) || [];
productTable.innerHTML = ''; // Очищаем таблицу перед загрузкой
products.forEach(product => addProductToTable(product));
}
// Функция загрузки статистики из localStorage
function loadStats() {
const stats = JSON.parse(localStorage.getItem('stats')) || { totalSold: 0, totalRevenue: 0, totalProfit: 0 };
totalSold = stats.totalSold;
totalRevenue = stats.totalRevenue;
totalProfit = stats.totalProfit;
updateStatsDisplay();
}
// Функция загрузки корзины из localStorage
function loadCart() {
cart = JSON.parse(localStorage.getItem('cart')) || [];
updateCartDisplay();
}
// Функция обновления отображения статистики
function updateStatsDisplay() {
totalSoldElement.textContent = totalSold;
totalRevenueElement.textContent = totalRevenue.toFixed(2);
totalProfitElement.textContent = totalProfit.toFixed(2);
}
// Функция обновления отображения корзины
function updateCartDisplay() {
cartTable.innerHTML = ''; // Очищаем корзину перед обновлением
cart.forEach(item => {
const row = cartTable.insertRow();
row.innerHTML = `
<td>${item.name}</td>
<td>${item.quantity}</td>
<td>${item.salePrice}</td>
<td>${item.quantity * item.salePrice}</td>
<td><button class="delete-btn" onclick="removeFromCart(${item.id})">Удалить</button></td>
`;
});
}
// Функция добавления товара в корзину
window.addToCart = function (productId) {
const quantityInput = document.querySelector(`tr[data-id="${productId}"] .quantity-input`);
const quantity = parseInt(quantityInput.value);
if (quantity && quantity > 0) {
const products = JSON.parse(localStorage.getItem('products')) || [];
const product = products.find(p => p.id === productId);
if (product && product.quantity >= quantity) {
const cartItem = cart.find(item => item.id === productId);
if (cartItem) {
cartItem.quantity += quantity;
} else {
cart.push({
id: productId,
name: product.name,
salePrice: product.salePrice,
purchasePrice: product.purchasePrice,
quantity: quantity
});
}
localStorage.setItem('cart', JSON.stringify(cart));
updateCartDisplay();
} else {
alert('Недостаточно т