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) {