|
|
@ -1,15 +1,19 @@ |
|
|
|
import {useEffect, useState} from 'react' |
|
|
|
import {View} from '@tarojs/components' |
|
|
|
import {Swiper} from '@nutui/nutui-react-taro' |
|
|
|
import {CmsAd} from "@/api/cms/cmsAd/model"; |
|
|
|
import {Image} from '@nutui/nutui-react-taro' |
|
|
|
import {getCmsAd} from "@/api/cms/cmsAd"; |
|
|
|
import navTo from "@/utils/common"; |
|
|
|
import {ShopGoods} from "@/api/shop/shopGoods/model"; |
|
|
|
import {listShopGoods} from "@/api/shop/shopGoods"; |
|
|
|
|
|
|
|
|
|
|
|
const MyPage = () => { |
|
|
|
const [carouselData, setCarouselData] = useState<CmsAd>() |
|
|
|
const [hotToday, setHotToday] = useState<CmsAd>() |
|
|
|
const [groupBuy, setGroupBuy] = useState<CmsAd>() |
|
|
|
// const [hotToday, setHotToday] = useState<CmsAd>()
|
|
|
|
// const [groupBuy, setGroupBuy] = useState<CmsAd>()
|
|
|
|
const [hotGoods, setHotGoods] = useState<ShopGoods[]>([]) |
|
|
|
|
|
|
|
// 加载数据
|
|
|
|
const loadData = () => { |
|
|
@ -18,12 +22,16 @@ const MyPage = () => { |
|
|
|
setCarouselData(data) |
|
|
|
}) |
|
|
|
// 今日热卖素材(上层图片)
|
|
|
|
getCmsAd(444).then(data => { |
|
|
|
setHotToday(data) |
|
|
|
}) |
|
|
|
// getCmsAd(444).then(data => {
|
|
|
|
// setHotToday(data)
|
|
|
|
// })
|
|
|
|
// 社区拼团素材(下层图片)
|
|
|
|
getCmsAd(445).then(data => { |
|
|
|
setGroupBuy(data) |
|
|
|
// getCmsAd(445).then(data => {
|
|
|
|
// setGroupBuy(data)
|
|
|
|
// })
|
|
|
|
// 今日热卖
|
|
|
|
listShopGoods({categoryId: 4424, limit: 2}).then(data => { |
|
|
|
setHotGoods(data) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
@ -35,9 +43,9 @@ const MyPage = () => { |
|
|
|
const carouselHeight = carouselData?.height || 200; |
|
|
|
|
|
|
|
return ( |
|
|
|
<div className="flex flex-row w-full gap-2 p-2 box-sizing-border" style={{height: `${carouselHeight}px`}}> |
|
|
|
<View className="flex p-2 justify-between" style={{height: `${carouselHeight}px`}}> |
|
|
|
{/* 左侧轮播图区域 */} |
|
|
|
<div className="flex-1" style={{height: '100%'}}> |
|
|
|
<View style={{width: '50%', height: '100%'}}> |
|
|
|
<Swiper |
|
|
|
defaultValue={0} |
|
|
|
height={carouselHeight} |
|
|
@ -54,70 +62,60 @@ const MyPage = () => { |
|
|
|
onClick={() => navTo(`${img.path}`)} |
|
|
|
lazyLoad={false} |
|
|
|
style={{height: `${carouselHeight}px`, borderRadius: '4px'}} |
|
|
|
alt={`轮播图${index + 1}`} |
|
|
|
/> |
|
|
|
</Swiper.Item> |
|
|
|
))} |
|
|
|
</Swiper> |
|
|
|
</div> |
|
|
|
</View> |
|
|
|
|
|
|
|
{/* 右侧上下图片区域 - 从API获取数据 */} |
|
|
|
<div className="flex-1 flex flex-col gap-2" style={{height: '100%'}}> |
|
|
|
<View className="flex flex-col" style={{width: '50%', height: '100%'}}> |
|
|
|
{/* 上层图片 - 使用今日热卖素材 */} |
|
|
|
<div style={{height: '50%'}}> |
|
|
|
{hotToday?.imageList?.length ? ( |
|
|
|
<Image |
|
|
|
width="100%" |
|
|
|
height="100%" |
|
|
|
src={hotToday.imageList[0].url} |
|
|
|
mode={'scaleToFill'} |
|
|
|
onClick={() => navTo("/cms/category/index?id=4424" || '')} |
|
|
|
lazyLoad={false} |
|
|
|
style={{borderRadius: '4px'}} |
|
|
|
alt="今日热卖" |
|
|
|
/> |
|
|
|
) : ( |
|
|
|
<div style={{ |
|
|
|
height: '100%', |
|
|
|
backgroundColor: '#f5f5f5', |
|
|
|
borderRadius: '4px', |
|
|
|
display: 'flex', |
|
|
|
alignItems: 'center', |
|
|
|
justifyContent: 'center' |
|
|
|
}}> |
|
|
|
<span style={{color: '#999', fontSize: '12px'}}>加载中...</span> |
|
|
|
</div> |
|
|
|
)} |
|
|
|
</div> |
|
|
|
<View className={'ml-2 bg-white rounded-lg'}> |
|
|
|
<View className={'px-3 my-2 font-bold text-sm'}>今日热卖</View> |
|
|
|
<View className={'px-3 flex'} style={{ |
|
|
|
height: '110px' |
|
|
|
}}> |
|
|
|
{ |
|
|
|
hotGoods.map(item => ( |
|
|
|
<View className={'item flex flex-col mr-4'}> |
|
|
|
<Image |
|
|
|
width={70} |
|
|
|
height={70} |
|
|
|
src={item.image} |
|
|
|
mode={'scaleToFill'} |
|
|
|
lazyLoad={false} |
|
|
|
style={{ |
|
|
|
borderRadius: '4px' |
|
|
|
}} |
|
|
|
onClick={() => navTo('/shop/category/index?id=4424')} |
|
|
|
/> |
|
|
|
<View className={'text-xs py-2'}>到手价¥{item.price}</View> |
|
|
|
</View> |
|
|
|
)) |
|
|
|
} |
|
|
|
</View> |
|
|
|
</View> |
|
|
|
|
|
|
|
{/* 下层图片 - 使用社区拼团素材 */} |
|
|
|
<div style={{height: '50%'}}> |
|
|
|
{groupBuy?.imageList?.length ? ( |
|
|
|
<View className={'ml-2 bg-white rounded-lg mt-3'}> |
|
|
|
<View className={'px-3 my-2 font-bold text-sm'}>走进社区</View> |
|
|
|
<View className={'rounded-lg px-3 pb-3'}> |
|
|
|
<Image |
|
|
|
width="100%" |
|
|
|
height="100%" |
|
|
|
src={groupBuy.imageList[0].url} |
|
|
|
width={'100%'} |
|
|
|
height={100} |
|
|
|
src={'https://oss.wsdns.cn/20250919/941c99899e694a7798cab3bb28f1f238.png?x-oss-process=image/resize,m_fixed,w_750/quality,Q_90'} |
|
|
|
mode={'scaleToFill'} |
|
|
|
onClick={() => navTo(groupBuy.imageList[0].path || '')} |
|
|
|
lazyLoad={false} |
|
|
|
style={{borderRadius: '4px'}} |
|
|
|
alt="社区拼团" |
|
|
|
style={{ |
|
|
|
borderRadius: '4px' |
|
|
|
}} |
|
|
|
onClick={() => navTo('cms/detail/index?id=10109')} |
|
|
|
/> |
|
|
|
) : ( |
|
|
|
<div style={{ |
|
|
|
height: '100%', |
|
|
|
backgroundColor: '#f5f5f5', |
|
|
|
borderRadius: '4px', |
|
|
|
display: 'flex', |
|
|
|
alignItems: 'center', |
|
|
|
justifyContent: 'center' |
|
|
|
}}> |
|
|
|
<span style={{color: '#999', fontSize: '12px'}}>加载中...</span> |
|
|
|
</div> |
|
|
|
)} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</View> |
|
|
|
</View> |
|
|
|
</View> |
|
|
|
</View> |
|
|
|
) |
|
|
|
} |
|
|
|
|
|
|
|