From 1796921c202af145e2a51c3268bd1d423e55f595 Mon Sep 17 00:00:00 2001 From: kalugin66 Date: Fri, 13 Feb 2026 09:47:59 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=20=D0=B8=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D0=B5=D0=B9=20=D0=B8=D0=B8=D0=B7=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D1=87=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/ui.js | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 137 insertions(+), 1 deletion(-) diff --git a/public/ui.js b/public/ui.js index 1d39a79..75432a9 100644 --- a/public/ui.js +++ b/public/ui.js @@ -86,7 +86,9 @@ function renderTasks() { ${currentUser && currentUser.login === 'minicrm' ? `` : ''} - ${currentUser && currentUser.login === 'minicrm' ? `` : ''} + ${currentUser && currentUser.login === 'kalugin.o' ? `` : ''} +${currentUser && currentUser.login === 'kalugin.o' ? `` : ''} +${currentUser && currentUser.login === 'kalugin.o' ? `` : ''} ${currentUser && currentUser.login === 'minicrm' ? `` : ''} ${currentUser && currentUser.login === 'minicrm' ? `` : ''} @@ -1297,6 +1299,140 @@ async function openManageAssigneesModal(taskId) { alert('Ошибка загрузки данных пользователей'); } } +// ========== ДОБАВЛЕНИЯ ИСПОЛНИТЕЛЕЙ ========== +async function assignAdd_openModal(taskId) { + // Находим задачу + const task = tasks.find(t => t.id === taskId); + if (!task) { + alert('Задача не найдена'); + return; + } + + // Проверяем права + if (!canUserEditTask(task)) { + alert('У вас нет прав для управления исполнителями этой задачи'); + return; + } + + // Получаем текущих исполнителей + const currentAssignees = task.assignments || []; + + // Получаем доступных для добавления исполнителей + try { + const response = await fetch(`/api/tasks/${taskId}/available-assignees`); + const availableUsers = await response.json(); + + // Создаем модальное окно + const modalHtml = ` + + `; + + // Добавляем модальное окно в DOM + const modalContainer = document.createElement('div'); + modalContainer.innerHTML = modalHtml; + document.body.appendChild(modalContainer); + + // Показываем модальное окно + setTimeout(() => { + document.getElementById('manage-assignees-modal').style.display = 'block'; + }, 10); + + } catch (error) { + console.error('Ошибка загрузки данных:', error); + alert('Ошибка загрузки данных пользователей'); + } +} +// ========== УДАЛЕНИЯ ИСПОЛНИТЕЛЕЙ ========== +async function assignRemove_openModal(taskId) { + // Находим задачу + const task = tasks.find(t => t.id === taskId); + if (!task) { + alert('Задача не найдена'); + return; + } + // Проверяем права + if (!canUserEditTask(task)) { + alert('У вас нет прав для управления исполнителями этой задачи'); + return; + } + // Получаем текущих исполнителей и фильтруем удаленных + const currentAssignees = (task.assignments || []).filter(assignee => + assignee.status !== 'deleted' && assignee.status !== 'удален' + ); + // Создаем модальное окно + const modalHtml = ` + + `; + + // Добавляем модальное окно в DOM + const modalContainer = document.createElement('div'); + modalContainer.innerHTML = modalHtml; + document.body.appendChild(modalContainer); + + // Показываем модальное окно + setTimeout(() => { + document.getElementById('manage-assignees-modal').style.display = 'block'; + }, 10); +} // Функция для переключения вкладок в модальном окне function switchManageTab(tabName) {