叶静 2 weken geleden
bovenliggende
commit
58ede511e2
1 gewijzigde bestanden met toevoegingen van 21 en 3 verwijderingen
  1. 21 3
      src/app/shop/admin/data/report/index.vue

+ 21 - 3
src/app/shop/admin/data/report/index.vue

@@ -180,11 +180,18 @@ async function getDashboardList() {
     if (code == 200) {
       // 根据实际返回的数据结构处理
       dashboardList.value = data.list || data || [];
-      // 默认选中第一个看板并调用详情接口
-      if (dashboardList.value.length > 0 && !selectedDashboard.value) {
+
+      // 如果当前没有选中的看板,或者选中的看板已经不在列表中,则选中第一个
+      const currentSelectedExists = dashboardList.value.some(d => d.id === selectedDashboard.value?.id);
+
+      if (dashboardList.value.length > 0 && (!selectedDashboard.value || !currentSelectedExists)) {
         selectedDashboard.value = dashboardList.value[0];
         // 自动调用第一个看板的详情接口
         await getChartData(dashboardList.value[0].id);
+      } else if (dashboardList.value.length === 0) {
+        // 如果列表为空,清空选中状态和图表数据
+        selectedDashboard.value = null;
+        chartData.value = [];
       }
     } else {
       ElMessage.error(t('dataReport.getDashboardListFailed'));
@@ -317,11 +324,22 @@ function deleteDashboard(dashboard) {
     type: 'warning'
   }).then(async () => {
     try {
+      // 记录是否删除的是当前选中的看板
+      const isCurrentSelected = selectedDashboard.value?.id === dashboard.id;
+
       // 调用删除API
       const { code } = await api.report.spectaculars.delete(dashboard.id);
       if (code == 200) {
         ElMessage.success(t('dataReport.dashboardDeleteSuccess'));
-        getDashboardList();
+
+        // 如果删除的是当前选中的看板,清空选中状态
+        if (isCurrentSelected) {
+          selectedDashboard.value = null;
+          chartData.value = chartData.value.filter(chart => chart.dashboardId !== dashboard.id);
+        }
+
+        // 重新获取看板列表,会自动选中第一条
+        await getDashboardList();
       } else {
         ElMessage.error(t('dataReport.dashboardDeleteFailed'));
       }