Files
hzdyjs/web/src/views/index.vue
T
2025-08-24 23:44:46 +08:00

391 lines
7.7 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="carousel-section">
<el-carousel :interval="4000" type="card" height="400px" indicator-position="outside" arrow="always" class="campus-carousel">
<el-carousel-item v-for="(image, index) in campusImages" :key="index">
<div class="carousel-item">
<img :src="image.url" :alt="image.title" class="carousel-image" />
<div class="carousel-overlay">
<h3 class="carousel-title">{{ image.title }}</h3>
<p class="carousel-description">{{ image.description }}</p>
</div>
</div>
</el-carousel-item>
</el-carousel>
</div>
<!-- 下半部分:原有内容 -->
<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 { computed } from 'vue';
import { Tools, Calendar, Service, Phone, Message } from '@element-plus/icons-vue';
// 校园风景图片数据
const campusImages = [
{
url: '/assets/images/01.jpg',
title: '校园正门',
description: '绿意盎然的校园入口,展现学院的自然之美'
},
{
url: '/assets/images/02.jpg',
title: '校园风光',
description: '现代化的校园建筑与自然景观的完美融合'
},
{
url: '/assets/images/03.jpg',
title: '校园全景',
description: '鸟瞰校园全景,展现学院的整体风貌'
}
];
// 计算预计完成时间(当前时间后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);
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
}
// 上半部分:轮播图样式
.carousel-section {
padding: 40px 20px;
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(5px);
}
.campus-carousel {
max-width: 1200px;
margin: 0 auto;
border-radius: 16px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
:deep(.el-carousel__item) {
border-radius: 16px;
}
}
.carousel-item {
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
border-radius: 16px;
}
.carousel-image {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.3s ease;
}
.carousel-item:hover .carousel-image {
transform: scale(1.05);
}
.carousel-overlay {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
color: white;
padding: 40px 30px 30px;
text-align: left;
}
.carousel-title {
font-size: 24px;
font-weight: 600;
margin: 0 0 10px 0;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
}
.carousel-description {
font-size: 16px;
margin: 0;
opacity: 0.9;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
line-height: 1.5;
}
// 下半部分:原有样式
.construction-container {
width: 100%;
max-width: 800px;
padding: 40px;
margin: 0 auto;
}
.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) {
.carousel-section {
padding: 20px 10px;
}
.campus-carousel {
height: 300px !important;
}
.carousel-overlay {
padding: 30px 20px 20px;
}
.carousel-title {
font-size: 20px;
}
.carousel-description {
font-size: 14px;
}
.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 {
.carousel-section {
background: rgba(0, 0, 0, 0.1);
}
.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>