// doc.js - Согласование документов document.addEventListener('DOMContentLoaded', function() { if (window.location.pathname === '/doc') { loadDocumentTypes(); setupDocumentForm(); loadMyDocuments(); setupDocumentFilters(); } }); let documentTypes = []; let allDocuments = []; let filteredDocuments = []; async function loadDocumentTypes() { try { const response = await fetch('/api/document-types'); documentTypes = await response.json(); populateDocumentTypeSelect(); } catch (error) { console.error('Ошибка загрузки типов документов:', error); } } function populateDocumentTypeSelect() { const select = document.getElementById('document-type'); if (!select) return; select.innerHTML = ''; documentTypes.forEach(type => { const option = document.createElement('option'); option.value = type.id; option.textContent = type.name; select.appendChild(option); }); } function setupDocumentForm() { const form = document.getElementById('create-document-form'); if (!form) return; form.addEventListener('submit', createDocument); // Устанавливаем текущую дату для даты документа const today = new Date().toISOString().split('T')[0]; const documentDateInput = document.getElementById('document-date'); if (documentDateInput) { documentDateInput.value = today; } // Устанавливаем дату выполнения (по умолчанию через 7 дней) const dueDate = new Date(); dueDate.setDate(dueDate.getDate() + 7); const dueDateInput = document.getElementById('due-date'); if (dueDateInput) { dueDateInput.value = dueDate.toISOString().split('T')[0]; } } async function createDocument(event) { event.preventDefault(); if (!currentUser) { alert('Требуется аутентификация'); return; } const formData = new FormData(); // Собираем данные формы const title = document.getElementById('title').value; const description = document.getElementById('description').value; const documentTypeId = document.getElementById('document-type').value; const documentNumber = document.getElementById('document-number').value; const documentDate = document.getElementById('document-date').value; const pagesCount = document.getElementById('pages-count').value; const urgencyLevel = document.getElementById('urgency-level').value; const dueDate = document.getElementById('due-date').value; const comment = document.getElementById('comment').value; if (!title || title.trim() === '') { alert('Название документа обязательно'); return; } formData.append('title', title); formData.append('description', description || ''); formData.append('dueDate', dueDate || ''); formData.append('documentTypeId', documentTypeId || ''); formData.append('documentNumber', documentNumber || ''); formData.append('documentDate', documentDate || ''); formData.append('pagesCount', pagesCount || ''); formData.append('urgencyLevel', urgencyLevel || 'normal'); formData.append('comment', comment || ''); // Добавляем файлы const files = document.getElementById('files').files; for (let i = 0; i < files.length; i++) { formData.append('files', files[i]); } try { const response = await fetch('/api/documents', { method: 'POST', body: formData }); if (response.ok) { const result = await response.json(); alert(result.message || 'Документ успешно создан и отправлен на согласование!'); // Сбрасываем форму document.getElementById('create-document-form').reset(); document.getElementById('file-list').innerHTML = ''; // Загружаем мои документы loadMyDocuments(); // Возвращаемся к списку документов showDocumentSection('my-documents'); } else { const error = await response.json(); alert(error.error || 'Ошибка создания документа'); } } catch (error) { console.error('Ошибка:', error); alert('Ошибка создания документа'); } } async function loadMyDocuments() { try { const response = await fetch('/api/documents/my'); allDocuments = await response.json(); filteredDocuments = [...allDocuments]; renderMyDocuments(); } catch (error) { console.error('Ошибка загрузки документов:', error); document.getElementById('my-documents-list').innerHTML = '