调整趋势图功能,加入了查询数据库,分析群聊聊天数量的功能

This commit is contained in:
liuwei
2025-03-26 13:46:31 +08:00
parent 65269e6f12
commit 7706a2ce3e

View File

@@ -141,7 +141,8 @@
<el-dialog
:title="currentGroupName + ' 消息趋势'"
:visible.sync="trendDialogVisible"
width="70%">
width="70%"
@opened="onTrendDialogOpened">
<div v-if="trendLoading" style="text-align: center; padding: 20px;">
<i class="el-icon-loading"></i>
<p>加载中...</p>
@@ -519,6 +520,11 @@
this.currentGroupId = group.group_id;
this.currentGroupName = group.group_name || group.group_id;
this.trendDialogVisible = true;
// 不在这里立即加载,而是等对话框打开后再加载
},
// 对话框打开后的回调
onTrendDialogOpened() {
this.loadMessageTrend();
},
@@ -528,11 +534,15 @@
axios.get(`/api/robot/group/${this.currentGroupId}/message_trend?days=${this.trendDays}`)
.then(response => {
if (response.data.success) {
this.renderTrendChart(response.data.data);
// 确保DOM已经渲染完成
setTimeout(() => {
this.renderTrendChart(response.data.data);
this.trendLoading = false;
}, 100);
} else {
this.$message.error('加载消息趋势失败');
this.trendLoading = false;
}
this.trendLoading = false;
})
.catch(error => {
console.error('加载消息趋势失败:', error);
@@ -542,18 +552,28 @@
},
renderTrendChart(data) {
// 确保DOM元素已经渲染
this.$nextTick(() => {
try {
// 获取canvas元素
const canvas = document.getElementById('messageTrendChart');
if (!canvas) {
console.error('找不到Canvas元素');
return;
}
const ctx = canvas.getContext('2d');
if (!ctx) {
console.error('无法获取Canvas上下文');
return;
}
// 如果已有图表,先销毁
if (this.trendChart) {
this.trendChart.destroy();
}
// 获取canvas元素
const ctx = document.getElementById('messageTrendChart').getContext('2d');
// 创建新图表
this.trendChart = new Chart(ctx, {
// 保持原有配置不变
type: 'line',
data: {
labels: data.dates,
@@ -600,7 +620,10 @@
}
}
});
});
} catch (error) {
console.error('渲染图表出错:', error);
this.$message.error('渲染图表出错: ' + error.message);
}
}
}
});