67 lines
2.5 KiB
JavaScript
67 lines
2.5 KiB
JavaScript
document.addEventListener('DOMContentLoaded', function() {
|
||
// 标记通知为已读
|
||
const markAsRead = (notificationId) => {
|
||
fetch(`/announcement/notification/${notificationId}/mark-read`, {
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
'X-Requested-With': 'XMLHttpRequest'
|
||
}
|
||
})
|
||
.then(response => response.json())
|
||
.then(data => {
|
||
if (data.success) {
|
||
// 更新UI,如移除未读标记
|
||
const notificationCard = document.querySelector(`.notification-card[data-id="${notificationId}"]`);
|
||
if (notificationCard) {
|
||
notificationCard.classList.remove('unread');
|
||
const unreadBadge = notificationCard.querySelector('.unread-badge');
|
||
if (unreadBadge) {
|
||
unreadBadge.remove();
|
||
}
|
||
}
|
||
|
||
// 更新通知计数
|
||
updateNotificationCount();
|
||
}
|
||
})
|
||
.catch(error => console.error('Error:', error));
|
||
};
|
||
|
||
// 自动标记为已读
|
||
const notificationCards = document.querySelectorAll('.notification-card.unread');
|
||
notificationCards.forEach(card => {
|
||
const notificationId = card.dataset.id;
|
||
if (notificationId) {
|
||
// 当用户查看通知列表时自动标记为已读
|
||
// 这可以是可选的功能,也可能需要用户点击后才标记
|
||
// markAsRead(notificationId);
|
||
}
|
||
});
|
||
|
||
// 更新通知计数
|
||
function updateNotificationCount() {
|
||
// 获取当前未读通知数
|
||
fetch('/announcement/notifications/count')
|
||
.then(response => response.json())
|
||
.then(data => {
|
||
const badge = document.querySelector('.notifications .badge');
|
||
if (data.count > 0) {
|
||
if (badge) {
|
||
badge.textContent = data.count;
|
||
} else {
|
||
const newBadge = document.createElement('span');
|
||
newBadge.className = 'badge';
|
||
newBadge.textContent = data.count;
|
||
document.querySelector('.notifications').appendChild(newBadge);
|
||
}
|
||
} else {
|
||
if (badge) {
|
||
badge.remove();
|
||
}
|
||
}
|
||
})
|
||
.catch(error => console.error('Error:', error));
|
||
}
|
||
});
|