Files
minicrm/public/doc.html
2026-02-02 10:24:37 +05:00

227 lines
12 KiB
HTML
Raw 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 rel="stylesheet" href="style.css">
<link rel="stylesheet" href="doc.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
</head>
<body>
<div class="doc-container">
<header>
<div class="header-top">
<h1><i class="fas fa-file-contract"></i> Согласование документов</h1>
<div class="user-info">
<span id="current-user"></span>
<button onclick="window.location.href = '/'" class="btn-back">
<i class="fas fa-arrow-left"></i> Назад к задачам
</button>
</div>
</div>
<nav class="doc-nav">
<button onclick="showDocumentSection('create-document')" class="nav-btn">
<i class="fas fa-plus-circle"></i> Создать документ
</button>
<button onclick="showDocumentSection('my-documents')" class="nav-btn">
<i class="fas fa-folder"></i> Мои документы
</button>
<button onclick="showDocumentSection('approval-documents')" class="nav-btn" id="approval-btn">
<i class="fas fa-check-circle"></i> На согласовании
</button>
<button onclick="logout()" class="btn-logout">
<i class="fas fa-sign-out-alt"></i> Выйти
</button>
</nav>
</header>
<main>
<!-- Создание документа -->
<section id="create-document-section" class="document-section active">
<h2><i class="fas fa-plus-circle"></i> Создать новый документ</h2>
<form id="create-document-form" enctype="multipart/form-data">
<div class="form-row">
<div class="form-group">
<label for="title"><i class="fas fa-heading"></i> Название документа:</label>
<input type="text" id="title" name="title" required placeholder="Введите название документа">
</div>
<div class="form-group">
<label for="document-type"><i class="fas fa-file-alt"></i> Тип документа:</label>
<select id="document-type" name="documentTypeId">
<option value="">Выберите тип документа</option>
</select>
</div>
</div>
<div class="form-group">
<label for="description"><i class="fas fa-align-left"></i> Описание:</label>
<textarea id="description" name="description" rows="3" placeholder="Описание документа"></textarea>
</div>
<div class="form-row">
<div class="form-group">
<label for="due-date"><i class="fas fa-clock"></i> Срок согласования:</label>
<input type="date" id="due-date" name="dueDate">
</div>
</div>
<div class="form-group">
<label for="comment"><i class="fas fa-comment"></i> Комментарий для согласующих:</label>
<textarea id="comment" name="comment" rows="2" placeholder="Комментарий для согласующих"></textarea>
</div>
<div class="form-group">
<label for="files"><i class="fas fa-paperclip"></i> Прикрепить файлы:</label>
<div class="file-upload">
<input type="file" id="files" name="files" multiple>
<label for="files" class="file-upload-label">
<i class="fas fa-cloud-upload-alt"></i> Выберите файлы
</label>
</div>
<div id="file-list"></div>
</div>
<div class="form-info">
<p><i class="fas fa-info-circle"></i> Документ будет отправлен на согласование секретарю</p>
</div>
<button type="submit" class="btn-primary">
<i class="fas fa-check-circle"></i> Отправить на согласование
</button>
</form>
</section>
<!-- Мои документы -->
<section id="my-documents-section" class="document-section">
<div class="section-header">
<h2><i class="fas fa-folder"></i> Мои документы</h2>
<div class="document-filters">
<div class="filter-group">
<label for="search-documents"><i class="fas fa-search"></i> Поиск:</label>
<input type="text" id="search-documents" placeholder="Поиск по названию, номеру...">
</div>
<div class="filter-group">
<label for="document-status-filter"><i class="fas fa-filter"></i> Статус:</label>
<select id="document-status-filter">
<option value="all">Все статусы</option>
<option value="На согласовании">На согласовании</option>
<option value="Согласован">Согласован</option>
<option value="Отказано">Отказано</option>
<option value="Отозван">Отозван</option>
<option value="Завершен">Завершен</option>
</select>
</div>
</div>
</div>
<div id="my-documents-list" class="documents-list">
<div class="loading">Загрузка документов...</div>
</div>
</section>
<!-- Документы на согласование -->
<section id="approval-documents-section" class="document-section">
<div class="section-header">
<h2><i class="fas fa-check-circle"></i> Документы на согласование</h2>
<div class="document-filters">
<div class="filter-group">
<label for="search-approval-documents"><i class="fas fa-search"></i> Поиск:</label>
<input type="text" id="search-approval-documents" placeholder="Поиск по названию, номеру...">
</div>
</div>
</div>
<div id="approval-documents-list" class="documents-list">
<div class="loading">Загрузка документов...</div>
</div>
</section>
</main>
</div>
<!-- Модальное окно согласования -->
<div id="approve-modal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeApproveModal()">&times;</span>
<h3><i class="fas fa-check-circle"></i> Согласование документа</h3>
<form id="approve-form">
<input type="hidden" id="approve-modal-document-id">
<input type="hidden" id="approve-modal-type">
<div class="form-group">
<label for="approve-comment">Комментарий к согласованию:</label>
<textarea id="approve-comment" name="comment" rows="4" placeholder="Ваш комментарий к документу..."></textarea>
<small>Комментарий будет виден всем участникам согласования</small>
</div>
<div class="form-group" id="refusal-reason" style="display: none;">
<label for="refusal-reason-text">Причина отказа:</label>
<textarea id="refusal-reason-text" name="refusalReason" rows="3" placeholder="Укажите причину отказа в согласовании..." required></textarea>
</div>
<div class="modal-buttons">
<button type="submit" class="btn-primary" id="approve-submit-btn">
<i class="fas fa-check"></i> Подтвердить
</button>
<button type="button" class="btn-secondary" onclick="closeApproveModal()">
<i class="fas fa-times"></i> Отмена
</button>
</div>
</form>
</div>
</div>
<script src="auth.js"></script>
<script src="files.js"></script>
<script src="doc.js"></script>
<script>
// Проверка аутентификации для страницы документов
document.addEventListener('DOMContentLoaded', function() {
checkAuth();
});
let currentUser = null;
async function checkAuth() {
try {
const response = await fetch('/api/user');
if (response.ok) {
const data = await response.json();
currentUser = data.user;
showMainInterface();
} else {
window.location.href = '/';
}
} catch (error) {
window.location.href = '/';
}
}
function showMainInterface() {
document.getElementById('current-user').textContent = `Вы вошли как: ${currentUser.name}`;
// Проверяем, является ли пользователь секретарем
const isSecretary = currentUser.groups && currentUser.groups.includes('Секретарь');
// Показываем/скрываем кнопку согласования
const approvalBtn = document.getElementById('approval-btn');
if (approvalBtn) {
if (isSecretary) {
approvalBtn.style.display = 'inline-block';
} else {
approvalBtn.style.display = 'none';
}
}
}
function logout() {
fetch('/api/logout', { method: 'POST' })
.then(() => {
window.location.href = '/';
})
.catch(error => {
console.error('Ошибка выхода:', error);
});
}
</script>
</body>
</html>