запутался, надо прописать логику

This commit is contained in:
2026-02-23 23:52:54 +05:00
parent d62abb6cef
commit 4ef0662d15

View File

@@ -4,7 +4,7 @@
// Конфигурация // Конфигурация
const CONFIG = { const CONFIG = {
signerGroup: 'Подписант', signerGroup: 'Секретарь',
apiEndpoint: '/api2/idusers', apiEndpoint: '/api2/idusers',
usersEndpoint: '/api/users', usersEndpoint: '/api/users',
replaceEndpoint: '/api/tasks/${taskId}/replace-assignee', replaceEndpoint: '/api/tasks/${taskId}/replace-assignee',
@@ -14,6 +14,8 @@
// Текущий пользователь // Текущий пользователь
let currentUser = null; let currentUser = null;
// Является ли текущий пользователь подписантом
let isCurrentUserSigner = false;
// Получение текущего пользователя // Получение текущего пользователя
async function getCurrentUser() { async function getCurrentUser() {
@@ -23,6 +25,9 @@
if (data.user) { if (data.user) {
currentUser = data.user; currentUser = data.user;
console.log('✅ Signature: текущий пользователь', currentUser); console.log('✅ Signature: текущий пользователь', currentUser);
// Проверяем, является ли пользователь подписантом
await checkIfUserIsSigner();
} }
return currentUser; return currentUser;
} catch (error) { } catch (error) {
@@ -31,6 +36,29 @@
} }
} }
// Проверка, является ли текущий пользователь подписантом
async function checkIfUserIsSigner() {
if (!currentUser) return false;
try {
// Получаем всех подписантов
const signers = await getSigners();
// Проверяем, есть ли текущий пользователь в списке подписантов
isCurrentUserSigner = signers.some(signer =>
signer.id === currentUser.id ||
signer.login === currentUser.login ||
signer.name === currentUser.name
);
console.log('✅ Signature: пользователь является подписантом?', isCurrentUserSigner);
return isCurrentUserSigner;
} catch (error) {
console.error('❌ Signature: ошибка проверки подписанта', error);
return false;
}
}
// Получение подписантов // Получение подписантов
async function getSigners() { async function getSigners() {
try { try {
@@ -83,7 +111,7 @@
const signers = await getSigners(); const signers = await getSigners();
if (!signers.length) { if (!signers.length) {
alert('❌ Подписанты не найдены в системе'); alert('❌ Секретари не найдены в системе');
return false; return false;
} }
@@ -191,7 +219,8 @@
// Функция для добавления кнопок в существующие карточки задач // Функция для добавления кнопок в существующие карточки задач
window.addSignatureButtons = function() { window.addSignatureButtons = function() {
if (!currentUser) return; // Показываем кнопку только если пользователь является подписантом
if (!currentUser || !isCurrentUserSigner) return;
document.querySelectorAll('[data-task-id]').forEach(card => { document.querySelectorAll('[data-task-id]').forEach(card => {
// Проверяем, есть ли уже кнопка // Проверяем, есть ли уже кнопка
@@ -251,12 +280,14 @@
async function init() { async function init() {
console.log('🔄 Signature module initializing...'); console.log('🔄 Signature module initializing...');
// Получаем текущего пользователя // Получаем текущего пользователя и проверяем, является ли он подписантом
await getCurrentUser(); await getCurrentUser();
// Добавляем кнопки на существующие карточки // Добавляем кнопки на существующие карточки только если пользователь подписант
setTimeout(() => { setTimeout(() => {
if (isCurrentUserSigner) {
window.addSignatureButtons(); window.addSignatureButtons();
}
}, 1000); }, 1000);
// Запускаем наблюдение за DOM // Запускаем наблюдение за DOM
@@ -268,9 +299,8 @@
window.TasksType.renderExpandedContent = function(task) { window.TasksType.renderExpandedContent = function(task) {
let html = originalRender ? originalRender(task) : ''; let html = originalRender ? originalRender(task) : '';
// Добавляем кнопку подписания в развернутое содержимое только для документов // Добавляем кнопку подписания в развернутое содержимое только для документов и если пользователь подписант
if (currentUser && task.task_type === CONFIG.taskTypeDocument && if (currentUser && isCurrentUserSigner && task.task_type === CONFIG.taskTypeDocument) {
task.assignments?.some(a => a.user_id === currentUser.id)) {
// Создаем контейнер action-buttons если его нет // Создаем контейнер action-buttons если его нет
if (!html.includes('action-buttons')) { if (!html.includes('action-buttons')) {
@@ -302,7 +332,7 @@
}; };
} }
console.log('✅ Signature module loaded'); console.log('✅ Signature module loaded. User is signer:', isCurrentUserSigner);
} }
// Запускаем инициализацию после загрузки DOM // Запускаем инициализацию после загрузки DOM