Files
hzdyjs/web/src/views/index.vue
T
2025-07-07 17:16:02 +08:00

268 lines
5.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="app-container home">
<div class="construction-container">
<div class="construction-content">
<!-- 系统标题 -->
<h1 class="system-title">杭州第一技师学院智慧校园管理系统</h1>
<!-- 待建设图标 -->
<div class="construction-icon">
<el-icon :size="120" color="#409EFF">
<Tools />
</el-icon>
</div>
<!-- 待建设提示 -->
<div class="construction-text">
<h2>页面建设中</h2>
<p class="description">我们正在努力完善系统功能,请耐心等待...</p>
<p class="sub-description">如有紧急需求,请联系系统管理员</p>
</div>
<!-- 进度条 -->
<div class="progress-section">
<p class="progress-label">建设进度</p>
<el-progress :percentage="75" :stroke-width="15" :text-inside="true" status="success" class="progress-bar" />
</div>
<!-- 预计完成时间 -->
<div class="completion-info">
<el-tag type="info" size="large">
<el-icon class="tag-icon"><Calendar /></el-icon>
预计完成时间:{{ expectedDate }}
</el-tag>
</div>
<!-- 联系信息 -->
<div class="contact-section">
<el-card class="contact-card" shadow="hover">
<template #header>
<div class="card-header">
<el-icon><Service /></el-icon>
<span>联系我们</span>
</div>
</template>
<div class="contact-content">
<p>
<el-icon><Phone /></el-icon> 技术支持:0571-XXXXXXX
</p>
<p>
<el-icon><Message /></el-icon> 邮箱:support@hzdyjs.edu.cn
</p>
</div>
</el-card>
</div>
</div>
</div>
</div>
</template>
<script setup name="Index" lang="ts">
import { Tools, Calendar, Service, Phone, Message } from '@element-plus/icons-vue';
// 计算预计完成时间(当前时间后30天)
const expectedDate = computed(() => {
const date = new Date();
date.setDate(date.getDate() + 30);
return date.toLocaleDateString('zh-CN', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
});
</script>
<style lang="scss" scoped>
.home {
min-height: calc(100vh - 200px);
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
}
.construction-container {
width: 100%;
max-width: 800px;
padding: 40px;
}
.construction-content {
text-align: center;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
border-radius: 20px;
padding: 60px 40px;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
border: 1px solid rgba(255, 255, 255, 0.2);
}
.system-title {
font-size: 28px;
font-weight: 600;
color: #2c3e50;
margin-bottom: 40px;
letter-spacing: 1px;
}
.construction-icon {
margin-bottom: 30px;
animation: float 3s ease-in-out infinite;
}
@keyframes float {
0%,
100% {
transform: translateY(0px);
}
50% {
transform: translateY(-10px);
}
}
.construction-text {
margin-bottom: 40px;
h2 {
font-size: 24px;
font-weight: 500;
color: #409eff;
margin-bottom: 15px;
}
.description {
font-size: 16px;
color: #606266;
margin-bottom: 10px;
line-height: 1.6;
}
.sub-description {
font-size: 14px;
color: #909399;
line-height: 1.5;
}
}
.progress-section {
margin-bottom: 30px;
.progress-label {
font-size: 14px;
color: #606266;
margin-bottom: 10px;
font-weight: 500;
}
.progress-bar {
max-width: 400px;
margin: 0 auto;
}
}
.completion-info {
margin-bottom: 40px;
.el-tag {
padding: 12px 20px;
font-size: 14px;
.tag-icon {
margin-right: 8px;
}
}
}
.contact-section {
max-width: 400px;
margin: 0 auto;
}
.contact-card {
border-radius: 12px;
border: none;
.card-header {
display: flex;
align-items: center;
gap: 8px;
font-weight: 500;
color: #409eff;
}
}
.contact-content {
p {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 12px;
font-size: 14px;
color: #606266;
&:last-child {
margin-bottom: 0;
}
.el-icon {
color: #409eff;
}
}
}
// 响应式设计
@media (max-width: 768px) {
.construction-container {
padding: 20px;
}
.construction-content {
padding: 40px 20px;
}
.system-title {
font-size: 22px;
}
.construction-icon {
.el-icon {
font-size: 80px !important;
}
}
.construction-text h2 {
font-size: 20px;
}
}
// 深色主题适配
html.dark {
.construction-content {
background: rgba(30, 30, 30, 0.95);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.system-title {
color: #e5eaf3;
}
.construction-text {
.description {
color: #a3a6ad;
}
.sub-description {
color: #6c6e72;
}
}
.progress-section .progress-label {
color: #a3a6ad;
}
.contact-content p {
color: #a3a6ad;
}
}
</style>