запутался, надо прописать логику
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user