使用oracle数据库做的数据上传系统前端
kongdeqiang
2026-03-21 4506560a9de9c54e5b41cdc46c3ca84bf234386e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<template>
  <div class="dashboard">
    <el-row :gutter="20">
      <el-col :span="6">
        <el-card class="box-card">
          <template #header>
            <div class="card-header">
              <span>用户总数</span>
            </div>
          </template>
          <div class="card-content">
            <el-icon :size="40" color="#409EFC"><User /></el-icon>
            <span class="number">{{ stats.userCount }}</span>
          </div>
        </el-card>
      </el-col>
      <el-col :span="6">
        <el-card class="box-card">
          <template #header>
            <div class="card-header">
              <span>部门总数</span>
            </div>
          </template>
          <div class="card-content">
            <el-icon :size="40" color="#67C23A"><OfficeBuilding /></el-icon>
            <span class="number">{{ stats.deptCount }}</span>
          </div>
        </el-card>
      </el-col>
      <el-col :span="6">
        <el-card class="box-card">
          <template #header>
            <div class="card-header">
              <span>数据总数</span>
            </div>
          </template>
          <div class="card-content">
            <el-icon :size="40" color="#E6A23C"><Document /></el-icon>
            <span class="number">{{ stats.excelCount }}</span>
          </div>
        </el-card>
      </el-col>
      <el-col :span="6">
        <el-card class="box-card">
          <template #header>
            <div class="card-header">
              <span>当前用户</span>
            </div>
          </template>
          <div class="card-content">
            <el-icon :size="40" color="#F56C6C"><Avatar /></el-icon>
            <span class="username">{{ userStore.userInfo.realName || userStore.userInfo.username }}</span>
          </div>
        </el-card>
      </el-col>
    </el-row>
 
    <el-card class="welcome-card">
      <h2>欢迎使用数据管理系统</h2>
      <p>当前登录用户:{{ userStore.userInfo.realName || userStore.userInfo.username }}</p>
      <p>所属部门:{{ userStore.userInfo.deptName || '未分配' }}</p>
    </el-card>
  </div>
</template>
 
<script setup>
import { ref, onMounted } from 'vue'
import { useUserStore } from '@/stores/user'
import { getCount } from '../api/auth'
 
const userStore = useUserStore()
 
const stats = ref({
  userCount: 0,
  deptCount: 0,
  excelCount: 0
})
 
onMounted(() => {
  fetchData()
})
 
const fetchData = async () => {
  try {
    const res = await getCount()
    console.log('res=', res)
    stats.value.userCount = res.data.userSize
    stats.value.deptCount = res.data.deptSize
    stats.value.excelCount = res.data.dataSize
  } catch (error) {
    console.error('获取数据列表失败:', error)
  }
}
</script>
 
<style scoped>
.dashboard {
  padding: 20px;
}
 
.box-card {
  margin-bottom: 20px;
}
 
.card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
 
.card-content {
  display: flex;
  align-items: center;
  gap: 20px;
}
 
.number {
  font-size: 32px;
  font-weight: bold;
  color: #333;
}
 
.username {
  font-size: 18px;
  font-weight: bold;
  color: #333;
}
 
.welcome-card {
  margin-top: 20px;
}
 
.welcome-card h2 {
  margin-bottom: 20px;
  color: #333;
}
 
.welcome-card p {
  margin: 10px 0;
  color: #666;
}
</style>