Files
mp-10579/src/views/cms/cmsStatistics/index.vue
赵忠林 4af50e6449 style(api): 统一代码格式化规范
- 调整 import 语句格式,统一空格和引号风格
- 修复函数参数跨行时的格式对齐问题
- 清理多余空行和注释中的空白字符
- 统一对象属性结尾逗号的使用规范
- 规范化字符串拼接和模板语法的格式
- 优化长参数列表的换行和缩进格式
2026-01-17 17:04:46 +08:00

168 lines
4.2 KiB
Vue

<template>
<a-page-header :title="getPageTitle()" @back="() => $router.go(-1)">
<a-row :gutter="16">
<!-- 统计数据卡片 -->
<a-col :span="6">
<a-card :bordered="false" class="stat-card">
<a-statistic
title="用户总数"
:value="statistics.userCount"
:value-style="{ color: '#3f8600' }"
>
<template #prefix>
<UserOutlined />
</template>
</a-statistic>
</a-card>
</a-col>
<a-col :span="6">
<a-card :bordered="false" class="stat-card">
<a-statistic
title="订单总数"
:value="statistics.orderCount"
:value-style="{ color: '#1890ff' }"
>
<template #prefix>
<AccountBookOutlined />
</template>
</a-statistic>
</a-card>
</a-col>
<a-col :span="6">
<a-card :bordered="false" class="stat-card">
<a-statistic
title="总营业额"
:value="statistics.totalSales"
:value-style="{ color: '#cf1322' }"
>
<template #prefix>
<MoneyCollectOutlined />
</template>
</a-statistic>
</a-card>
</a-col>
<a-col :span="6">
<a-card :bordered="false" class="stat-card">
<a-statistic
title="系统运行天数"
:value="statistics.runDays"
suffix="天"
:value-style="{ color: '#722ed1' }"
>
<template #prefix>
<ClockCircleOutlined />
</template>
</a-statistic>
</a-card>
</a-col>
</a-row>
</a-page-header>
</template>
<script lang="ts" setup>
import { ref, onMounted } from 'vue';
import {
UserOutlined,
CalendarOutlined,
QrcodeOutlined,
ShopOutlined,
ClockCircleOutlined,
SettingOutlined,
AccountBookOutlined,
FileTextOutlined,
MoneyCollectOutlined
} from '@ant-design/icons-vue';
import { getSiteInfo } from '@/api/layout';
import { CmsWebsite } from '@/api/cms/cmsWebsite/model';
import { pageUsers } from '@/api/system/user';
import { pageShopOrder } from '@/api/shop/shopOrder';
import { getPageTitle, openNew } from '@/utils/common';
import { listCmsStatistics } from '@/api/cms/cmsStatistics';
// 当前小程序项目
const siteInfo = ref<CmsWebsite>({});
// 系统信息
const systemInfo = ref({
name: '小程序开发',
description:
'基于Spring、SpringBoot、SpringMVC等技术栈构建的前后端分离开发平台',
version: '2.0.0',
status: '运行中',
logo: '/logo.png',
environment: '生产环境',
database: 'MySQL 8.0',
server: 'Linux CentOS 7.9',
expirationTime: '2024-01-01 09:00:00'
});
// 统计数据
const statistics = ref({
userCount: 0,
orderCount: 0,
todayVisit: 0,
runDays: 365
});
onMounted(() => {
// 加载系统信息和统计数据
loadSystemInfo();
loadStatistics();
});
const loadSystemInfo = async () => {
// TODO: 调用API获取系统信息
siteInfo.value = await getSiteInfo();
if (siteInfo.value.createTime) {
// 根据创建时间计算运行天数
statistics.value.runDays = Math.floor(
(new Date().getTime() - new Date(siteInfo.value.createTime).getTime()) /
(24 * 60 * 60 * 1000)
);
}
};
const loadStatistics = async () => {
// TODO: 调用API获取统计数据
const users = await pageUsers({});
const orders = await pageShopOrder({});
if (users) {
console.log(users.count);
statistics.value.userCount = users.count;
}
if (orders) {
statistics.value.orderCount = orders.count;
}
// 获取统计表数据
const data = await listCmsStatistics({});
if (data) {
// 统计数据
statistics.value.totalSales = data[0].totalSales;
}
};
</script>
<style scoped>
.system-info h2 {
margin-bottom: 8px;
}
.stat-card {
text-align: center;
margin-bottom: 16px;
}
.stat-card :deep(.ant-statistic-title) {
font-size: 14px;
color: #666;
}
.stat-card :deep(.ant-statistic-content) {
font-size: 24px;
font-weight: 600;
}
</style>