email and fix

This commit is contained in:
2026-01-26 17:44:28 +05:00
parent 4985b4727b
commit 77122aa9ee
16 changed files with 3531 additions and 2330 deletions

View File

@@ -5,26 +5,29 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>School CRM - Управление задачами</title>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
</head>
<body>
<div id="login-modal" class="modal">
<div class="modal-content">
<h2>Вход в School CRM</h2>
<h2><i class="fas fa-sign-in-alt"></i> Вход в School CRM</h2>
<form id="login-form">
<div class="form-group">
<label for="login">Логин:</label>
<label for="login"><i class="fas fa-user"></i> Логин:</label>
<input type="text" id="login" name="login" required>
</div>
<div class="form-group">
<label for="password">Пароль:</label>
<label for="password"><i class="fas fa-lock"></i> Пароль:</label>
<input type="password" id="password" name="password" required>
</div>
<button type="submit">Войти</button>
<button type="submit" class="btn-primary">
<i class="fas fa-sign-in-alt"></i> Войти
</button>
</form>
<div class="test-users">
<h3>Управление задачами</h3>
<h3><i class="fas fa-users"></i> Управление задачами</h3>
<ul>
<li><strong>@2025 </strong>МАОУ - СОШ № 25</li>
<li><strong><i class="fas fa-school"></i> @2025</strong> МАОУ - СОШ № 25</li>
</ul>
</div>
</div>
@@ -32,32 +35,53 @@
<div class="container">
<header>
<h1>School CRM - Управление задачами</h1>
<div class="user-info">
<span id="current-user"></span>
<button onclick="logout()">Выйти</button>
<div class="header-top">
<h1><i class="fas fa-tasks"></i> School CRM - Управление задачами</h1>
<div class="user-info">
<span id="current-user"></span>
<button onclick="logout()" class="btn-logout">
<i class="fas fa-sign-out-alt"></i> Выйти
</button>
</div>
</div>
<nav>
<button onclick="showSection('tasks')">Задачи</button>
<button onclick="showSection('create-task')">Создать задачу</button>
<button onclick="showTasksWithoutDate()" id="tasks-no-date-btn">Задачи без срока</button>
<button onclick="showKanbanSection()" class="nav-btn">📋 Канбан</button>
<button onclick="showSection('logs')">Лог активности</button>
<button onclick="window.location.href = '/admin'" style="background: linear-gradient(135deg, #e74c3c, #c0392b);">Админ-панель</button>
<button onclick="showSection('tasks')" class="nav-btn">
<i class="fas fa-list"></i> Задачи
</button>
<button onclick="showSection('create-task')" class="nav-btn">
<i class="fas fa-plus-circle"></i> Создать задачу
</button>
<button onclick="showTasksWithoutDate()" class="nav-btn" id="tasks-no-date-btn">
<i class="fas fa-clock"></i> Задачи без срока
</button>
<button onclick="showKanbanSection()" class="nav-btn">
<i class="fas fa-columns"></i> Канбан
</button>
<button onclick="showSection('profile')" class="nav-btn" id="profile-btn">
<i class="fas fa-user-circle"></i> Личный кабинет
</button>
<!--
<button onclick="showSection('logs')" class="nav-btn">
<i class="fas fa-history"></i> Лог активности
</button>
<button onclick="window.location.href = '/admin'" class="nav-btn btn-admin">
<i class="fas fa-cog"></i> Админ-панель
</button>
-->
</nav>
</header>
<main>
<section id="tasks-section" class="section">
<h2>Все задачи</h2>
<h2><i class="fas fa-tasks"></i> Все задачи</h2>
<div id="tasks-controls">
<div class="filters">
<div class="filter-group">
<label for="search-tasks">Поиск:</label>
<label for="search-tasks"><i class="fas fa-search"></i> Поиск:</label>
<input type="text" id="search-tasks" placeholder="Поиск по названию и описанию..." oninput="loadTasks()">
</div>
<div class="filter-group">
<label for="status-filter">Статус:</label>
<label for="status-filter"><i class="fas fa-filter"></i> Статус:</label>
<select id="status-filter" onchange="loadTasks()">
<option value="active,in_progress,assigned,overdue,rework">Все активные</option>
<option value="all">Все статусы</option>
@@ -70,19 +94,19 @@
</select>
</div>
<div class="filter-group">
<label for="creator-filter">Заказчик:</label>
<label for="creator-filter"><i class="fas fa-user-tie"></i> Заказчик:</label>
<select id="creator-filter" onchange="loadTasks()">
<option value="">Все заказчики</option>
</select>
</div>
<div class="filter-group">
<label for="assignee-filter">Исполнитель:</label>
<label for="assignee-filter"><i class="fas fa-user-check"></i> Исполнитель:</label>
<select id="assignee-filter" onchange="loadTasks()">
<option value="">Все исполнители</option>
</select>
</div>
<div class="filter-group">
<label for="deadline-filter">Срок выполнения:</label>
<label for="deadline-filter"><i class="fas fa-calendar-times"></i> Срок выполнения:</label>
<select id="deadline-filter" onchange="loadTasks()">
<option value="">Все сроки</option>
<option value="48h">Менее 48 часов</option>
@@ -92,59 +116,122 @@
</div>
<label class="show-deleted-label" style="display: none;">
<input type="checkbox" id="show-deleted" onchange="loadTasks()">
Показать удаленные задачи
<i class="fas fa-trash"></i> Показать удаленные задачи
</label>
</div>
<div id="tasks-list"></div>
</section>
<section id="create-task-section" class="section">
<h2>Создать новую задачу</h2>
<h2><i class="fas fa-plus-circle"></i> Создать новую задачу</h2>
<form id="create-task-form" enctype="multipart/form-data">
<div class="form-group">
<label for="title">Название задачи:</label>
<label for="title"><i class="fas fa-heading"></i> Название задачи:</label>
<input type="text" id="title" name="title" required>
</div>
<div class="form-group">
<label for="description">Описание:</label>
<label for="description"><i class="fas fa-align-left"></i> Описание:</label>
<textarea id="description" name="description" rows="4"></textarea>
</div>
<div class="form-group">
<label for="due-date">Дата и время выполнения:</label>
<label for="due-date"><i class="fas fa-calendar-alt"></i> Дата и время выполнения:</label>
<input type="datetime-local" id="due-date" name="dueDate" required>
</div>
<div class="form-group">
<label>Исполнители:</label>
<label><i class="fas fa-users"></i> Исполнители:</label>
<div class="user-search">
<input type="text" id="user-search" placeholder="Поиск исполнителей..." oninput="filterUsers()">
<i class="fas fa-search"></i>
</div>
<div id="users-checklist" class="checkbox-group"></div>
</div>
<div class="form-group">
<label for="files">Прикрепить файлы (до 15 файлов, максимум 300MB):</label>
<input type="file" id="files" name="files" multiple>
<label for="files"><i class="fas fa-paperclip"></i> Прикрепить файлы (до 15 файлов, максимум 300MB):</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>
<button type="submit">Создать задачу</button>
<button type="submit" class="btn-primary">
<i class="fas fa-check-circle"></i> Создать задачу
</button>
</form>
</section>
<section id="logs-section" class="section">
<h2>Лог активности</h2>
<h2><i class="fas fa-history"></i> Лог активности</h2>
<div id="logs-list"></div>
</section>
<section id="profile-section" class="section">
<h2><i class="fas fa-user-circle"></i> Личный кабинет</h2>
<div class="notification-settings">
<h3><i class="fas fa-bell"></i> Настройки уведомлений</h3>
<form id="notification-settings-form">
<div class="form-group">
<label class="checkbox-label">
<input type="checkbox" id="email-notifications" name="email_notifications">
<span><i class="fas fa-envelope"></i> Email уведомления</span>
</label>
</div>
<div class="form-group">
<label for="notification-email"><i class="fas fa-at"></i> Email для уведомлений:</label>
<div class="input-with-icon">
<i class="fas fa-envelope"></i>
<input type="email" id="notification-email" name="notification_email"
placeholder="Введите email для уведомлений">
</div>
<small>Если не указано, будет использован email из профиля</small>
</div>
<div class="form-group">
<label class="checkbox-label">
<input type="checkbox" id="telegram-notifications" name="telegram_notifications" disabled>
<span><i class="fab fa-telegram"></i> Telegram уведомления (скоро)</span>
</label>
</div>
<div class="form-group">
<label class="checkbox-label">
<input type="checkbox" id="vk-notifications" name="vk_notifications" disabled>
<span><i class="fab fa-vk"></i> ВКонтакте уведомления (скоро)</span>
</label>
</div>
<div class="form-group"><label class="checkbox-label">
<input type="checkbox" id="sberbank-notifications" name="sberbank_notifications" disabled>
<span><i class="fas fa-university"></i> Сбербанк Онлайн уведомления (скоро)</span>
</label></div>
<div class="form-group"><label class="checkbox-label">
<input type="checkbox" id="yandex-notifications" name="yandex_notifications" disabled>
<span><i class="fab fa-yandex"></i> Яндекс уведомления (скоро)</span>
</label></div>
<div class="form-group"><label class="checkbox-label">
<input type="checkbox" id="gosuslugi-notifications" name="gosuslugi_notifications" disabled>
<span><i class="fas fa-passport"></i> Госуслуги уведомления (скоро)</span>
</label></div>
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i> Сохранить настройки
</button>
</form>
</div>
</section>
</main>
</div>
<!-- Модальные окна остаются без изменений -->
<div id="edit-task-modal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeEditModal()">&times;</span>
<h3>Редактировать задачу</h3>
<h3><i class="fas fa-edit"></i> Редактировать задачу</h3>
<form id="edit-task-form" enctype="multipart/form-data">
<input type="hidden" id="edit-task-id">
<div class="form-group">
@@ -176,7 +263,9 @@
<div id="edit-file-list"></div>
</div>
<button type="submit">Сохранить изменения</button>
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i> Сохранить изменения
</button>
</form>
</div>
</div>
@@ -184,7 +273,7 @@
<div id="copy-task-modal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeCopyModal()">&times;</span>
<h3>Создать копию задачи</h3>
<h3><i class="fas fa-copy"></i> Создать копию задачи</h3>
<form id="copy-task-form">
<input type="hidden" id="copy-task-id">
@@ -200,7 +289,9 @@
</div>
<div id="copy-users-checklist" class="checkbox-group"></div>
</div>
<button type="submit">Создать копию</button>
<button type="submit" class="btn-primary">
<i class="fas fa-copy"></i> Создать копию
</button>
</form>
</div>
</div>
@@ -208,7 +299,7 @@
<div id="edit-assignment-modal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeEditAssignmentModal()">&times;</span>
<h3>Редактировать сроки исполнителя</h3>
<h3><i class="fas fa-clock"></i> Редактировать сроки исполнителя</h3>
<form id="edit-assignment-form">
<input type="hidden" id="edit-assignment-task-id">
<input type="hidden" id="edit-assignment-user-id">
@@ -216,7 +307,9 @@
<label for="edit-assignment-due-date">Дата и время выполнения:</label>
<input type="datetime-local" id="edit-assignment-due-date" name="dueDate" required>
</div>
<button type="submit">Сохранить сроки</button>
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i> Сохранить сроки
</button>
</form>
</div>
</div>
@@ -224,27 +317,53 @@
<div id="rework-task-modal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeReworkModal()">&times;</span>
<h3>Вернуть задачу на доработку</h3>
<h3><i class="fas fa-redo"></i> Вернуть задачу на доработку</h3>
<form id="rework-task-form">
<input type="hidden" id="rework-task-id">
<div class="form-group">
<label for="rework-comment">Комментарий к доработке:</label>
<textarea id="rework-comment" name="comment" rows="4" placeholder="Укажите, что нужно исправить..." required></textarea>
</div>
<button type="submit">Вернуть на доработку</button>
<button type="submit" class="btn-warning">
<i class="fas fa-redo"></i> Вернуть на доработку
</button>
</form>
</div>
</div>
<div id="kanban-section" class="section kanban-section">
<div class="section-header">
<h2>📋 Канбан-доска</h2>
<p>Перетаскивайте задачи между колонками для изменения статуса</p>
<div id="kanban-section" class="section kanban-section">
<div class="section-header">
<h2><i class="fas fa-columns"></i> Канбан-доска</h2>
<p>Перетаскивайте задачи между колонками для изменения статуса</p>
<div class="kanban-controls">
<div class="kanban-filters">
<select id="kanban-filter" onchange="loadKanbanBoard()">
<option value="all">Все задачи</option>
<option value="created">Мои задачи (я создал)</option>
<option value="assigned">Назначенные мне</option>
</select>
<select id="kanban-days" onchange="loadKanbanBoard()">
<option value="7">7 дней</option>
<option value="14">14 дней</option>
<option value="30">30 дней</option>
<option value="365">Все задачи</option>
</select>
</div>
</div>
</div>
<div id="kanban-board" class="kanban-board">
<div class="loading">Загрузка Канбан-доски...</div>
</div>
</div>
<div id="kanban-board" class="kanban-board">
<div class="loading">Загрузка Канбан-доски...</div>
</div>
</div>
<script src="script.js"></script>
<script src="auth.js"></script>
<script src="users.js"></script>
<script src="tasks.js"></script>
<script src="kanban.js"></script>
<script src="files.js"></script>
<script src="profile.js"></script>
<script src="ui.js"></script>
<script src="main.js"></script>
</body>
</html>