feat(notice): 新增公告优先级和未读状态功能,优化公告展示逻辑
This commit is contained in:
38
openhis-ui-vue3/src/utils/noticeHelper.js
Normal file
38
openhis-ui-vue3/src/utils/noticeHelper.js
Normal file
@@ -0,0 +1,38 @@
|
||||
// 公告帮助工具类
|
||||
// 用于登录后自动显示公告弹窗
|
||||
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user