38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
// 公告帮助工具类
|
|
// 用于登录后自动显示公告弹窗
|
|
|
|
export function initNoticePopupAfterLogin() {
|
|
// 监听路由变化,在登录成功后显示公告
|
|
const token = localStorage.getItem('Admin-Token') || sessionStorage.getItem('Admin-Token')
|
|
if (!token) return
|
|
|
|
// 检查是否已经显示过公告
|
|
if (sessionStorage.getItem('notice_popup_shown')) return
|
|
|
|
// 延迟执行,确保页面完全加载
|
|
setTimeout(() => {
|
|
try {
|
|
// 查找公告弹窗组件并触发显示
|
|
const noticeElements = document.querySelectorAll('[class*="notice-popup"]')
|
|
if (noticeElements.length > 0) {
|
|
// 触发点击事件或查找内部方法
|
|
const event = new CustomEvent('trigger-notice-popup', { detail: { autoShow: true } })
|
|
window.dispatchEvent(event)
|
|
sessionStorage.setItem('notice_popup_shown', 'true')
|
|
}
|
|
} catch (error) {
|
|
console.error('自动显示公告弹窗失败:', error)
|
|
}
|
|
}, 2000)
|
|
}
|
|
|
|
// 重置公告弹窗显示状态(用于测试)
|
|
export function resetNoticePopupState() {
|
|
sessionStorage.removeItem('notice_popup_shown')
|
|
}
|
|
|
|
// 手动触发公告弹窗
|
|
export function triggerNoticePopup() {
|
|
const event = new CustomEvent('trigger-notice-popup', { detail: { autoShow: false } })
|
|
window.dispatchEvent(event)
|
|
} |