|
|
@@ -1,67 +1,65 @@
|
|
|
<template>
|
|
|
<div class="w-full mx-auto">
|
|
|
- <a-grid :cols="{ xs: 1, sm: 12, md: 24 }" :row-gap="16" class="panel ma-content-block mt-3 p-4">
|
|
|
- <a-grid-item class="panel-col" :span="6">
|
|
|
- <a-space>
|
|
|
- <a-avatar :size="54" class="col-avatar" style="padding: 10px">
|
|
|
- <img alt="avatar" src="@/assets/image/user.svg" />
|
|
|
- </a-avatar>
|
|
|
- <a-statistic title="用户统计" :value="data.user" :value-from="0" animation show-group-separator>
|
|
|
- <template #suffix><span class="unit">个</span> </template>
|
|
|
- </a-statistic>
|
|
|
- </a-space>
|
|
|
- </a-grid-item>
|
|
|
- <a-grid-item class="panel-col" :span="6">
|
|
|
- <a-space>
|
|
|
- <a-avatar :size="54" class="col-avatar" style="padding: 10px">
|
|
|
- <img alt="avatar" src="@/assets/image/attach.svg" />
|
|
|
- </a-avatar>
|
|
|
- <a-statistic title="附件统计" :value="data.attach" :value-from="0" animation show-group-separator>
|
|
|
- <template #suffix><span class="unit">个</span> </template>
|
|
|
- </a-statistic>
|
|
|
- </a-space>
|
|
|
- </a-grid-item>
|
|
|
- <a-grid-item class="panel-col" :span="6">
|
|
|
- <a-space>
|
|
|
- <a-avatar :size="54" class="col-avatar" style="padding: 10px">
|
|
|
- <img alt="avatar" src="@/assets/image/login.svg" />
|
|
|
- </a-avatar>
|
|
|
- <a-statistic title="登录统计" :value="data.login" :value-from="0" animation show-group-separator>
|
|
|
- <template #suffix><span class="unit">次</span> </template>
|
|
|
- </a-statistic>
|
|
|
- </a-space>
|
|
|
- </a-grid-item>
|
|
|
- <a-grid-item class="panel-col" :span="6">
|
|
|
- <a-space>
|
|
|
- <a-avatar :size="54" class="col-avatar" style="padding: 10px">
|
|
|
- <img alt="avatar" src="@/assets/image/action.svg" />
|
|
|
- </a-avatar>
|
|
|
- <a-statistic title="操作统计" :value="data.operate" :value-from="0" animation show-group-separator>
|
|
|
- <template #suffix><span class="unit">次</span> </template>
|
|
|
- </a-statistic>
|
|
|
- </a-space>
|
|
|
- </a-grid-item>
|
|
|
- </a-grid>
|
|
|
+ <a-row :gutter="20" :row-gap="16" class="pb-2 pl-0 pr-0" v-for="(item, index) in data" :key="index">
|
|
|
+ <a-col :span="6">
|
|
|
+ <a-card size="small" :bordered="false" :style="{ width: '100%' }">
|
|
|
+ <div class="flex justify-between items-center">
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ <a-tag color="blue">今天</a-tag>
|
|
|
+ </div>
|
|
|
+ <a-statistic :value="item.tday | 0" :value-from="0" animation show-group-separator />
|
|
|
+ </a-card>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="6">
|
|
|
+ <a-card size="small" :bordered="false" :style="{ width: '100%' }">
|
|
|
+ <div class="flex justify-between items-center">
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ <a-tag color="black">昨天</a-tag>
|
|
|
+ </div>
|
|
|
+ <a-statistic :value="item.lday | 0" :value-from="0" animation show-group-separator />
|
|
|
+ </a-card>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="6">
|
|
|
+ <a-card size="small" :bordered="false" :style="{ width: '100%' }">
|
|
|
+ <div class="flex justify-between items-center">
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ <a-tag color="orange">本月</a-tag>
|
|
|
+ </div>
|
|
|
+ <a-statistic :value="item.tmon | 0" :value-from="0" animation show-group-separator />
|
|
|
+ </a-card>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="6">
|
|
|
+ <a-card size="small" :bordered="false" :style="{ width: '100%' }">
|
|
|
+ <div class="flex justify-between items-center">
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ <a-tag color="green">上月</a-tag>
|
|
|
+ </div>
|
|
|
+ <a-statistic :value="item.lmon | 0" :value-from="0" animation show-group-separator />
|
|
|
+ </a-card>
|
|
|
+ </a-col>
|
|
|
+ </a-row>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { ref, reactive } from 'vue'
|
|
|
-import api from '@/api/common'
|
|
|
+import { ref, reactive, onMounted } from 'vue'
|
|
|
+import welcome from '@/views/v1/api/welcome'
|
|
|
|
|
|
const data = ref({
|
|
|
user: 0,
|
|
|
attach: 0,
|
|
|
login: 0,
|
|
|
- operate: 0
|
|
|
+ operate: 0,
|
|
|
})
|
|
|
|
|
|
-const getData = async () => {
|
|
|
- const res = await api.getStatistics()
|
|
|
- data.value = res.data
|
|
|
+const getWelcomeData = async () => {
|
|
|
+ const res = await welcome.indexApi()
|
|
|
+ data.value = res.data.data
|
|
|
}
|
|
|
|
|
|
-getData()
|
|
|
+onMounted(() => {
|
|
|
+ getWelcomeData()
|
|
|
+})
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="less">
|