import { View, Image } from '@tarojs/components' import { Search, Swiper, SwiperItem, Grid, GridItem } from '@antmjs/vantui' import { useState, useEffect } from 'react' import Taro from '@tarojs/taro' import { getHomeData } from '@/api/home' import type { CarouselItem, GridNavItem } from '@/api/home' 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(link: string): void { if (!link) return if(link.startsWith('http')) { window.location.href = link } else { Taro.navigateTo({ url: link }).catch(() => { Taro.switchTab({ url: link }).catch(() => { console.warn('导航失败:', link) }) }) } } // ==================== 页面组件 ==================== export default function Index() { const [searchValue, setSearchValue] = useState('') const [carousel, setCarousel] = useState([]) const [gridNav, setGridNav] = 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)) } } } catch (err) { console.warn('获取首页数据失败,使用本地兜底数据', err) } finally { setLoading(false) } } fetchHomeData() }, []) return ( {/* 背景图层 */} {/* 内容层 */} {/* 1. 顶部搜索栏 */} setSearchValue(e.detail)} shape='round' placeholder='搜索美食、餐厅...' background='rgba(255,255,255,0.9)' onSearch={() => { // 搜索逻辑 }} /> {/* 2. 中间轮播图 */} {carousel.length > 0 ? ( {carousel.map((item) => ( handleNavigate(item.link)} /> ))} ) : ( 暂无轮播图 )} {/* 3. 宫格导航 */} {gridNav.length > 0 ? ( {gridNav.map((item) => ( handleNavigate(item.link)} /> ))} ) : ( 暂无分类 )} {/* 4. 底部推荐卡片 */} 🔥 热门推荐 查看同学们都在点什么 💰 限时优惠 超值套餐低至9.9元 新品上架 尝尝校园新味道 📋 我的订单 查看订单状态与历史 {/* 底部留白 */} ) }