chore: 整合部署文件与管理端源码入仓
- deploy/server.Dockerfile、deploy/client-h5.Dockerfile(自 ai-art 仓库迁出,去重) - docker-compose.yml 迁入并修正路径(admin 上下文 ./admin),新增可选 h5 服务(profile 隔离) - admin/:管理前端完整源码(Vite+Vue3,自 workspace/dimension-admin 合并)
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
<template>
|
||||
<div>
|
||||
<h2>数据看板</h2>
|
||||
<div class="cards">
|
||||
<el-card><div class="num">{{ s.newUsers ?? '-' }}</div><div class="lbl">今日新增</div></el-card>
|
||||
<el-card><div class="num">{{ s.activeUsers ?? '-' }}</div><div class="lbl">今日活跃</div></el-card>
|
||||
<el-card><div class="num">{{ s.newOrders ?? '-' }}</div><div class="lbl">今日订单</div></el-card>
|
||||
<el-card><div class="num ok">{{ s.aiChatToday ?? '-' }}</div><div class="lbl">问答总数</div></el-card>
|
||||
<el-card><div class="num">{{ s.aiChatUsers ?? '-' }}</div><div class="lbl">问答用户</div></el-card>
|
||||
<el-card><div class="num">{{ s.aiChatShares ?? '-' }}</div><div class="lbl">分享次数</div></el-card>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, ref } from 'vue'
|
||||
import { apiGet } from '../api'
|
||||
const s = ref({})
|
||||
onMounted(async () => {
|
||||
try {
|
||||
const d = await apiGet('/api/admin/dashboard')
|
||||
const stats = await apiGet('/api/admin/ai-chat/stats').catch(() => ({}))
|
||||
s.value = {
|
||||
newUsers: d?.today?.newUsers ?? '-',
|
||||
activeUsers: d?.today?.activeUsers ?? '-',
|
||||
newOrders: d?.today?.newOrders ?? '-',
|
||||
aiChatToday: stats?.totalQuestions ?? '-',
|
||||
aiChatUsers: stats?.totalUsers ?? '-',
|
||||
aiChatShares: stats?.totalShares ?? '-',
|
||||
}
|
||||
} catch (e) { console.error(e) }
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:12px; }
|
||||
.num { font-size:26px; font-weight:700; color:#1f2333; }
|
||||
.num.ok { color:#18a058; }
|
||||
.lbl { font-size:12px; color:#8a8fa3; margin-top:4px; }
|
||||
</style>
|
||||
Reference in New Issue
Block a user