реквизиты

This commit is contained in:
2026-02-22 11:31:40 +05:00
parent 7e748c37e1
commit 2107d4ffc6
3 changed files with 725 additions and 0 deletions

View File

@@ -1815,6 +1815,125 @@ app.post('/api/tasks/:taskId/files', requireAuth, upload.array('files', 15), (re
});
});
});
// API для обновления полей документа в задаче
app.put('/api/tasks/:taskId/document-fields', requireAuth, (req, res) => {
const { taskId } = req.params;
const { document_n, document_d, document_a } = req.body;
const userId = req.session.user.id;
const userLogin = req.session.user.login;
console.log('📄 Обновление полей документа:');
console.log('taskId:', taskId);
console.log('document_n:', document_n);
console.log('document_d:', document_d);
console.log('document_a:', document_a || userLogin);
console.log('userId:', userId);
// Проверяем доступ к задаче
checkTaskAccess(userId, taskId, (err, hasAccess) => {
if (err || !hasAccess) {
return res.status(404).json({ error: 'Задача не найдена или у вас нет прав доступа' });
}
// Проверяем существование задачи
db.get("SELECT id FROM tasks WHERE id = ?", [taskId], (err, task) => {
if (err || !task) {
return res.status(404).json({ error: 'Задача не найдена' });
}
// Формируем запрос на обновление
let query = "UPDATE tasks SET ";
const updates = [];
const params = [];
if (document_n !== undefined) {
updates.push("document_n = ?");
params.push(document_n || null);
}
if (document_d !== undefined) {
updates.push("document_d = ?");
params.push(document_d || null);
}
// document_a по умолчанию берем из сессии, если не передан
const authorValue = document_a !== undefined ? document_a : userLogin;
updates.push("document_a = ?");
params.push(authorValue || null);
if (updates.length === 0) {
return res.status(400).json({ error: 'Нет данных для обновления' });
}
updates.push("updated_at = CURRENT_TIMESTAMP");
query += updates.join(", ") + " WHERE id = ?";
params.push(taskId);
db.run(query, params, function(err) {
if (err) {
console.error('❌ Ошибка обновления полей документа:', err);
return res.status(500).json({ error: err.message });
}
if (this.changes === 0) {
return res.status(404).json({ error: 'Задача не обновлена' });
}
// Логируем действие
logActivity(taskId, userId, 'DOCUMENT_FIELDS_UPDATED',
`Обновлены поля документа: №${document_n || ''}, дата: ${document_d || ''}`);
console.log('✅ Поля документа успешно обновлены');
res.json({
success: true,
message: 'Поля документа обновлены',
data: {
document_n: document_n || null,
document_d: document_d || null,
document_a: authorValue
}
});
});
});
});
});
// API для получения полей документа задачи
app.get('/api/tasks/:taskId/document-fields', requireAuth, (req, res) => {
const { taskId } = req.params;
const userId = req.session.user.id;
checkTaskAccess(userId, taskId, (err, hasAccess) => {
if (err || !hasAccess) {
return res.status(404).json({ error: 'Задача не найдена или у вас нет прав доступа' });
}
db.get(
"SELECT document_n, document_d, document_a FROM tasks WHERE id = ?",
[taskId],
(err, row) => {
if (err) {
console.error('❌ Ошибка получения полей документа:', err);
return res.status(500).json({ error: err.message });
}
if (!row) {
return res.status(404).json({ error: 'Задача не найдена' });
}
res.json({
success: true,
data: {
document_n: row.document_n || '',
document_d: row.document_d || '',
document_a: row.document_a || ''
}
});
}
);
});
});
}
module.exports = { setupTaskEndpoints,getApproverUsers };