Files
minicrm/public/index.html
2026-02-03 13:32:24 +05:00

380 lines
22 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>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><i class="fas fa-sign-in-alt"></i> Вход в School CRM</h2>
<form id="login-form">
<div class="form-group">
<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"><i class="fas fa-lock"></i> Пароль:</label>
<input type="password" id="password" name="password" required>
</div>
<button type="submit" class="btn-primary">
<i class="fas fa-sign-in-alt"></i> Войти
</button>
</form>
<div class="test-users">
<h3><i class="fas fa-users"></i> Управление задачами 0.8</h3>
<ul>
<li><strong><i class="fas fa-school"></i> @2025</strong> МАОУ - СОШ № 25</li>
</ul>
</div>
</div>
</div>
<div class="container">
<header>
<div class="header-top">
<h1><i class="fas fa-tasks"></i> School CRM - Управление задачами</h1>
<div class="user-info">
<span id="current-user"></span>
</div>
</div>
<nav>
<button onclick="window.location.href = '/'" class="nav-btn tasks"><i class="fas fa-cog"></i> Главная</button>
<button onclick="showSection('tasks')" class="nav-btn tasks"><i class="fas fa-list"></i> Задачи</button>
<button onclick="showSection('create-task')" class="nav-btn create"><i class="fas fa-plus-circle"></i> Создать задачу</button>
<button onclick="showKanbanSection()" class="nav-btn kanban"><i class="fas fa-columns"></i> Канбан</button>
<!--
<button onclick="window.location.href = '/doc?action=create'" class="nav-btn create"><i class="fa-solid fa-file"></i> Согласование документов</button>
<button onclick="window.location.href = '/help'" class="nav-btn doc"><i class="fas fa-user-circle"></i> Заявки</button>
-->
<button onclick="showSection('profile')" class="nav-btn profile" id="profile-btn"><i class="fas fa-user-circle"></i> Личный кабинет</button>
<button onclick="window.location.href = '/admin'" class="nav-btn admin"><i class="fas fa-cog"></i> Админ-панель</button>
<button onclick="logout()" class="btn-logout"><i class="fas fa-sign-out-alt"></i> Выйти</button>
</nav>
</header>
<main>
<section id="tasks-section" class="section">
<h2><i class="fas fa-tasks"></i> Все задачи</h2>
<div id="tasks-controls">
<div class="filters">
<!--
<div class="filter-group">
<label for="task-view-filter"><i class="fas fa-eye"></i> Вид задач:</label>
<select id="task-view-filter" onchange="changeTaskView()">
<option value="all">Все задачи</option>
<option value="my_assigned">Задачи, которые я назначил</option>
<option value="assigned_to_me">Задачи, назначенные мне</option>
</select>
</div>
-->
<div class="filter-group">
<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>
<option value="assigned">Назначена</option>
<option value="in_progress">В работе</option>
<option value="rework">На доработке</option>
<option value="overdue">Просрочена</option>
<option value="completed">Выполнена</option>
<option value="closed">Закрыта</option>
</select>
</div>
<div class="filter-group">
<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"><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"><i class="fas fa-calendar-times"></i> Срок выполнения:</label>
<select id="deadline-filter" onchange="loadTasks()">
<option value="">Все сроки</option>
<option value="48h">Менее 48 часов</option>
<option value="24h">Менее 24 часов</option>
</select>
</div>
<div class="filter-group" style="flex-grow: 1; min-width: 180px;">
<label for="search-tasks"><i class="fas fa-search"></i> Поиск:</label>
<input type="text" id="search-tasks" placeholder="Поиск по названию и описанию..." oninput="loadTasks()">
</div>
</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><i class="fas fa-plus-circle"></i> Создать новую задачу</h2>
<form id="create-task-form" enctype="multipart/form-data">
<div class="task-type-selector">
<div class="task-type-buttons">
<button type="button" class="task-type-btn active" data-type="regular" onclick="selectTaskType('regular')"><i class="fas fa-tasks"></i> Обычная задача</button>
<button type="button" class="task-type-btn" data-type="document" onclick="selectTaskType('document')"><i class="fas fa-file-signature"></i> Согласование документа</button>
<button type="button" class="task-type-btn" data-type="it" onclick="selectTaskType('it')"><i class="fas fa-desktop"></i> Заявка в ИТ отдел</button>
<button type="button" class="task-type-btn" data-type="ahch" onclick="selectTaskType('ahch')">
<i class="fas fa-tools"></i> Заявка в АХЧ
</button>
<button type="button" class="task-type-btn" data-type="psychologist" onclick="selectTaskType('psychologist')">
<i class="fas fa-brain"></i> Заявка к психологу
</button>
<button type="button" class="task-type-btn" data-type="speech_therapist" onclick="selectTaskType('speech_therapist')">
<i class="fas fa-comment-medical"></i> Заявка к логопеду
</button>
<button type="button" class="task-type-btn" data-type="hr" onclick="selectTaskType('hr')">
<i class="fas fa-users"></i> Заявка в кадры
</button>
<button type="button" class="task-type-btn" data-type="certificate" onclick="selectTaskType('certificate')">
<i class="fas fa-book"></i> Заявка на справку
</button>
<button type="button" class="task-type-btn" data-type="e_journal" onclick="selectTaskType('e_journal')">
<i class="fas fa-book"></i> Доступ в электронный журнал
</button>
</div>
<input type="hidden" id="task-type" name="taskType" value="regular">
</div>
<div class="form-group">
<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"><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"><i class="fas fa-calendar-alt"></i> Дата выполнения:</label>
<div class="time-buttons">
<button type="button" class="time-btn active" onclick="setTaskTime('12:00')"><i class="fas fa-sun"></i> До обеда</button>
<input type="date" class="date-btn" id="due-date" name="dueDate" required>
<button type="button" class="time-btn" onclick="setTaskTime('19:00')"><i class="fas fa-moon"></i> После обеда</button>
</div>
<input type="hidden" id="due-time" name="dueTime" value="12:00">
</div>
<div class="form-group">
<label><i class="fas fa-users"></i> Исполнители:</label>
<div class="user-search">
<input type="text" id="user-search" placeholder="Поиск исполнителей..." oninput="filterUsers()">
</div>
<div id="users-checklist" class="checkbox-group"></div>
</div>
<div class="form-group">
<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" class="btn-primary">
<i class="fas fa-check-circle"></i> Создать задачу
</button>
</form>
</section>
<section id="logs-section" class="section">
<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">
<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><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">
<label for="edit-title">Название задачи:</label>
<input type="text" id="edit-title" name="title" required>
</div>
<div class="form-group">
<label for="edit-description">Описание:</label>
<textarea id="edit-description" name="description" rows="4"></textarea>
</div>
<div class="form-group">
<label for="edit-due-date">Дата выполнения:</label>
<input type="date" id="edit-due-date" name="dueDate" required>
<div class="time-buttons">
<button type="button" class="edit-time-btn" onclick="setEditTaskTime('12:00')">
<i class="fas fa-sun"></i> До обеда (12:00)
</button>
<button type="button" class="edit-time-btn" onclick="setEditTaskTime('19:00')">
<i class="fas fa-moon"></i> После обеда (19:00)
</button>
</div>
<input type="hidden" id="edit-due-time" name="dueTime" value="12:00">
</div>
<div class="form-group">
<label>Исполнители:</label>
<div class="user-search">
<div id="edit-users-checklist" class="checkbox-group"></div>
<input type="text" id="edit-user-search" placeholder="Поиск исполнителей..." oninput="filterEditUsers()">
</div>
</div>
<div class="form-group">
<label for="edit-files">Добавить файлы:</label>
<input type="file" id="edit-files" name="files" multiple>
<div id="edit-file-list"></div>
</div>
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i> Сохранить изменения
</button>
</form>
</div>
</div>
<!-- Модальное окно копирования задачи -->
<div id="copy-task-modal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeCopyModal()">&times;</span>
<h3><i class="fas fa-copy"></i> Создать копию задачи</h3>
<form id="copy-task-form">
<input type="hidden" id="copy-task-id">
<div class="form-group">
<label for="copy-due-date">Дата выполнения:</label>
<input type="date" class="date-btn" id="copy-due-date" name="dueDate" required>
<input type="hidden" id="copy-due-time" name="dueTime" value="19:00">
<input type="text" id="copy-user-search" placeholder="Поиск исполнителей..." oninput="filterCopyUsers()">
<!--
<div class="time-buttons">
<button type="button" class="copy-time-btn active" onclick="setCopyTaskTime('12:00')">
<i class="fas fa-sun"></i> До обеда (12:00)
</button>
<button type="button" class="copy-time-btn" onclick="setCopyTaskTime('19:00')">
<i class="fas fa-moon"></i> После обеда (19:00)
</button>
</div>
-->
</div>
<div class="form-group">
<!-- <label>Назначить исполнителей для копии:</label>
<div class="user-search">
<input type="text" id="copy-user-search" placeholder="Поиск исполнителей..." oninput="filterCopyUsers()">
</div> -->
<div id="copy-users-checklist" class="checkbox-group"></div>
</div>
<button type="submit" class="btn-primary">
<i class="fas fa-copy"></i> Создать копию
</button>
</form>
</div>
</div>
<!-- Остальные модальные окна остаются без изменений -->
<div id="edit-assignment-modal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeEditAssignmentModal()">&times;</span>
<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">
<div class="form-group">
<label for="edit-assignment-due-date">Дата и время выполнения:</label>
<input type="datetime-local" id="edit-assignment-due-date" name="dueDate" required>
</div>
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i> Сохранить сроки
</button>
</form>
</div>
</div>
<div id="rework-task-modal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeReworkModal()">&times;</span>
<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" class="btn-warning">
<i class="fas fa-redo"></i> Вернуть на доработку
</button>
</form>
</div>
</div>
<div id="kanban-section" class="section kanban-section">
<div id="kanban-board" class="kanban-board">
<div class="loading">Загрузка Канбан-доски...</div>
</div>
</div>
<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="time-selector.js"></script>
<script src="main.js"></script>
</body>
</html>