| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- <template>
- <div class="page">
- <div class="gva-card-box">
- <div class="gva-card gva-top-card">
- <div class="gva-top-card-left">
- <div class="gva-top-card-left-title">早安,管理员,请开始一天的工作吧</div>
- <div class="gva-top-card-left-dot">{{ weatherInfo }}</div>
- <el-row class="my-8 w-[500px]">
- <el-col
- :span="8"
- :xs="24"
- :sm="8"
- >
- <div class="flex items-center">
- <el-icon class="dashboard-icon">
- <sort />
- </el-icon>
- 今日流量 (1231231)
- </div>
- </el-col>
- <el-col
- :span="8"
- :xs="24"
- :sm="8"
- >
- <div class="flex items-center">
- <el-icon class="dashboard-icon">
- <avatar />
- </el-icon>
- 总用户数 (24001)
- </div>
- </el-col>
- <el-col
- :span="8"
- :xs="24"
- :sm="8"
- >
- <div class="flex items-center">
- <el-icon class="dashboard-icon">
- <comment />
- </el-icon>
- 好评率 (99%)
- </div>
- </el-col>
- </el-row>
- </div>
- <img
- src="@/assets/dashboard.png"
- class="gva-top-card-right"
- alt
- >
- </div>
- </div>
- <div class="gva-card-box">
- <div class="gva-card quick-entrance">
- <div class="gva-card-title">快捷入口</div>
- <el-row :gutter="20">
- <el-col
- v-for="(card, key) in toolCards"
- :key="key"
- :span="4"
- :xs="8"
- class="quick-entrance-items"
- @click="toTarget(card.name)"
- >
- <div class="quick-entrance-item">
- <div
- class="quick-entrance-item-icon"
- :style="{ backgroundColor: card.bg }"
- >
- <el-icon>
- <component
- :is="card.icon"
- :style="{ color: card.color }"
- />
- </el-icon>
- </div>
- <p>{{ card.label }}</p>
- </div>
- </el-col>
- </el-row>
- </div>
- </div>
- <div class="gva-card-box">
- <div class="gva-card">
- <div class="gva-card-title">数据统计</div>
- <div class="p-4">
- <el-row :gutter="20">
- <el-col
- :xs="24"
- :sm="18"
- >
- <echarts-line />
- </el-col>
- <el-col
- :xs="24"
- :sm="6"
- >
- <dashboard-table />
- </el-col>
- </el-row>
- </div>
- </div>
- </div>
- </div>
- </template>
- <script setup>
- import EchartsLine from '@/view/dashboard/dashboardCharts/echartsLine.vue'
- import DashboardTable from '@/view/dashboard/dashboardTable/dashboardTable.vue'
- import { ref } from 'vue'
- import { useRouter } from 'vue-router'
- import { useWeatherInfo } from '@/view/dashboard/weather.js'
- defineOptions({
- name: 'Dashboard'
- })
- const weatherInfo = useWeatherInfo()
- const toolCards = ref([
- {
- label: '用户管理',
- icon: 'monitor',
- name: 'user',
- color: '#ff9c6e',
- bg: 'rgba(255, 156, 110,.3)'
- },
- {
- label: '角色管理',
- icon: 'setting',
- name: 'authority',
- color: '#69c0ff',
- bg: 'rgba(105, 192, 255,.3)'
- },
- {
- label: '菜单管理',
- icon: 'menu',
- name: 'menu',
- color: '#b37feb',
- bg: 'rgba(179, 127, 235,.3)'
- },
- {
- label: '代码生成器',
- icon: 'cpu',
- name: 'autoCode',
- color: '#ffd666',
- bg: 'rgba(255, 214, 102,.3)'
- },
- {
- label: '表单生成器',
- icon: 'document-checked',
- name: 'formCreate',
- color: '#ff85c0',
- bg: 'rgba(255, 133, 192,.3)'
- },
- {
- label: '关于我们',
- icon: 'user',
- name: 'about',
- color: '#5cdbd3',
- bg: 'rgba(92, 219, 211,.3)'
- }
- ])
- const router = useRouter()
- const toTarget = (name) => {
- router.push({ name })
- }
- </script>
- <style lang="scss" scoped>
- .page {
- @apply p-0;
- .gva-card-box{
- @apply p-4;
- &+.gva-card-box{
- @apply pt-0;
- }
- }
- .gva-card {
- @apply box-border bg-white rounded h-auto px-6 py-8 overflow-hidden shadow-sm;
- .gva-card-title{
- @apply pb-5 border-t-0 border-l-0 border-r-0 border-b border-solid border-gray-100;
- }
- }
- .gva-top-card {
- @apply h-72 flex items-center justify-between text-gray-500;
- &-left {
- @apply h-full flex flex-col w-auto;
- &-title {
- @apply text-3xl text-gray-600;
- }
- &-dot {
- @apply mt-4 text-gray-600 text-lg;
- }
- &-item{
- +.gva-top-card-left-item{
- margin-top: 24px;
- }
- margin-top: 14px;
- }
- }
- &-right {
- height: 600px;
- width: 600px;
- margin-top: 28px;
- }
- }
- ::v-deep(.el-card__header){
- @apply p-0 border-gray-200;
- }
- .card-header{
- @apply pb-5 border-b border-solid border-gray-200 border-t-0 border-l-0 border-r-0;
- }
- .quick-entrance-items {
- @apply flex items-center justify-center text-center text-gray-800;
- .quick-entrance-item {
- @apply px-8 py-6 flex items-center flex-col transition-all duration-100 ease-in-out rounded-lg cursor-pointer;
- &:hover{
- @apply shadow-lg;
- }
- &-icon {
- @apply flex items-center h-16 w-16 rounded-lg justify-center mx-0 my-auto text-2xl;
- }
- p {
- @apply mt-2.5;
- }
- }
- }
- }
- .dashboard-icon {
- @apply flex items-center text-xl mr-2 text-blue-400;
- }
- </style>
|