diff --git a/src/views/main-sidebar-hover.vue b/src/views/main-sidebar-hover.vue index bd53c1f..021c77c 100644 --- a/src/views/main-sidebar-hover.vue +++ b/src/views/main-sidebar-hover.vue @@ -249,6 +249,9 @@ export default { // 添加全局点击监听,点击其他地方时收起菜单 document.addEventListener('click', this.handleDocumentClick) this.todoBadgeTimer = setInterval(this.refreshTodoPendingCount, 60000) + if (typeof window !== 'undefined') { + window.addEventListener('todo-badge-refresh', this.handleTodoBadgeRefresh) + } }, beforeDestroy() { // 移除全局点击监听 @@ -257,8 +260,14 @@ export default { clearInterval(this.todoBadgeTimer) this.todoBadgeTimer = null } + if (typeof window !== 'undefined') { + window.removeEventListener('todo-badge-refresh', this.handleTodoBadgeRefresh) + } }, methods: { + handleTodoBadgeRefresh () { + this.refreshTodoPendingCount() + }, refreshTodoPendingCount () { const site = this.$store.state.user.site if (!site) { diff --git a/src/views/main-sidebar.vue b/src/views/main-sidebar.vue index 7946a1c..e013d64 100644 --- a/src/views/main-sidebar.vue +++ b/src/views/main-sidebar.vue @@ -128,14 +128,23 @@ export default { }, mounted () { this.todoBadgeTimer = setInterval(this.refreshTodoPendingCount, 60000) + if (typeof window !== 'undefined') { + window.addEventListener('todo-badge-refresh', this.handleTodoBadgeRefresh) + } }, beforeDestroy () { if (this.todoBadgeTimer) { clearInterval(this.todoBadgeTimer) this.todoBadgeTimer = null } + if (typeof window !== 'undefined') { + window.removeEventListener('todo-badge-refresh', this.handleTodoBadgeRefresh) + } }, methods: { + handleTodoBadgeRefresh () { + this.refreshTodoPendingCount() + }, refreshTodoPendingCount () { const site = this.$store.state.user.site if (!site) { diff --git a/src/views/modules/todo/todoCenter.vue b/src/views/modules/todo/todoCenter.vue index b40ddd5..421417c 100644 --- a/src/views/modules/todo/todoCenter.vue +++ b/src/views/modules/todo/todoCenter.vue @@ -167,7 +167,7 @@ :close-on-click-modal="false" :visible.sync="detailDialogVisible" width="820px" - class="customer-dialog todo-cache-detail-dialog" + class="todo-cache-detail-dialog" append-to-body>