diff --git a/management/src/views/HomeView.vue b/management/src/views/HomeView.vue index ef61dd58..51272fc6 100644 --- a/management/src/views/HomeView.vue +++ b/management/src/views/HomeView.vue @@ -1,11 +1,352 @@ - \ No newline at end of file diff --git a/web/src/views/HomeContent.vue b/web/src/views/HomeContent.vue index 36dff503..ec5a3764 100644 --- a/web/src/views/HomeContent.vue +++ b/web/src/views/HomeContent.vue @@ -6,36 +6,21 @@ height="400px" autoplay arrow="always" + v-if="carouselImages.length > 0" > - + + - - - - - - -
@@ -120,6 +105,7 @@ import { ref, onMounted } from 'vue'; import { ElCarousel, ElCarouselItem, ElLink, ElCard, ElButton, ElIcon } from 'element-plus'; import { ArrowRight } from '@element-plus/icons-vue'; +import axios from 'axios'; // 数据结构 interface NewsItem { @@ -188,6 +174,60 @@ onMounted(async () => { resourceList.value = resourceData; communityList.value = communityData; }); + +const defaultTitles = [ + '健康生活环境设计研究成果展', + '2025健康设计国际学术研讨会', + '社区健康服务创新实践' +]; +const defaultDescs = [ + '探索健康设计新路径,引领人居环境创新', + '汇聚全球专家智慧,共话健康人居未来', + '以设计赋能社区,提升居民生活品质' +]; + + +interface CarouselImage { + id?: number; // 可选,数据库返回的ID + image_url: string; // 图片URL(必选) + sort?: number; // 可选,排序字段 + // 其他可选字段(如title、desc等) + title?: string; + desc?: string; + alt?: string; +} + +// 2. 显式指定泛型类型为 CarouselImage[] +const carouselImages = ref([]); +onMounted(async () => { + try { + // 发送 POST 请求,JSON 体传参 + const response = await axios.post( + 'http://localhost:8080/api/page-image/get', + { page: 'home' } // JSON 格式传递 page 参数 + ); + console.log("首页图片查询成功",response.data.images); + // 检查响应是否成功 + if (response.data.message === '查询成功') { + + + // 按 sort 排序(处理可能的 undefined) + carouselImages.value = response.data.images + + console.log("赋值后:",carouselImages.value); + } + } catch (error) { + console.error('查询失败:', error); + // 兜底数据 + carouselImages.value = [ + { image_url: 'https://picsum.photos/1920/400?random=1' }, + { image_url: 'https://picsum.photos/1920/400?random=2' }, + { image_url: 'https://picsum.photos/1920/400?random=3' } + ]; + } +}); + +