Files

517 lines
11 KiB
Vue
Raw Normal View History

2023-10-11 11:27:47 +08:00
<template>
<layout>
<uv-sticky
bg-color="#F5F5F5"
offset-top="0"
customNavHeight="0"
>
<uv-navbar
:fixed="false"
:safeAreaInsetTop="true"
height="0"
bgColor="transparent"
leftIcon=""
/>
<!-- #ifndef MP -->
<blank size="10"></blank>
<!-- #endif -->
<view class="search">
<view class="search-logo">
<img
class="image"
src="@/static/images/logo.png"
alt=""
mode="widthFix"
>
</view>
<view
class="y-search"
@click="$yrouter.navigateTo({ url: '/pages/search/search' })"
>
<view class="y-search-content">
<uv-search
placeholder="搜索商品"
disabled
bgColor="#fff"
:showAction="false"
></uv-search>
</view>
</view>
<view class="search-action">
</view>
</view>
<blank size="5"></blank>
</uv-sticky>
<blank size="10"></blank>
<scroll-view>
<container>
<view class="swiper">
<swiper
class="swiper"
circular
indicator-dots
autoplay
>
<swiper-item>
<view class="swiper-item">
<image
class="image"
src="@/static/images/banner.png"
mode="widthFix"
/>
</view>
</swiper-item>
<swiper-item>
<view class="swiper-item">
<image
class="image"
src="@/static/images/banner.png"
mode="widthFix"
/>
</view>
</swiper-item>
<swiper-item>
<view class="swiper-item">
<image
class="image"
src="@/static/images/banner.png"
mode="widthFix"
/>
</view>
</swiper-item>
</swiper>
<!--
<uv-swipe
class="my-swipe"
:autoplay="3000"
indicator-color="white"
:list="[
'@/static/images/banner.png',
'@/static/images/banner.png',
'@/static/images/banner.png',
]"
> -->
<!-- </uv-swipe> -->
</view>
</container>
<blank size="
15"></blank>
<container>
<card>
<view class="menu">
<view
class="menu-item"
@tap="$yrouter.navigateTo({ url: '/pages/goodsList/goodsList' })"
>
<view class="menu-item-icon">
<img
class="image"
src="@/static/images/sp.png"
mode="widthFix"
/>
</view>
<view class="menu-item-name">
全部商品
</view>
</view>
<view
class="menu-item"
@tap="$toAuth()"
>
<view class="menu-item-icon">
<img
class="image"
src="@/static/images/pt.png"
mode="widthFix"
/>
</view>
<view class="menu-item-name">
拼团专区
</view>
</view>
<view
class="menu-item"
@tap="$toAuth()"
>
<view class="menu-item-icon">
<img
class="image"
src="@/static/images/ms.png"
mode="widthFix"
/>
</view>
<view class="menu-item-name">
秒杀专区
</view>
</view>
<view
class="menu-item"
@tap="$toAuth()"
>
<view class="menu-item-icon">
<img
class="image"
src="@/static/images/kj.png"
mode="widthFix"
/>
</view>
<view class="menu-item-name">
砍价专区
</view>
</view>
</view>
</card>
</container>
<blank size="15"></blank>
<activity
title="新品首发"
subtitle="超多人想要"
more="更多新品"
@moreClick="$yrouter.navigateTo({ url: '/pages/newGoods/newGoods' })"
>
<card class="goods-row">
<uv-grid
:border="false"
:col="3"
:gutter="0"
v-if="homeData.firstList"
>
<uv-grid-item
v-for="(item, index) in homeData.firstList"
:key="index"
>
<first-goods
:data="item"
card
surplus="200"
/>
</uv-grid-item>
</uv-grid>
</card>
</activity>
<blank size="15"></blank>
<!-- <activity
title="超值拼团"
subtitle="拼着买更划算"
more="查看更多"
>
<scroll-view
@scroll="scroll"
scroll-x="true"
scroll-y="false"
>
<view class="scroll-view-H">
<space>
<card width="290">
<goods
card
interval="true"
desc="3"
showAction="true"
>
<template #action>
<uv-button
round
block
type="primary"
>
立即拼团
</uv-button>
</template>
</goods>
</card>
<card width="290">
<goods
card
interval="true"
desc="3"
showAction="true"
>
<template #action>
<uv-button
round
block
type="primary"
>
立即拼团
</uv-button>
</template>
</goods>
</card>
<card width="290">
<goods
card
interval="true"
desc="3"
showAction="true"
>
<template #action>
<uv-button
round
block
type="primary"
>
立即拼团
</uv-button>
</template>
</goods>
</card>
</space>
</view>
</scroll-view>
</activity>
<blank size="15"></blank>
<activity
title="限时秒杀"
subtitle="13点场"
more="查看更多"
>
<card class="goods-row">
<uv-grid
:border="false"
:column-num="3"
:gutter="0"
>
<uv-grid-item>
<goods
card
surplus="200"
priceMode="primary"
/>
</uv-grid-item>
<uv-grid-item>
<goods
card
surplus="200"
groupNum="200"
priceMode="primary"
/>
</uv-grid-item>
<uv-grid-item>
<goods
card
surplus="200"
priceMode="primary"
/>
</uv-grid-item>
</uv-grid>
</card>
</activity>
<blank size="15"></blank>
<activity
title="砍价专区"
more="查看更多"
>
<space
direction="vertical"
fill
>
<card>
<goods
interval="true"
desc="3"
showAction="true"
list
>
<template #action>
<uv-button
round
block
type="primary"
>
立即拼团
</uv-button>
</template>
</goods>
</card>
<card>
<goods
card
interval="true"
desc="3"
showAction="true"
list
>
<template #action>
<uv-button
round
block
type="primary"
>
立即拼团
</uv-button>
</template>
</goods>
</card>
</space>
</activity>
<blank size="15"></blank> -->
<!-- <activity
title="热门直播"
more="查看更多"
>
</activity> -->
</scroll-view>
</layout>
</template>
<script setup>
import {
ref
} from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import {
getBanner,
getHomeData
} from '@/api/market'
import { useMainStore } from '@/store/store'
const main = useMainStore()
const homeData = ref({})
console.log("--> % homeData:\n", homeData.value)
const handleGetBanner = async () => {
const banner = await getBanner()
if (banner) {
bannerData.value = banner
}
}
const handleGetHomeData = async () => {
const home = await getHomeData()
console.log("--> % handleGetHomeData % home:\n", home)
if (home) {
homeData.value = home
console.log("--> % handleGetHomeData % homeData.value:\n", homeData.value.firstList)
}
}
handleGetBanner()
handleGetHomeData()
const navigatorToSearch = () => {
uni.navigateTo({
url: '/pages/search/search'
})
}
onLoad(() => {
main.init()
})
</script>
<style lang="less">
.search {
margin-top: 5rpx;
padding: 0 17px;
display: flex;
align-items: center;
padding-bottom: 10rpx;
.y-search {
flex: 1;
display: flex;
justify-content: center;
}
.y-search-content {
width: 320rpx;
height: 60rpx;
background: #FFFFFF;
border-radius: 35rpx;
position: relative;
&::after {
content: '';
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
}
}
&-logo {
display: flex;
align-items: center;
width: 126rpx;
.image {
width: 126rpx;
height: 50rpx;
}
}
&-action {
width: 126rpx;
}
}
.logo {
width: 63px;
height: 25px;
.image {
width: 63px;
height: 25px;
display: block;
}
}
.menu {
display: flex;
align-items: center;
height: 144rpx;
&-item {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.image {
width: 50rpx;
height: 50rpx;
display: block;
}
&-name {
margin-top: 18rpx;
line-height: 32rpx;
font-size: 24rpx;
color: #333333;
}
}
}
.goods-row {
padding: 0 8rpx;
}
</style>