Files
minicrm/public/help-users.js
2026-01-29 17:08:15 +05:00

153 lines
6.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// help-users.js - Управление пользователями
let users = [];
let allUsers = [];
let filteredUsers = [];
let selectedUsers = [];
let editSelectedUsers = [];
let copySelectedUsers = [];
async function loadUsers() {
try {
const response = await fetch('/api/users');
users = await response.json();
allUsers = users;
// Получаем пользователей группы "help"
const helpUsers = users.filter(user => user.groups && user.groups.includes('help'));
filteredUsers = helpUsers;
// Показываем пользователей группы help при создании заявки
showHelpGroupUsers();
populateFilterDropdowns();
} catch (error) {
console.error('Ошибка загрузки пользователей:', error);
}
}
function populateFilterDropdowns() {
const creatorFilter = document.getElementById('creator-filter');
const assigneeFilter = document.getElementById('assignee-filter');
// Проверяем существование элементов (они есть только на странице help.html)
if (!creatorFilter || !assigneeFilter) {
console.log('Фильтры не найдены (возможно, не на странице help.html)');
return;
}
creatorFilter.innerHTML = '<option value="">Все заказчики</option>';
assigneeFilter.innerHTML = '<option value="">Все исполнители (группа "help")</option>';
// Для заказчиков показываем всех пользователей
users.forEach(user => {
const creatorOption = document.createElement('option');
creatorOption.value = user.id;
creatorOption.textContent = `${user.name} (${user.login})`;
creatorFilter.appendChild(creatorOption);
});
// Для исполнителей показываем только пользователей группы "help"
const helpUsers = users.filter(user => user.groups && user.groups.includes('help'));
helpUsers.forEach(user => {
const assigneeOption = document.createElement('option');
assigneeOption.value = user.id;
assigneeOption.textContent = `${user.name} (${user.login}) - группа "help"`;
assigneeFilter.appendChild(assigneeOption);
});
}
// Функция для отображения пользователей группы help
function showHelpGroupUsers() {
const container = document.getElementById('help-group-users');
// Проверяем существование элемента (он есть только на странице help.html)
if (!container) {
console.log('Контейнер help-group-users не найден (возможно, не на странице help.html)');
return;
}
const helpUsers = users.filter(user => user.groups && user.groups.includes('help'));
if (helpUsers.length === 0) {
container.innerHTML = '<div class="help-group-notice"><i class="fas fa-exclamation-triangle"></i> Нет пользователей в группе "help"</div>';
return;
}
container.innerHTML = `
<div class="help-group-notice">
<i class="fas fa-info-circle"></i> Заявка будет автоматически назначена ${helpUsers.length} пользователям группы "help":
</div>
<div class="help-users-list">
${helpUsers.map(user => `
<div class="help-user-item">
<i class="fas fa-user"></i>
<span class="help-user-name">${user.name}</span>
<span class="help-user-email">(${user.email})</span>
</div>
`).join('')}
</div>
`;
}
// Старые функции фильтрации оставляем, но они теперь не используются для выбора исполнителей
function filterUsers() {
const searchInput = document.getElementById('user-search');
if (!searchInput) return; // Элемент есть только на странице help.html
const search = searchInput.value.toLowerCase();
// Фильтруем пользователей группы "help"
filteredUsers = users.filter(user =>
user.groups && user.groups.includes('help') && (
user.name.toLowerCase().includes(search) ||
user.login.toLowerCase().includes(search) ||
user.email.toLowerCase().includes(search)
)
);
// Не рендерим чеклист, так как выбираем всех пользователей группы help
}
function filterEditUsers() {
// Не используется, так как заявка автоматически назначается всем пользователям группы help
}
function filterCopyUsers() {
// Не используется, так как заявка автоматически назначается всем пользователям группы help
}
// Старые функции рендеринга оставляем для совместимости, но они не будут использоваться
function renderUsersChecklist() {
// Не рендерим чеклист, так как выбираем всех пользователей группы help
}
function renderEditUsersChecklist(filtered = users) {
// Не рендерим чеклист, так как заявка автоматически назначается всем пользователям группы help
}
function renderCopyUsersChecklist(filtered = users) {
// Не рендерим чеклист, так как заявка автоматически назначается всем пользователям группы help
}
// Старые функции выбора пользователей оставляем для совместимости
function toggleUserSelection(checkbox, userId) {
if (checkbox.checked) {
selectedUsers.push(userId);
} else {
selectedUsers = selectedUsers.filter(id => id !== userId);
}
}
function toggleEditUserSelection(checkbox, userId) {
if (checkbox.checked) {
editSelectedUsers.push(userId);
} else {
editSelectedUsers = editSelectedUsers.filter(id => id !== userId);
}
}
function toggleCopyUserSelection(checkbox, userId) {
if (checkbox.checked) {
copySelectedUsers.push(userId);
} else {
copySelectedUsers = copySelectedUsers.filter(id => id !== userId);
}
}