Files
vue-pure-admin/src/views/welcome/index.vue
2022-10-31 10:22:01 +08:00

258 lines
5.6 KiB
Vue

<script setup lang="ts">
import { ref, computed } from "vue";
import Bar from "./components/Bar.vue";
import Pie from "./components/Pie.vue";
import Line from "./components/Line.vue";
import { openLink } from "@pureadmin/utils";
import Github from "./components/Github.vue";
import Infinite from "./components/Infinite.vue";
defineOptions({
name: "Welcome"
});
const date: Date = new Date();
let loading = ref<boolean>(true);
setTimeout(() => {
loading.value = !loading.value;
}, 800);
let greetings = computed(() => {
if (date.getHours() >= 0 && date.getHours() < 12) {
return "上午阳光明媚,祝你薪水翻倍🌞!";
} else if (date.getHours() >= 12 && date.getHours() < 18) {
return "下午小风娇好,愿你青春不老😃!";
} else {
return "折一根天使羽毛,愿拂去您的疲惫烦恼忧伤🌛!";
}
});
</script>
<template>
<div class="welcome">
<el-card class="top-content dark:border-none">
<div class="left-mark select-none">
<img
src="https://avatars.githubusercontent.com/u/44761321?v=4"
title="直达仓库地址"
@click="openLink('https://github.com/xiaoxian521/vue-pure-admin')"
/>
<span>{{ greetings }}</span>
</div>
</el-card>
<el-row :gutter="24" style="margin: 20px">
<el-col
:xs="24"
:sm="24"
:md="12"
:lg="12"
:xl="12"
style="margin-bottom: 20px"
v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 200
}
}"
>
<el-card style="height: 360px">
<template #header>
<span style="font-size: 16px; font-weight: 500">GitHub信息</span>
</template>
<el-skeleton animated :rows="7" :loading="loading">
<template #default>
<Github />
</template>
</el-skeleton>
</el-card>
</el-col>
<el-col
:xs="24"
:sm="24"
:md="12"
:lg="12"
:xl="12"
style="margin-bottom: 20px"
v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 200
}
}"
>
<el-card style="height: 360px">
<template #header>
<span style="font-size: 16px; font-weight: 500">
GitHub滚动信息
</span>
</template>
<el-skeleton animated :rows="7" :loading="loading">
<template #default>
<Infinite />
</template>
</el-skeleton>
</el-card>
</el-col>
<el-col
:xs="24"
:sm="24"
:md="12"
:lg="8"
:xl="8"
style="margin-bottom: 20px"
v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 400
}
}"
>
<el-card>
<template #header>
<span style="font-size: 16px; font-weight: 500">
GitHub饼图信息
</span>
</template>
<el-skeleton animated :rows="7" :loading="loading">
<template #default>
<Pie />
</template>
</el-skeleton>
</el-card>
</el-col>
<el-col
:xs="24"
:sm="24"
:md="12"
:lg="8"
:xl="8"
style="margin-bottom: 20px"
v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 400
}
}"
>
<el-card>
<template #header>
<span style="font-size: 16px; font-weight: 500">
GitHub折线图信息
</span>
</template>
<el-skeleton animated :rows="7" :loading="loading">
<template #default>
<Line />
</template>
</el-skeleton>
</el-card>
</el-col>
<el-col
:xs="24"
:sm="24"
:md="24"
:lg="8"
:xl="8"
style="margin-bottom: 20px"
v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 400
}
}"
>
<el-card>
<template #header>
<span style="font-size: 16px; font-weight: 500">
GitHub柱状图信息
</span>
</template>
<el-skeleton animated :rows="7" :loading="loading">
<template #default>
<Bar />
</template>
</el-skeleton>
</el-card>
</el-col>
</el-row>
</div>
</template>
<style module scoped>
.size {
height: 335px;
}
</style>
<style lang="scss" scoped>
.main-content {
margin: 0 !important;
}
.welcome {
height: 100%;
.top-content {
display: flex;
justify-content: space-between;
align-items: center;
height: 60px;
background: var(--el-bg-color);
.left-mark {
display: flex;
align-items: center;
img {
display: block;
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 10px;
cursor: pointer;
}
span {
font-size: 14px;
}
}
}
}
</style>