|
@@ -12,8 +12,8 @@
|
|
|
<div class="stat-card card" @click="router.push('/generations')">
|
|
<div class="stat-card card" @click="router.push('/generations')">
|
|
|
<div class="stat-icon blue">📄</div>
|
|
<div class="stat-icon blue">📄</div>
|
|
|
<div class="stat-value">{{ stats.reportCount }}</div>
|
|
<div class="stat-value">{{ stats.reportCount }}</div>
|
|
|
- <div class="stat-label">我的报告</div>
|
|
|
|
|
- <div class="stat-trend up">↑ 3 本周新增</div>
|
|
|
|
|
|
|
+ <div class="stat-label">生成任务</div>
|
|
|
|
|
+ <div class="stat-trend">报告生成记录</div>
|
|
|
</div>
|
|
</div>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
@@ -21,23 +21,23 @@
|
|
|
<div class="stat-icon purple">🎨</div>
|
|
<div class="stat-icon purple">🎨</div>
|
|
|
<div class="stat-value">{{ stats.templateCount }}</div>
|
|
<div class="stat-value">{{ stats.templateCount }}</div>
|
|
|
<div class="stat-label">可用模板</div>
|
|
<div class="stat-label">可用模板</div>
|
|
|
- <div class="stat-trend up">↑ 2 新增</div>
|
|
|
|
|
|
|
+ <div class="stat-trend">包含公开模板</div>
|
|
|
</div>
|
|
</div>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
|
<div class="stat-card card">
|
|
<div class="stat-card card">
|
|
|
- <div class="stat-icon green">📚</div>
|
|
|
|
|
- <div class="stat-value">{{ stats.documentCount }}</div>
|
|
|
|
|
- <div class="stat-label">知识文档</div>
|
|
|
|
|
- <div class="stat-trend">📁 1.2GB</div>
|
|
|
|
|
|
|
+ <div class="stat-icon green">📊</div>
|
|
|
|
|
+ <div class="stat-value">{{ stats.variableCount }}</div>
|
|
|
|
|
+ <div class="stat-label">定义变量</div>
|
|
|
|
|
+ <div class="stat-trend">模板变量总数</div>
|
|
|
</div>
|
|
</div>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
|
<div class="stat-card card">
|
|
<div class="stat-card card">
|
|
|
- <div class="stat-icon orange">💰</div>
|
|
|
|
|
- <div class="stat-value">¥{{ stats.monthCost }}</div>
|
|
|
|
|
- <div class="stat-label">本月消耗</div>
|
|
|
|
|
- <div class="stat-trend">↓ 12%</div>
|
|
|
|
|
|
|
+ <div class="stat-icon orange">📁</div>
|
|
|
|
|
+ <div class="stat-value">{{ stats.sourceFileCount }}</div>
|
|
|
|
|
+ <div class="stat-label">来源文件</div>
|
|
|
|
|
+ <div class="stat-trend">数据来源定义</div>
|
|
|
</div>
|
|
</div>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
@@ -174,6 +174,7 @@ import { useRouter } from 'vue-router'
|
|
|
import { Promotion, UploadFilled } from '@element-plus/icons-vue'
|
|
import { Promotion, UploadFilled } from '@element-plus/icons-vue'
|
|
|
import { ElMessage } from 'element-plus'
|
|
import { ElMessage } from 'element-plus'
|
|
|
import { useTemplateStore } from '@/stores/template'
|
|
import { useTemplateStore } from '@/stores/template'
|
|
|
|
|
+import { templateApi } from '@/api'
|
|
|
|
|
|
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
|
const templateStore = useTemplateStore()
|
|
const templateStore = useTemplateStore()
|
|
@@ -184,10 +185,10 @@ const showUploadDialog = ref(false)
|
|
|
const showCreateDialog = ref(false)
|
|
const showCreateDialog = ref(false)
|
|
|
|
|
|
|
|
const stats = reactive({
|
|
const stats = reactive({
|
|
|
- reportCount: 12,
|
|
|
|
|
- templateCount: 15,
|
|
|
|
|
- documentCount: 48,
|
|
|
|
|
- monthCost: 127.50
|
|
|
|
|
|
|
+ reportCount: 0,
|
|
|
|
|
+ templateCount: 0,
|
|
|
|
|
+ variableCount: 0,
|
|
|
|
|
+ sourceFileCount: 0
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
const newTemplate = reactive({
|
|
const newTemplate = reactive({
|
|
@@ -203,6 +204,14 @@ const templateIcons = ['📊', '🏢', '📅', '💼', '📋', '📈', '🎯', '
|
|
|
|
|
|
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
|
try {
|
|
try {
|
|
|
|
|
+ // 获取统计数据
|
|
|
|
|
+ const statsData = await templateApi.getStats()
|
|
|
|
|
+ stats.reportCount = statsData.reportCount || 0
|
|
|
|
|
+ stats.templateCount = statsData.templateCount || 0
|
|
|
|
|
+ stats.variableCount = statsData.variableCount || 0
|
|
|
|
|
+ stats.sourceFileCount = statsData.sourceFileCount || 0
|
|
|
|
|
+
|
|
|
|
|
+ // 获取模板列表
|
|
|
await templateStore.fetchTemplates()
|
|
await templateStore.fetchTemplates()
|
|
|
// 取前3个模板作为推荐
|
|
// 取前3个模板作为推荐
|
|
|
recommendTemplates.value = templateStore.templates.slice(0, 3).map((t, i) => ({
|
|
recommendTemplates.value = templateStore.templates.slice(0, 3).map((t, i) => ({
|
|
@@ -213,10 +222,8 @@ onMounted(async () => {
|
|
|
isOfficial: t.isPublic,
|
|
isOfficial: t.isPublic,
|
|
|
isHot: i < 2
|
|
isHot: i < 2
|
|
|
}))
|
|
}))
|
|
|
- // 更新统计
|
|
|
|
|
- stats.templateCount = templateStore.templates.length
|
|
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
- console.error('获取模板失败:', error)
|
|
|
|
|
|
|
+ console.error('获取数据失败:', error)
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
|
|
|