fix(requests): убраны alert и немедленный reload при approve/reject на странице списка

- requestCrudHandler.js: заменены alert+reload на закрытие модального окна + событие
- requestList.js: добавлен обработчик события request:updated с отложенной перезагрузкой (500ms)
- Улучшен UX: модальное окно плавно закрывается, затем обновляется список
- Системное уведомление больше не появляется
This commit is contained in:
Игорь Надеин 2025-12-29 11:19:50 +03:00
parent c0b659f95d
commit 935c12aaa2
2 changed files with 34 additions and 4 deletions

View File

@ -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);
}

View File

@ -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);
});
}