You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

233 lines
5.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<!-- <u-swiper name='images' border-radius='1' :duration='duration' :interval='interval' :height="height" :list="swiperList">
</u-swiper> -->
<swiper class="swipper-container" circular :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval"
:duration="duration">
<swiper-item @click="toDetails(item.sysGoods)" v-for="(item,index) in swiperList" :key='index'>
<image class="imgs" :src='item.images'></image>
</swiper-item>
</swiper>
<u-divider margin-top='20' margin-bottom='20' color="#F3AF28">店长推荐</u-divider>
<view class="wrap">
<u-waterfall v-model="flowList" ref="uWaterfall">
<template v-slot:left="{leftList}">
<view class="demo-warter" v-for="(item, index) in leftList" :key="index">
<!-- 警告微信小程序中需要hx2.8.11版本才支持在template中结合其他组件比如下方的lazy-load组件 -->
<u-lazy-load @click="toDetails(item)" threshold="-450" border-radius="10"
:image="item.goodsImage.split(',')[0]" :index="index"></u-lazy-load>
<view class="demo-title">
{{item.goodsName}}
</view>
<view class="price-item">
<view class="demo-price">
{{item.specs[0].goodsPrice}}元
</view>
<view class="demo-title">
/份
</view>
<image @click="toDetails(item)" class="carimg" :src="carimg"></image>
</view>
</view>
</template>
<template v-slot:right="{rightList}">
<view class="demo-warter" v-for="(item, index) in rightList" :key="index">
<u-lazy-load @click="toDetails(item)" threshold="-450" border-radius="10"
:image="item.goodsImage.split(',')[0]" :index="index"></u-lazy-load>
<view class="demo-title">
{{item.goodsName}}
</view>
<view class="price-item">
<view class="demo-price">
{{item.specs[0].goodsPrice}}元
</view>
<view class="demo-title">
/份
</view>
<image @click="toDetails(item)" class="carimg" :src="carimg"></image>
</view>
</view>
</template>
</u-waterfall>
</view>
</template>
<script setup>
import {
getSwipperListApi,
getHotListApi
} from '../../api/home.js'
import {
ref
} from 'vue';
import {
onLoad
} from '@dcloudio/uni-app';
const carimg = ref('/static/goodscar.png')
//轮播图高度
const height = ref('400')
//是否显示面板指示点
const indicatorDots = ref(true)
//是否自动播放
const autoplay = ref(true)
//自动切换时间间隔
const interval = ref(2000)
//滑动动画时长
const duration = ref(500)
//定义轮播图的数据
const swiperList = ref([])
//列表数据
const flowList = ref([])
//获取轮播图数据
const getSwipperList = async () => {
let res = await getSwipperListApi()
if (res && res.code == 200) {
swiperList.value = res.data;
}
}
//热推数据
const getHotList = async () => {
let res = await getHotListApi()
if (res && res.code == 200) {
flowList.value = res.data;
}
}
//跳转详情
const toDetails = (item) => {
console.log(item)
//在起始页面跳转到details.vue页面并传递参数
uni.navigateTo({
url: '../detail/detail?goods=' + JSON.stringify(item)
});
}
onLoad(() => {
getSwipperList()
getHotList()
})
</script>
<style lang="scss">
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
/* 设置轮播图容器高度 */
.swipper-container {
height: 150px;
}
/* 设置swipper-container元素下面的item样式 */
.swipper-container .item {
height: 100%;
text-align: center;
line-height: 150px;
}
.imgs {
height: 400rpx;
width: 100%;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
.wrap {
padding: 0px 5px;
}
.demo-warter {
border-radius: 8px;
/* margin: 5px; */
background-color: #ffffff;
padding: 5px;
position: relative;
}
.u-close {
position: absolute;
top: 32rpx;
right: 32rpx;
}
.demo-image {
width: 100%;
border-radius: 4px;
}
.demo-title {
font-size: 30rpx;
margin-top: 5px;
color: $u-main-color;
}
.demo-tag {
display: flex;
margin-top: 5px;
}
.demo-tag-owner {
background-color: $u-type-error;
color: #FFFFFF;
display: flex;
align-items: center;
padding: 4rpx 14rpx;
border-radius: 50rpx;
font-size: 20rpx;
line-height: 1;
}
.demo-tag-text {
border: 1px solid $u-type-primary;
color: $u-type-primary;
margin-left: 10px;
border-radius: 50rpx;
line-height: 1;
padding: 4rpx 14rpx;
display: flex;
align-items: center;
border-radius: 50rpx;
font-size: 20rpx;
}
.demo-price {
font-size: 30rpx;
color: $u-type-error;
margin-top: 5px;
}
.demo-shop {
font-size: 22rpx;
color: $u-tips-color;
margin-top: 5px;
}
.price-item {
display: flex;
align-items: center;
}
.carimg {
height: 50rpx;
width: 50rpx;
margin-top: 5px;
margin-left: 8px;
}
</style>