|
|
@@ -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'));
|
|
|
}
|