2025-10-27 17:29:25 +08:00
|
|
|
<template>
|
2025-10-27 19:05:56 +08:00
|
|
|
<div class="home-view">
|
|
|
|
|
<!-- 轮播横幅区域 -->
|
|
|
|
|
<div class="banner-section">
|
|
|
|
|
<Carousel
|
|
|
|
|
:items="banners"
|
|
|
|
|
:interval="5000"
|
|
|
|
|
:active-icon="dangIcon"
|
|
|
|
|
indicator-position="bottom-right"
|
|
|
|
|
>
|
|
|
|
|
<template #default="{ item }">
|
|
|
|
|
<BannerCard :banner="item" />
|
|
|
|
|
</template>
|
|
|
|
|
</Carousel>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 热门资源推荐 -->
|
|
|
|
|
<div class="section">
|
|
|
|
|
<div class="section-header">
|
|
|
|
|
<h2 class="section-title">热门资源推荐</h2>
|
|
|
|
|
<div class="more-link">
|
|
|
|
|
<span>查看更多</span>
|
|
|
|
|
<el-icon><ArrowRight /></el-icon>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="article-grid">
|
|
|
|
|
<HotArticleCard v-for="item in 3" :key="item" />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 思政新闻概览 -->
|
|
|
|
|
<div class="section">
|
|
|
|
|
<div class="section-header">
|
|
|
|
|
<h2 class="section-title">思政新闻概览</h2>
|
|
|
|
|
<div class="more-link">
|
|
|
|
|
<span>查看更多</span>
|
|
|
|
|
<el-icon><ArrowRight /></el-icon>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="article-grid">
|
|
|
|
|
<IdeologicalArticleCard v-for="item in 3" :key="item" />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 我的学习数据 -->
|
|
|
|
|
<div class="section">
|
|
|
|
|
<div class="section-header">
|
|
|
|
|
<h2 class="section-title">我的学习数据</h2>
|
|
|
|
|
<div class="more-link">
|
|
|
|
|
<span>查看更多</span>
|
|
|
|
|
<el-icon><ArrowRight /></el-icon>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<LearningProgress />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-10-27 17:29:25 +08:00
|
|
|
</template>
|
2025-10-27 19:05:56 +08:00
|
|
|
|
2025-10-27 17:29:25 +08:00
|
|
|
<script setup lang="ts">
|
2025-10-27 19:05:56 +08:00
|
|
|
import { ref } from 'vue';
|
|
|
|
|
import { BannerCard, LearningProgress } from '@/views/public/';
|
|
|
|
|
import { HotArticleCard, IdeologicalArticleCard } from '@/views/public/article';
|
|
|
|
|
import { Carousel } from '@/components/base';
|
|
|
|
|
import { ArrowRight } from '@element-plus/icons-vue';
|
|
|
|
|
import dangIcon from '@/assets/imgs/dang.svg';
|
|
|
|
|
|
|
|
|
|
// 模拟轮播数据,实际应该从接口获取
|
|
|
|
|
const banners = ref([
|
|
|
|
|
{ id: 1, imageUrl: '', linkType: 1, linkID: '', linkUrl: '' },
|
|
|
|
|
{ id: 2, imageUrl: '', linkType: 1, linkID: '', linkUrl: '' },
|
|
|
|
|
]);
|
2025-10-27 17:29:25 +08:00
|
|
|
</script>
|
2025-10-27 19:05:56 +08:00
|
|
|
|
2025-10-27 17:29:25 +08:00
|
|
|
<style lang="scss" scoped>
|
2025-10-27 19:05:56 +08:00
|
|
|
.home-view {
|
|
|
|
|
background-color: #F9F9F9;
|
|
|
|
|
min-height: 100vh;
|
|
|
|
|
padding-bottom: 60px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.banner-section {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 30vh;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.section {
|
|
|
|
|
max-width: 1440px;
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
padding: 0 120px;
|
|
|
|
|
margin-top: 60px;
|
|
|
|
|
|
|
|
|
|
.section-header {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-bottom: 24px;
|
|
|
|
|
|
|
|
|
|
.section-title {
|
|
|
|
|
font-family: 'PingFang SC';
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
font-size: 28px;
|
|
|
|
|
line-height: 38px;
|
|
|
|
|
color: #141F38;
|
|
|
|
|
margin: 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.more-link {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
gap: 2px;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
transition: color 0.3s;
|
|
|
|
|
|
|
|
|
|
span {
|
|
|
|
|
font-family: 'PingFang SC';
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
line-height: 24px;
|
|
|
|
|
color: rgba(20, 31, 56, 0.3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-icon {
|
|
|
|
|
width: 17px;
|
|
|
|
|
height: 17px;
|
|
|
|
|
color: rgba(20, 31, 56, 0.3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
|
span, .el-icon {
|
|
|
|
|
color: rgba(20, 31, 56, 0.6);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.article-grid {
|
|
|
|
|
display: grid;
|
|
|
|
|
grid-template-columns: repeat(3, 1fr);
|
|
|
|
|
gap: 24px;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-10-27 17:29:25 +08:00
|
|
|
</style>
|