completed
This commit is contained in:
@@ -124,7 +124,7 @@ function reloadAllScripts() {
|
|||||||
|
|
||||||
function loadScriptsSequentially(scripts, index) {
|
function loadScriptsSequentially(scripts, index) {
|
||||||
if (index >= scripts.length) {
|
if (index >= scripts.length) {
|
||||||
console.log('✅ Все скрипты успешно перезагружены');
|
////console.log('✅ Все скрипты успешно перезагружены');
|
||||||
|
|
||||||
// Инициализация после загрузки всех скриптов
|
// Инициализация после загрузки всех скриптов
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -149,7 +149,7 @@ function loadScriptsSequentially(scripts, index) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function initializeAfterReload() {
|
function initializeAfterReload() {
|
||||||
console.log('🚀 Инициализация интерфейса после перезагрузки...');
|
////console.log('🚀 Инициализация интерфейса после перезагрузки...');
|
||||||
|
|
||||||
// Создаем навигацию
|
// Создаем навигацию
|
||||||
if (typeof createNavigation === 'function') {
|
if (typeof createNavigation === 'function') {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
// main.js - Главный файл инициализации
|
// main.js - Главный файл инициализации
|
||||||
//let currentTaskView = 'all'; // 'all', 'my_assigned', 'assigned_to_me'
|
|
||||||
window.currentTaskView = 'all'; // 'all', 'my_assigned', 'assigned_to_me'
|
window.currentTaskView = 'all'; // 'all', 'my_assigned', 'assigned_to_me'
|
||||||
let allTasksCache = []; // Кэш всех задач
|
let allTasksCache = []; // Кэш всех задач
|
||||||
|
|
||||||
@@ -515,4 +514,5 @@ function showSection(sectionName) {
|
|||||||
function showKanbanSection() {
|
function showKanbanSection() {
|
||||||
showSection('kanban');
|
showSection('kanban');
|
||||||
}
|
}
|
||||||
|
window.setupEventListeners = setupEventListeners;
|
||||||
|
|
||||||
|
|||||||
@@ -48,10 +48,10 @@ function createNavigation() {
|
|||||||
if (!navbar) return;
|
if (!navbar) return;
|
||||||
// 👇 ДОБАВЛЯЕМ ПОДРОБНЫЕ ЛОГИ 👇
|
// 👇 ДОБАВЛЯЕМ ПОДРОБНЫЕ ЛОГИ 👇
|
||||||
if (currentUser) {
|
if (currentUser) {
|
||||||
console.log('ID:', currentUser.id);
|
//console.log('ID:', currentUser.id);
|
||||||
console.log('ФИО:', currentUser.name);
|
//console.log('ФИО:', currentUser.name);
|
||||||
console.log('Логин:', currentUser.login);
|
//console.log('Логин:', currentUser.login);
|
||||||
console.log('Роль:', currentUser.role);
|
//console.log('Роль:', currentUser.role);
|
||||||
} else {
|
} else {
|
||||||
console.log('currentUser отсутствует (не авторизован)');
|
console.log('currentUser отсутствует (не авторизован)');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
if (data.user) {
|
if (data.user) {
|
||||||
currentUser = data.user;
|
currentUser = data.user;
|
||||||
console.log('✅ Signature: текущий пользователь', currentUser);
|
////console.log('✅ Signature: текущий пользователь', currentUser);
|
||||||
|
|
||||||
// Проверяем, является ли пользователь подписантом
|
// Проверяем, является ли пользователь подписантом
|
||||||
await checkIfUserIsSigner();
|
await checkIfUserIsSigner();
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
signer.name === currentUser.name
|
signer.name === currentUser.name
|
||||||
);
|
);
|
||||||
|
|
||||||
console.log('✅ Signature: пользователь является подписантом?', isCurrentUserSigner);
|
////console.log('✅ Signature: пользователь является подписантом?', isCurrentUserSigner);
|
||||||
return isCurrentUserSigner;
|
return isCurrentUserSigner;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('❌ Signature: ошибка проверки подписанта', error);
|
console.error('❌ Signature: ошибка проверки подписанта', error);
|
||||||
@@ -145,13 +145,6 @@
|
|||||||
|
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
alert(`✅ Задача ${signers.length > 1 ? 'назначена подписантам' : 'переназначена подписанту'}`);
|
alert(`✅ Задача ${signers.length > 1 ? 'назначена подписантам' : 'переназначена подписанту'}`);
|
||||||
// Отправляем запрос на завершение для старого исполнителя
|
|
||||||
await fetch(`/api/tasks/${taskId}/status`, {
|
|
||||||
method: 'PUT',
|
|
||||||
headers: { 'Content-Type': 'application/json' },
|
|
||||||
body: JSON.stringify({ userId: oldUserId, status: 'completed' })
|
|
||||||
});
|
|
||||||
|
|
||||||
// Пробуем перезагрузить задачи разными способами
|
// Пробуем перезагрузить задачи разными способами
|
||||||
if (window.TasksType && typeof window.TasksType.loadTasks === 'function') {
|
if (window.TasksType && typeof window.TasksType.loadTasks === 'function') {
|
||||||
window.TasksType.loadTasks();
|
window.TasksType.loadTasks();
|
||||||
@@ -338,7 +331,7 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('✅ Signature module loaded. User is signer:', isCurrentUserSigner);
|
////console.log('✅ Signature module loaded. User is signer:', isCurrentUserSigner);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Запускаем инициализацию после загрузки DOM
|
// Запускаем инициализацию после загрузки DOM
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ async function loadTasks() {
|
|||||||
|
|
||||||
url += params.join('&');
|
url += params.join('&');
|
||||||
|
|
||||||
console.log('Загрузка задач с фильтрами:', url);
|
////console.log('Загрузка задач с фильтрами:', url);
|
||||||
|
|
||||||
const response = await fetch(url);
|
const response = await fetch(url);
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
@@ -61,7 +61,7 @@ async function loadTasks() {
|
|||||||
|
|
||||||
tasks = await response.json();
|
tasks = await response.json();
|
||||||
window.tasks = tasks; // синхронизируем глобальную переменную
|
window.tasks = tasks; // синхронизируем глобальную переменную
|
||||||
console.log(`Загружено ${tasks.length} задач`);
|
//console.log(`Загружено ${tasks.length} задач`);
|
||||||
|
|
||||||
// Загружаем поля документа для задач типа "document"
|
// Загружаем поля документа для задач типа "document"
|
||||||
await loadDocumentFieldsForTasks();
|
await loadDocumentFieldsForTasks();
|
||||||
@@ -117,7 +117,7 @@ async function loadDocumentFieldsForTasks() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`Загрузка полей документов для ${documentTasks.length} задач`);
|
//console.log(`Загрузка полей документов для ${documentTasks.length} задач`);
|
||||||
|
|
||||||
// Загружаем поля для каждой задачи
|
// Загружаем поля для каждой задачи
|
||||||
for (const task of documentTasks) {
|
for (const task of documentTasks) {
|
||||||
@@ -126,7 +126,7 @@ async function loadDocumentFieldsForTasks() {
|
|||||||
if (docResponse.ok) {
|
if (docResponse.ok) {
|
||||||
const docData = await docResponse.json();
|
const docData = await docResponse.json();
|
||||||
task.document_fields = docData.data || {};
|
task.document_fields = docData.data || {};
|
||||||
console.log(`✅ Загружены поля для задачи ${task.id}:`, task.document_fields);
|
//console.log(`✅ Загружены поля для задачи ${task.id}:`, task.document_fields);
|
||||||
} else {
|
} else {
|
||||||
task.document_fields = {};
|
task.document_fields = {};
|
||||||
}
|
}
|
||||||
|
|||||||
25
public/ui.js
25
public/ui.js
@@ -108,12 +108,20 @@ function renderDocumentFields(taskId, fields) {
|
|||||||
function renderTasks() {
|
function renderTasks() {
|
||||||
const container = document.getElementById('tasks-list');
|
const container = document.getElementById('tasks-list');
|
||||||
const showDeleted = document.getElementById('show-deleted')?.checked || false;
|
const showDeleted = document.getElementById('show-deleted')?.checked || false;
|
||||||
|
// Получаем выбранное значение из селекта статусов
|
||||||
|
const statusFilter = document.getElementById('status-filter')?.value;
|
||||||
|
|
||||||
let filteredTasks = window.tasks;
|
let filteredTasks = window.tasks;
|
||||||
if (!showDeleted) {
|
if (!showDeleted) {
|
||||||
filteredTasks = window.tasks.filter(task => task.status === 'active');
|
filteredTasks = window.tasks.filter(task => task.status === 'active');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (statusFilter !== 'completed') {
|
||||||
|
filteredTasks = filteredTasks.filter(task => {
|
||||||
|
const myAssignment = task.assignments?.find(a => parseInt(a.user_id) === currentUser.id);
|
||||||
|
return !myAssignment || myAssignment.status !== 'completed';
|
||||||
|
});
|
||||||
|
}
|
||||||
if (filteredTasks.length === 0) {
|
if (filteredTasks.length === 0) {
|
||||||
container.innerHTML = '<div class="loading">Задачи не найдены</div>';
|
container.innerHTML = '<div class="loading">Задачи не найдены</div>';
|
||||||
return;
|
return;
|
||||||
@@ -240,13 +248,22 @@ ${task.assignments && task.assignments.length > 0 ?
|
|||||||
function renderTasksInContainer(containerId, tasksArray) {
|
function renderTasksInContainer(containerId, tasksArray) {
|
||||||
const container = document.getElementById(containerId);
|
const container = document.getElementById(containerId);
|
||||||
if (!container) return;
|
if (!container) return;
|
||||||
|
|
||||||
if (!tasksArray || tasksArray.length === 0) {
|
let filteredTasks = tasksArray;
|
||||||
|
if (containerId === 'runtasks-list' && window.currentTaskView === 'assigned_to_me' && currentUser) {
|
||||||
|
filteredTasks = tasksArray.filter(task => {
|
||||||
|
const myAssignment = task.assignments?.find(a => parseInt(a.user_id) === currentUser.id);
|
||||||
|
console.log('Task', task.id, 'myAssignment status:', myAssignment?.status);
|
||||||
|
return !myAssignment || myAssignment.status !== 'completed';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!filteredTasks || filteredTasks.length === 0) {
|
||||||
container.innerHTML = '<div class="loading">Задачи не найдены</div>';
|
container.innerHTML = '<div class="loading">Задачи не найдены</div>';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
container.innerHTML = tasksArray.map(task => {
|
container.innerHTML = filteredTasks.map(task => {
|
||||||
const isExpanded = expandedTasks.has(task.id);
|
const isExpanded = expandedTasks.has(task.id);
|
||||||
const overallStatus = getTaskOverallStatus(task);
|
const overallStatus = getTaskOverallStatus(task);
|
||||||
const statusClass = getStatusClass(overallStatus);
|
const statusClass = getStatusClass(overallStatus);
|
||||||
|
|||||||
Reference in New Issue
Block a user