后台管理功能开发,AI配置管理
This commit is contained in:
@@ -60,8 +60,67 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- AI配置统计 -->
|
||||
<el-row :gutter="20" class="stats-row">
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="stat-content">
|
||||
<div class="stat-icon" style="background-color: #909399;">
|
||||
<el-icon><Setting /></el-icon>
|
||||
</div>
|
||||
<div class="stat-info">
|
||||
<div class="stat-value">{{ aiStats.total }}</div>
|
||||
<div class="stat-label">AI配置总数</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="stat-content">
|
||||
<div class="stat-icon" style="background-color: #67c23a;">
|
||||
<el-icon><CircleCheck /></el-icon>
|
||||
</div>
|
||||
<div class="stat-info">
|
||||
<div class="stat-value">{{ aiStats.enabled }}</div>
|
||||
<div class="stat-label">已启用配置</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="stat-content">
|
||||
<div class="stat-icon" style="background-color: #f56c6c;">
|
||||
<el-icon><CircleClose /></el-icon>
|
||||
</div>
|
||||
<div class="stat-info">
|
||||
<div class="stat-value">{{ aiStats.disabled }}</div>
|
||||
<div class="stat-label">已禁用配置</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="stat-content">
|
||||
<div class="stat-icon" style="background-color: #e6a23c;">
|
||||
<el-icon><Star /></el-icon>
|
||||
</div>
|
||||
<div class="stat-info">
|
||||
<div class="stat-value">{{ aiStats.default }}</div>
|
||||
<div class="stat-label">默认配置</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" class="chart-row">
|
||||
<el-col :span="16">
|
||||
<el-col :span="12">
|
||||
<el-card>
|
||||
<template #header>
|
||||
<span>用户增长趋势</span>
|
||||
@@ -70,7 +129,7 @@
|
||||
</el-card>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-col :span="6">
|
||||
<el-card>
|
||||
<template #header>
|
||||
<span>最近登录</span>
|
||||
@@ -81,17 +140,30 @@
|
||||
</el-table>
|
||||
</el-card>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<AiConfigQuickActions />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { User, UserFilled, TrendCharts, ChatDotRound } from '@element-plus/icons-vue'
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { User, UserFilled, TrendCharts, ChatDotRound, Setting, CircleCheck, CircleClose, Star } from '@element-plus/icons-vue'
|
||||
import * as echarts from 'echarts'
|
||||
import { countEnabledConfigs, countDisabledConfigs, countDefaultConfigs } from '@/api/aiconfig'
|
||||
import AiConfigQuickActions from '@/components/AiConfigQuickActions.vue'
|
||||
|
||||
const userChartRef = ref<HTMLElement>()
|
||||
|
||||
const aiStats = reactive({
|
||||
total: 0,
|
||||
enabled: 0,
|
||||
disabled: 0,
|
||||
default: 0
|
||||
})
|
||||
|
||||
const recentLogins = ref([
|
||||
{ username: '张三', time: '2分钟前' },
|
||||
{ username: '李四', time: '5分钟前' },
|
||||
@@ -101,8 +173,26 @@ const recentLogins = ref([
|
||||
|
||||
onMounted(() => {
|
||||
initUserChart()
|
||||
fetchAiStats()
|
||||
})
|
||||
|
||||
// 获取AI配置统计
|
||||
const fetchAiStats = async () => {
|
||||
try {
|
||||
const [enabledRes, disabledRes, defaultRes] = await Promise.all([
|
||||
countEnabledConfigs(),
|
||||
countDisabledConfigs(),
|
||||
countDefaultConfigs()
|
||||
])
|
||||
aiStats.enabled = enabledRes.data
|
||||
aiStats.disabled = disabledRes.data
|
||||
aiStats.default = defaultRes.data
|
||||
aiStats.total = aiStats.enabled + aiStats.disabled
|
||||
} catch (error) {
|
||||
console.error('获取AI配置统计失败:', error)
|
||||
}
|
||||
}
|
||||
|
||||
const initUserChart = () => {
|
||||
if (!userChartRef.value) return
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user