diff --git a/backend/static/js/components/requestCrudHandler.js b/backend/static/js/components/requestCrudHandler.js index 6359cfce..8e2f8329 100644 --- a/backend/static/js/components/requestCrudHandler.js +++ b/backend/static/js/components/requestCrudHandler.js @@ -320,8 +320,19 @@ export function initRequestCrudHandler(options) { } await response.json(); - alert("Заявление одобрено."); - window.location.reload(); + + // Закрываем модальное окно + const modal = document.getElementById('reqApproveModal'); + if (modal) { + const bsModal = bootstrap.Modal.getInstance(modal); + if (bsModal) bsModal.hide(); + } + + // Отправляем событие для обновления списка + document.dispatchEvent(new CustomEvent('request:updated', { + detail: { action: 'approve', id: reqId } + })); + } catch (error) { alert("Не удалось одобрить заявление: " + error.message); } @@ -351,8 +362,19 @@ export function initRequestCrudHandler(options) { } await response.json(); - alert("Заявление отклонено."); - window.location.reload(); + + // Закрываем модальное окно + const modal = document.getElementById('reqRejectModal'); + if (modal) { + const bsModal = bootstrap.Modal.getInstance(modal); + if (bsModal) bsModal.hide(); + } + + // Отправляем событие для обновления списка + document.dispatchEvent(new CustomEvent('request:updated', { + detail: { action: 'reject', id: reqId } + })); + } catch (error) { alert("Не удалось отклонить заявление: " + error.message); } diff --git a/backend/static/js/pages/requestList.js b/backend/static/js/pages/requestList.js index 4f82b77f..4c0582d9 100644 --- a/backend/static/js/pages/requestList.js +++ b/backend/static/js/pages/requestList.js @@ -112,4 +112,12 @@ export function initRequestListPage(config) { apiDetailBase, headers }); + + // Слушаем события обновления заявлений (approve/reject) + document.addEventListener('request:updated', function(event) { + console.log('Request updated:', event.detail); + // Перезагружаем страницу для обновления списка + // TODO: в будущем можно заменить на AJAX обновление конкретной карточки + setTimeout(() => window.location.reload(), 500); + }); }