заявки

This commit is contained in:
2026-02-08 23:36:52 +05:00
parent bb6090a135
commit 70a6cbed84
3 changed files with 167 additions and 1 deletions

View File

@@ -130,6 +130,54 @@ db.run(`
description: 'Идентификаторы из других систем',
service_type: 'other',
is_active: true
},
{
name: 'Секретарь',
description: 'согласование документов',
service_type: 'other',
is_active: true
},
{
name: 'ИТ специалист',
description: 'ИТ специалисты',
service_type: 'other',
is_active: true
},
{
name: 'АХЧ',
description: 'сотрудники АХЧ',
service_type: 'other',
is_active: true
},
{
name: 'психолог',
description: 'сотрудники психологи',
service_type: 'other',
is_active: true
},
{
name: 'логопед',
description: 'сотрудники логопеды',
service_type: 'other',
is_active: true
},
{
name: 'кадровичка',
description: 'сотрудники кадровой службы',
service_type: 'other',
is_active: true
},
{
name: 'Администрация',
description: 'секретари и завучи',
service_type: 'other',
is_active: true
},
{
name: 'Админ ЭЖ',
description: 'администраторы электронного журнала',
service_type: 'other',
is_active: true
}
];

View File

@@ -143,6 +143,118 @@ async function createTask(event) {
}
}
}
// Дополнительная проверка для задач типа "it"
if (taskType === 'it' && selectedUsers.length > 0) {
// Проверяем, что все выбранные пользователи - it
for (const userId of selectedUsers) {
const groups = await getUserGroups(userId);
const hasSecretaryGroup = groups.some(group =>
group.name === 'IT поддержка' ||
(typeof group === 'string' && group.includes('IT поддержка'))
);
if (!hasSecretaryGroup) {
alert('Для задачи можно выбирать только пользователей из группы "IT поддержка"');
return;
}
}
}
// Дополнительная проверка для задач типа "ahch"
if (taskType === 'ahch' && selectedUsers.length > 0) {
// Проверяем, что все выбранные пользователи - it
for (const userId of selectedUsers) {
const groups = await getUserGroups(userId);
const hasSecretaryGroup = groups.some(group =>
group.name === 'АХЧ' ||
(typeof group === 'string' && group.includes('АХЧ'))
);
if (!hasSecretaryGroup) {
alert('Для задачи можно выбирать только пользователей из группы "сотрудники АХЧ"');
return;
}
}
}
// Дополнительная проверка для задач типа "psychologist"
if (taskType === 'psychologist' && selectedUsers.length > 0) {
// Проверяем, что все выбранные пользователи - it
for (const userId of selectedUsers) {
const groups = await getUserGroups(userId);
const hasSecretaryGroup = groups.some(group =>
group.name === 'психолог' ||
(typeof group === 'string' && group.includes('психолог'))
);
if (!hasSecretaryGroup) {
alert('Для задачи можно выбирать только пользователей из группы "сотрудники психологи"');
return;
}
}
}
// Дополнительная проверка для задач типа "speech_therapist"
if (taskType === 'speech_therapist' && selectedUsers.length > 0) {
// Проверяем, что все выбранные пользователи - speech_therapist
for (const userId of selectedUsers) {
const groups = await getUserGroups(userId);
const hasSecretaryGroup = groups.some(group =>
group.name === 'логопед' ||
(typeof group === 'string' && group.includes('логопед'))
);
if (!hasSecretaryGroup) {
alert('Для задачи можно выбирать только пользователей из группы "сотрудники логопеды"');
return;
}
}
}
// Дополнительная проверка для задач типа "hr"
if (taskType === 'hr' && selectedUsers.length > 0) {
// Проверяем, что все выбранные пользователи - hr
for (const userId of selectedUsers) {
const groups = await getUserGroups(userId);
const hasSecretaryGroup = groups.some(group =>
group.name === 'кадровичка' ||
(typeof group === 'string' && group.includes('кадровичка'))
);
if (!hasSecretaryGroup) {
alert('Для задачи можно выбирать только пользователей из группы "сотрудники кадровой службы"');
return;
}
}
}
// Дополнительная проверка для задач типа "certificate"
if (taskType === 'certificate' && selectedUsers.length > 0) {
// Проверяем, что все выбранные пользователи - certificate
for (const userId of selectedUsers) {
const groups = await getUserGroups(userId);
const hasSecretaryGroup = groups.some(group =>
group.name === 'Администрация' ||
(typeof group === 'string' && group.includes('Администрация'))
);
if (!hasSecretaryGroup) {
alert('Для задачи можно выбирать только пользователей из группы "секретари и завучи"');
return;
}
}
}
// Дополнительная проверка для задач типа "e_journal"
if (taskType === 'e_journal' && selectedUsers.length > 0) {
// Проверяем, что все выбранные пользователи - e_journal
for (const userId of selectedUsers) {
const groups = await getUserGroups(userId);
const hasSecretaryGroup = groups.some(group =>
group.name === 'Админ ЭЖ' ||
(typeof group === 'string' && group.includes('Админ ЭЖ'))
);
if (!hasSecretaryGroup) {
alert('Для задачи можно выбирать только пользователей из группы "администраторы электронного журнала"');
return;
}
}
}
const formData = new FormData();
formData.append('title', title);
formData.append('description', description);

View File

@@ -729,9 +729,15 @@ app.get('/doc', (req, res) => {
if (!req.session.user) {
return res.redirect('/');
}
if (!req.session.user || req.session.user.role !== 'admin') {
const { role, name } = req.session.user;
const hasAccess = role === 'admin' || role === 'tasks';
if (!hasAccess) {
return res.status(403).send('в разработке');
}
//if (!req.session.user || req.session.user.role !== 'admin') {
// return res.status(403).send('в разработке');
//}
res.sendFile(path.join(__dirname, 'public/doc.html'));
});
// Страница поддержка