Переглянути джерело

fix #6070: Analytics 各模块监听账号数据变更,新增账号后自动刷新

原代码中只有 Dashboard 监听了 accountRefreshTrigger,Analytics/Account、
Analytics/Overview、Analytics/Platform 未监听,导致新增账号后这些模块
不会自动刷新数据。

在 Analytics 的三个模块中添加对 taskStore.accountRefreshTrigger 的监听,
当 ACCOUNT_DATA_CHANGED 事件触发时自动调用 loadData() 刷新数据。
ethanfly 4 днів тому
батько
коміт
638469027d

+ 8 - 0
client/src/views/Analytics/Account/index.vue

@@ -355,6 +355,7 @@ import { ElMessage } from 'element-plus';
 import * as XLSX from 'xlsx';
 import dayjs from 'dayjs';
 import request from '@/api/request';
+import { useTaskQueueStore } from '@/stores/taskQueue';
 import iconDefaultUrl from '@/assets/platforms/default.svg?url';
 import douyinIconUrl from '@/assets/platforms/douyin.svg?url';
 import xhsIconUrl from '@/assets/platforms/xiaohongshu.svg?url';
@@ -363,6 +364,7 @@ import kuaishouIconUrl from '@/assets/platforms/kuaishou.svg?url';
 import weixinVideoIconUrl from '@/assets/platforms/weixin_video.svg?url';
 import baijiahaoIconUrl from '@/assets/platforms/baijiahao.svg?url';
 const route = useRoute();
+const taskStore = useTaskQueueStore();
 const loading = ref(false);
 const chartLoading = ref(false);
 
@@ -856,6 +858,12 @@ watch(drawerVisible, (visible) => {
   }
 });
 
+// Bug #6070: 监听账号数据变更事件,新增账号后自动刷新数据
+watch(() => taskStore.accountRefreshTrigger, () => {
+  console.log('[Analytics/Account] Account data changed, reloading...');
+  loadData();
+});
+
 onMounted(() => {
   // 如果从平台详情页跳转过来,优先使用路由上的时间范围
   if (route.query.startDate) {

+ 9 - 1
client/src/views/Analytics/Overview/index.vue

@@ -137,18 +137,20 @@
 </template>
 
 <script setup lang="ts">
-import { ref, computed, onMounted } from 'vue';
+import { ref, computed, onMounted, watch } from 'vue';
 import { Search } from '@element-plus/icons-vue';
 import { PLATFORMS, AVAILABLE_PLATFORM_TYPES } from '@media-manager/shared';
 import type { PlatformType } from '@media-manager/shared';
 import { useAuthStore } from '@/stores/auth';
 import { useServerStore } from '@/stores/server';
+import { useTaskQueueStore } from '@/stores/taskQueue';
 import { ElMessage } from 'element-plus';
 import dayjs from 'dayjs';
 import request from '@/api/request';
 
 const authStore = useAuthStore();
 const serverStore = useServerStore();
+const taskStore = useTaskQueueStore();
 const loading = ref(false);
 const refreshing = ref(false);
 
@@ -439,6 +441,12 @@ async function handleExport() {
   }
 }
 
+// Bug #6070: 监听账号数据变更事件,新增账号后自动刷新数据
+watch(() => taskStore.accountRefreshTrigger, () => {
+  console.log('[Analytics/Overview] Account data changed, reloading...');
+  loadData();
+});
+
 onMounted(() => {
   loadGroups();
   loadData();

+ 8 - 0
client/src/views/Analytics/Platform/index.vue

@@ -159,6 +159,7 @@ import { PLATFORMS } from '@media-manager/shared';
 import type { PlatformType } from '@media-manager/shared';
 import { useAuthStore } from '@/stores/auth';
 import { useServerStore } from '@/stores/server';
+import { useTaskQueueStore } from '@/stores/taskQueue';
 import { ElMessage } from 'element-plus';
 import dayjs from 'dayjs';
 import request from '@/api/request';
@@ -173,6 +174,7 @@ import baijiahaoIconUrl from '@/assets/platforms/baijiahao.svg?url';
 const router = useRouter();
 const authStore = useAuthStore();
 const serverStore = useServerStore();
+const taskStore = useTaskQueueStore();
 const loading = ref(false);
 const chartLoading = ref(false);
 
@@ -470,6 +472,12 @@ watch(drawerVisible, (visible) => {
   }
 });
 
+// Bug #6070: 监听账号数据变更事件,新增账号后自动刷新数据
+watch(() => taskStore.accountRefreshTrigger, () => {
+  console.log('[Analytics/Platform] Account data changed, reloading...');
+  loadData();
+});
+
 onMounted(() => {
   // 默认选择昨天
   handleQuickDate('yesterday');