// Данные приказов (изначально - пример из задачи) const defaultOrders = [ { id: 1, date: "2026-09-15T12:07", author: "БАКИРОВА А.Н.", branch: "ОДС", title: "«Желі» дивизионы» бірлестігінде штаттық бірліктерді қысқарту туралы/О сокращении штатных единиц в Объединении «Дивизион «Сеть»»", content: `ОБЩИЕ РЕКВИЗИТЫ Срок согласования: 06.10.2026 23:59:59 Количество согласующих: 5 Подтверждающий Руководитель: Камыспаева А.Т. СПИСОК СОГЛАСОВАНИЯ: Камыспаева А.Т., Раимханов Г.Ж., Бимендеев Ж.А., Баимбетов А.К., Черных О.Л. ДОПОЛНИТЕЛЬНЫЕ СОГЛАСУЮЩИЕ: Дуйсенбаева А.Б., Сарсенбекова Дидар Саматовна СОДЕРЖАНИЕ: Во исполнение подпункта 1 пункта 1 решения Правления АО «Казахтелеком» от 14.09.2026 №41/127 «Об оптимизации штатных единиц в ОДС, СФ и ДЦБ», ПРИКАЗЫВАЮ: 1. Сократить следующие штатные единицы ОДС, согласно приложению к приказу... ПОДПИСИ: 15.09.2026 12:32:51: СОГЛАСЕН Бимендеев Ж.А. (Еmployee experiеnсe директор) 15.09.2026 14:35:44: СОГЛАСЕН Камыспаева А.Т. (Бизнес партнер по анализу и вознаграждению C&B) 16.09.2026 08:37:42: СОГЛАСЕН Раимханов Г.Ж. (Директор по эксплуатации)` } ]; // Загрузка данных из localStorage или использование default let orders = JSON.parse(localStorage.getItem('orders')) || defaultOrders; // Сохранение данных function saveOrders() { localStorage.setItem('orders', JSON.stringify(orders)); } // Проверка авторизации function checkAuth() { const isLoggedIn = localStorage.getItem('isLoggedIn'); if (isLoggedIn === 'true') { showMainScreen(); } } // Вход function login() { localStorage.setItem('isLoggedIn', 'true'); showMainScreen(); } // Выход function logout() { localStorage.setItem('isLoggedIn', 'false'); location.reload(); } // Показать главный экран function showMainScreen() { document.getElementById('loginScreen').classList.add('hidden'); document.getElementById('mainScreen').classList.remove('hidden'); renderOrders(); updateStats(); } // Рендер приказов function renderOrders(filterBranch = '', searchQuery = '') { const container = document.getElementById('ordersList'); let filtered = orders; if (filterBranch) { filtered = filtered.filter(o => o.branch === filterBranch); } if (searchQuery) { const q = searchQuery.toLowerCase(); filtered = filtered.filter(o => o.title.toLowerCase().includes(q) || o.author.toLowerCase().includes(q) || o.content.toLowerCase().includes(q) ); } if (filtered.length === 0) { container.innerHTML = '
Приказы не найдены
'; return; } container.innerHTML = filtered.map(order => { const date = new Date(order.date).toLocaleString('ru-RU', { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }); return `
${escapeHtml(order.title)}
${order.branch}
${date} • ${escapeHtml(order.author)}
`; }).join(''); } // Обновление статистики function updateStats() { const stats = { 'Total': orders.length, 'ДРБ': orders.filter(o => o.branch === 'ДРБ').length, 'СФ': orders.filter(o => o.branch === 'СФ').length, 'ДЦБ': orders.filter(o => o.branch === 'ДЦБ').length, 'ОДС': orders.filter(o => o.branch === 'ОДС').length }; document.getElementById('statTotal').textContent = stats['Total']; document.getElementById('statДРБ').textContent = stats['ДРБ']; document.getElementById('statСФ').textContent = stats['СФ']; document.getElementById('statДЦБ').textContent = stats['ДЦБ']; document.getElementById('statОДС').textContent = stats['ОДС']; } // Просмотр приказа function viewOrder(id) { const order = orders.find(o => o.id === id); if (!order) return; const date = new Date(order.date).toLocaleString('ru-RU', { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }); document.getElementById('modalTitle').textContent = order.title; document.getElementById('modalBody').innerHTML = ` `; document.getElementById('orderModal').classList.remove('hidden'); } // Закрыть модальное окно function closeModal() { document.getElementById('orderModal').classList.add('hidden'); } // Добавить приказ function addOrder(orderData) { const newOrder = { id: Date.now(), ...orderData }; orders.unshift(newOrder); saveOrders(); renderOrders(); updateStats(); closeAddModal(); } // Закрыть окно добавления function closeAddModal() { document.getElementById('addModal').classList.add('hidden'); document.getElementById('addOrderForm').reset(); } // Экранирование HTML function escapeHtml(text) { const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } // Инициализация document.addEventListener('DOMContentLoaded', () => { checkAuth(); // Форма входа document.getElementById('loginForm').addEventListener('submit', (e) => { e.preventDefault(); login(); }); // Кнопка выхода document.getElementById('logoutBtn').addEventListener('click', logout); // Фильтр по филиалам document.getElementById('branchFilter').addEventListener('change', (e) => { const searchQuery = document.getElementById('searchInput').value; renderOrders(e.target.value, searchQuery); }); // Поиск document.getElementById('searchInput').addEventListener('input', (e) => { const branchFilter = document.getElementById('branchFilter').value; renderOrders(branchFilter, e.target.value); }); // Добавить приказ document.getElementById('addOrderBtn').addEventListener('click', () => { document.getElementById('addModal').classList.remove('hidden'); }); // Форма добавления приказа document.getElementById('addOrderForm').addEventListener('submit', (e) => { e.preventDefault(); const orderData = { date: document.getElementById('orderDate').value, author: document.getElementById('orderAuthor').value.toUpperCase(), branch: document.getElementById('orderBranch').value, title: document.getElementById('orderTitle').value, content: document.getElementById('orderContent').value }; addOrder(orderData); }); // Закрытие модальных окон по клику на overlay document.getElementById('orderModal').addEventListener('click', (e) => { if (e.target === e.currentTarget) closeModal(); }); document.getElementById('addModal').addEventListener('click', (e) => { if (e.target === e.currentTarget) closeAddModal(); }); // Закрытие по ESC document.addEventListener('keydown', (e) => { if (e.key === 'Escape') { closeModal(); closeAddModal(); } }); });