import { View, Image, Text } from '@tarojs/components' import {Search, Swiper, SwiperItem, Grid, GridItem, Icon} from '@antmjs/vantui' import { useState, useEffect } from 'react' import Taro from '@tarojs/taro' import { getHomeData } from '@/api/home' import type { HomeLinkItem, HomeActivityItem } from '@/api/home' import { navigateToLink } from '@/utils/navigate' import './index.less' // 背景图 import bgImg from '../../../static/img/bg.png' // ==================== 本地兜底数据 ==================== // ==================== 工具函数 ==================== /** 排序 + 过滤启用的项 */ function prepareItems(items: T[]): T[] { return items .filter((item) => item.status === 0) .sort((a, b) => a.sort - b.sort) } /** 处理导航跳转 */ function handleNavigate(item: HomeLinkItem): void { // link_type = 1:跳转分类页,携带分类 ID if (item.link_type === 1) { Taro.navigateTo({ url: `/pages/category/index?category_id=${item.category_id ?? ''}` }) return } // link_type = 0:直接跳转 link 链接 navigateToLink(item.link) } // ==================== 页面组件 ==================== export default function Index() { const [searchValue, setSearchValue] = useState('') const [carousel, setCarousel] = useState([]) const [gridNav, setGridNav] = useState([]) const [activity, setActivity] = useState([]) const [siteTitle, setSiteTitle] = useState('河南省工业大学') const [loading, setLoading] = useState(true) // 获取首页数据 useEffect(() => { async function fetchHomeData() { try { const res = await getHomeData() if (res.success && res.data) { // 轮播图:API 有数据则用,否则兜底 if (res.data.carousel?.length > 0) { setCarousel(prepareItems(res.data.carousel)) } // 宫格导航:API 有数据则用,否则兜底 if (res.data.gridNav?.length > 0) { setGridNav(prepareItems(res.data.gridNav)) } // 活动专区:API 有数据则用,否则兜底静态内容 if (res.data.activity?.length > 0) { setActivity(prepareItems(res.data.activity)) } if (res.data.site_title) { setSiteTitle(res.data.site_title) } } } catch (err) { console.warn('获取首页数据失败,使用本地兜底数据', err) } finally { setLoading(false) } } fetchHomeData() }, []) return ( {/* 背景图层 */} {/* 内容层 */} {siteTitle} {/* 1. 顶部搜索栏 */} setSearchValue(e.detail)} shape='round' placeholder='搜索美食、餐厅...' background='rgba(255,255,255,0.9)' onSearch={() => { // 搜索逻辑 }} /> {/* 2. 中间轮播图 */} {carousel.length > 0 ? ( {carousel.map((item) => ( handleNavigate(item)} /> ))} ) : ( 暂无轮播图 )} {/* 3. 宫格导航 */} {gridNav.length > 0 ? ( {gridNav.map((item) => ( handleNavigate(item)} /> ))} ) : ( 暂无分类 )} {/* 4. 活动专区 */} 活动专区 更多 {activity.length > 0 ? ( <> {/* 前两个:activity-card 渐变卡片 */} {activity.slice(0, 2).map((item, index) => ( handleNavigate(item)} > {item.title} {item.description} ))} {/* 其余:section-card 样式 */} {activity.slice(2).map((item, index) => ( handleNavigate(item)} > {item.title} {item.description} ))} ) : ( /* 兜底静态内容 */ {/* 满减优惠 */} { // TODO: 活动页面上线后配置跳转链接 }} > 🎫 满减优惠 满30减5 · 可与券叠加 {/* 新品首发 */} { // TODO: 活动页面上线后配置跳转链接 }} > 新品首发 每周三上新 · 限时尝鲜价 )} {/* 5. 底部推荐卡片 */} 🔥 热门推荐 查看同学们都在点什么 💰 限时优惠 超值套餐低至9.9元 新品上架 尝尝校园新味道 📋 我的订单 查看订单状态与历史 {/* 底部留白 */} ) }