3 changed files with 272 additions and 0 deletions
@ -0,0 +1,130 @@ |
|||
<template> |
|||
<view class="bg"> |
|||
<image :src="headImg" class="topImg" mode="aspectFill"></image> |
|||
|
|||
<view @click="gotoDetailByType(item)" class="item" v-for="(item,index) in list" :key="index"> |
|||
<image :src="item.headimg" mode="aspectFill" class="image"></image> |
|||
<view class="content flex-column"> |
|||
<view> |
|||
<view class="title text-overflowRows">{{item.title}}</view> |
|||
<view class="tags" v-if="item.display_tags"> |
|||
<view class="tag" v-for="(tagItem,tagIndex) in item.display_tags.split(',').slice(0,2)" :key="tagIndex">{{tagItem}}</view> |
|||
</view> |
|||
</view> |
|||
<view class="price">{{item.price / 100}}</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
headImg: '', |
|||
list: [], |
|||
finished: false |
|||
} |
|||
}, |
|||
mounted() { |
|||
// 头图 |
|||
this.getHeadImg(2374).then(res => {this.headImg = res}) |
|||
this.getList() |
|||
}, |
|||
onReachBottom() { |
|||
setTimeout(() => { |
|||
if(!this.finished) this.getList() |
|||
},1000) |
|||
}, |
|||
methods: { |
|||
getList() { |
|||
this.Post({ |
|||
offset: this.list.length, |
|||
limit: 10, |
|||
tag_id: 659, |
|||
title: '' |
|||
}, '/api/product/get_product_by_tag').then(res => { |
|||
if (res) { |
|||
this.list = [...res.data.list, ...this.list] |
|||
|
|||
if (res.data.list.length < 10) { |
|||
this.finished = true |
|||
} |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.bg { |
|||
min-height: 100vh; |
|||
padding-bottom: 100rpx; |
|||
background-color: rgba(249, 252, 243, 1); |
|||
} |
|||
|
|||
.topImg { |
|||
width: 100%; |
|||
height: 386.67rpx; |
|||
} |
|||
|
|||
.item { |
|||
margin: 30rpx 26rpx; |
|||
height: 240rpx; |
|||
display: flex; |
|||
|
|||
.image { |
|||
width: 240rpx; |
|||
height: 240rpx; |
|||
border-radius: 20rpx; |
|||
margin-right: 22rpx; |
|||
flex-shrink: 0; |
|||
} |
|||
|
|||
.content { |
|||
flex: 1; |
|||
height: 240rpx; |
|||
padding-top: 10rpx; |
|||
justify-content: space-between; |
|||
|
|||
.title { |
|||
font-weight: bold; |
|||
font-size: 31rpx; |
|||
color: #333333; |
|||
} |
|||
|
|||
.tags { |
|||
display: flex; |
|||
margin-top: 25rpx; |
|||
|
|||
.tag { |
|||
font-size: 24rpx; |
|||
color: #6A8A27; |
|||
margin-right: 11rpx; |
|||
} |
|||
.tag:not(:last-child)::after{ |
|||
content: '|'; |
|||
display: inline-block; |
|||
margin-left: 11rpx; |
|||
} |
|||
} |
|||
|
|||
.price { |
|||
font-weight: bold; |
|||
font-size: 34rpx; |
|||
color: #DC2525; |
|||
margin-left: auto; |
|||
} |
|||
.price::before { |
|||
content: '¥'; |
|||
font-size: 23rpx; |
|||
} |
|||
.price::after { |
|||
content: '起'; |
|||
font-size: 23rpx; |
|||
color: rgba(153, 153, 153, 1); |
|||
} |
|||
} |
|||
} |
|||
</style> |
@ -0,0 +1,130 @@ |
|||
<template> |
|||
<view class="bg"> |
|||
<image :src="headImg" class="topImg" mode="aspectFill"></image> |
|||
|
|||
<view @click="gotoDetailByType(item)" class="item" v-for="(item,index) in list" :key="index"> |
|||
<image :src="item.headimg" mode="aspectFill" class="image"></image> |
|||
<view class="content flex-column"> |
|||
<view> |
|||
<view class="title text-overflowRows">{{item.title}}</view> |
|||
<view class="tags" v-if="item.display_tags"> |
|||
<view class="tag" v-for="(tagItem,tagIndex) in item.display_tags.split(',').slice(0,2)" :key="tagIndex">{{tagItem}}</view> |
|||
</view> |
|||
</view> |
|||
<view class="price">{{item.price / 100}}</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
headImg: '', |
|||
list: [], |
|||
finished: false |
|||
} |
|||
}, |
|||
mounted() { |
|||
// 头图 |
|||
this.getHeadImg(2375).then(res => {this.headImg = res}) |
|||
this.getList() |
|||
}, |
|||
onReachBottom() { |
|||
setTimeout(() => { |
|||
if(!this.finished) this.getList() |
|||
},1000) |
|||
}, |
|||
methods: { |
|||
getList() { |
|||
this.Post({ |
|||
offset: this.list.length, |
|||
limit: 10, |
|||
tag_id: 660, |
|||
title: '' |
|||
}, '/api/product/get_product_by_tag').then(res => { |
|||
if (res) { |
|||
this.list = [...res.data.list, ...this.list] |
|||
|
|||
if (res.data.list.length < 10) { |
|||
this.finished = true |
|||
} |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.bg { |
|||
min-height: 100vh; |
|||
padding-bottom: 100rpx; |
|||
background-color: rgba(249, 252, 243, 1); |
|||
} |
|||
|
|||
.topImg { |
|||
width: 100%; |
|||
height: 386.67rpx; |
|||
} |
|||
|
|||
.item { |
|||
margin: 30rpx 26rpx; |
|||
height: 240rpx; |
|||
display: flex; |
|||
|
|||
.image { |
|||
width: 240rpx; |
|||
height: 240rpx; |
|||
border-radius: 20rpx; |
|||
margin-right: 22rpx; |
|||
flex-shrink: 0; |
|||
} |
|||
|
|||
.content { |
|||
flex: 1; |
|||
height: 240rpx; |
|||
padding-top: 10rpx; |
|||
justify-content: space-between; |
|||
|
|||
.title { |
|||
font-weight: bold; |
|||
font-size: 31rpx; |
|||
color: #333333; |
|||
} |
|||
|
|||
.tags { |
|||
display: flex; |
|||
margin-top: 25rpx; |
|||
|
|||
.tag { |
|||
font-size: 24rpx; |
|||
color: #6A8A27; |
|||
margin-right: 11rpx; |
|||
} |
|||
.tag:not(:last-child)::after{ |
|||
content: '|'; |
|||
display: inline-block; |
|||
margin-left: 11rpx; |
|||
} |
|||
} |
|||
|
|||
.price { |
|||
font-weight: bold; |
|||
font-size: 34rpx; |
|||
color: #DC2525; |
|||
margin-left: auto; |
|||
} |
|||
.price::before { |
|||
content: '¥'; |
|||
font-size: 23rpx; |
|||
} |
|||
.price::after { |
|||
content: '起'; |
|||
font-size: 23rpx; |
|||
color: rgba(153, 153, 153, 1); |
|||
} |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue