Feat(首页):新品专区(完成)
This commit is contained in:
@@ -151,3 +151,13 @@ export function getBargainUserList(data) {
|
|||||||
export function getBargainUserCancel(data) {
|
export function getBargainUserCancel(data) {
|
||||||
return request.post("/bargain/user/cancel", data);
|
return request.post("/bargain/user/cancel", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新品专区
|
||||||
|
* @param {*} data
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
|
||||||
|
export function queryNewZone() {
|
||||||
|
return request.get("/newGoods");
|
||||||
|
}
|
||||||
|
|||||||
@@ -42,6 +42,13 @@
|
|||||||
"navigationBarTitleText": "地标好物"
|
"navigationBarTitleText": "地标好物"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/home/newZone",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "新品专区",
|
||||||
|
"navigationBarBackgroundColor": "#FFFFFF"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/chose-city/chose-city",
|
"path": "pages/chose-city/chose-city",
|
||||||
"style": {
|
"style": {
|
||||||
|
|||||||
+130
-2
@@ -109,12 +109,47 @@
|
|||||||
/>
|
/>
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
</swiper>
|
</swiper>
|
||||||
<image
|
<!-- <image
|
||||||
v-if="contentFestival.indexImage"
|
v-if="contentFestival.indexImage"
|
||||||
:src="contentFestival.indexImage"
|
:src="contentFestival.indexImage"
|
||||||
mode="scaleToFill"
|
mode="scaleToFill"
|
||||||
@click="goFestival"
|
@click="goFestival"
|
||||||
/>
|
/> -->
|
||||||
|
<view class="new-zone-wrap">
|
||||||
|
<view class="kd" @click="toKD">
|
||||||
|
<view class="img-wrap">
|
||||||
|
<image style="width: 112rpx; height:26rpx" :src="webUrl + '/orderIcon/kd.png'" mode="heightFix|widthFix"></image>
|
||||||
|
</view>
|
||||||
|
<view class="tip-img">
|
||||||
|
<image style="width: 142rpx; height:66.11rpx;border-radius: 0" :src="webUrl + '/orderIcon/dot.png'" mode="heightFix|widthFix"></image>
|
||||||
|
</view>
|
||||||
|
<view class="kd-cover">
|
||||||
|
<video v-if="indexVideo" class="kd-cover v12-mt-0" :src="indexVideo" controls :poster="indexVideo + '?vframe/jpg/offset/1'"></video>
|
||||||
|
<view class="enter-btn">点击进入</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="xpsx">
|
||||||
|
<view class="img-wrap">
|
||||||
|
<image style="width: 140rpx; height:26.44rpx" :src="webUrl + '/orderIcon/xp.png'" mode="heightFix|widthFix"></image>
|
||||||
|
</view>
|
||||||
|
<view class="new-zone v12-mt-2" @click="toNewZone">
|
||||||
|
<swiper autoplay circular style="width: 100%;" interval="3000" next-margin="40rpx">
|
||||||
|
<swiper-item v-for="(item, index) in newZone" :key="index">
|
||||||
|
<view class="new-item">
|
||||||
|
<image :src="item.productImage" style="width: 120rpx; height: 120rpx; border-radius:10rpx"></image>
|
||||||
|
<view class="goods-info">
|
||||||
|
<view class="v12-font-22 more-t">{{ item.productTitle }}</view>
|
||||||
|
<view class="v12-primary-text v12-font-bold price-wrap">
|
||||||
|
<text class="v12-font-16">¥</text>
|
||||||
|
<text class="v12-font-24">{{ item.productPrice }}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</swiper-item>
|
||||||
|
</swiper>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 2022/6/20 add 尖货推荐 -->
|
<!-- 2022/6/20 add 尖货推荐 -->
|
||||||
@@ -291,6 +326,9 @@ export default {
|
|||||||
oldUserPopup: {},
|
oldUserPopup: {},
|
||||||
// 民宿专题轮播
|
// 民宿专题轮播
|
||||||
contentHomestay: [],
|
contentHomestay: [],
|
||||||
|
// 新品推荐
|
||||||
|
newZone: [],
|
||||||
|
indexVideo: '',
|
||||||
// 节日专题
|
// 节日专题
|
||||||
contentFestival: {},
|
contentFestival: {},
|
||||||
pageKeyId: Object.freeze('appIndex'),
|
pageKeyId: Object.freeze('appIndex'),
|
||||||
@@ -329,6 +367,12 @@ export default {
|
|||||||
this.scrollTop = e.scrollTop
|
this.scrollTop = e.scrollTop
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
toKD() {
|
||||||
|
this.$yrouter.push('/pages/VideoPlayBackList/VideoPlayBackList')
|
||||||
|
},
|
||||||
|
toNewZone() {
|
||||||
|
this.$yrouter.push('/pages/home/newZone')
|
||||||
|
},
|
||||||
init() {
|
init() {
|
||||||
getShareImage().then(({ data }) => this.shareAppImg = data)
|
getShareImage().then(({ data }) => this.shareAppImg = data)
|
||||||
sharpBannar().then(res => {
|
sharpBannar().then(res => {
|
||||||
@@ -370,6 +414,8 @@ export default {
|
|||||||
_this.$set(_this, 'oldUserPopup', data.oldUserPopup)
|
_this.$set(_this, 'oldUserPopup', data.oldUserPopup)
|
||||||
_this.$set(_this, 'contentHomestay', data.contentHomestayV2)
|
_this.$set(_this, 'contentHomestay', data.contentHomestayV2)
|
||||||
_this.$set(_this, 'contentFestival', data.contentFestivalV2)
|
_this.$set(_this, 'contentFestival', data.contentFestivalV2)
|
||||||
|
_this.$set(_this, 'newZone', data.newGoods)
|
||||||
|
_this.indexVideo = data.indexVideo.videoUrl
|
||||||
_this.bastLeftList = []
|
_this.bastLeftList = []
|
||||||
_this.bastRightList = []
|
_this.bastRightList = []
|
||||||
_this.lotteryCanDraw = data.lotteryCanDraw
|
_this.lotteryCanDraw = data.lotteryCanDraw
|
||||||
@@ -796,5 +842,87 @@ export default {
|
|||||||
margin: 0 0 0 20rpx;
|
margin: 0 0 0 20rpx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
.new-zone-wrap{
|
||||||
|
width: 336rpx;
|
||||||
|
height: 480rpx;
|
||||||
|
background: rgba(240,240,240,0.8);
|
||||||
|
border-radius: 16rpx;
|
||||||
|
padding: 10rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
.kd{
|
||||||
|
width: 100%;
|
||||||
|
height: 266rpx;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 16rpx;
|
||||||
|
padding: 10rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.xpsx{
|
||||||
|
width: 100%;
|
||||||
|
height: 180rpx;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 16rpx;
|
||||||
|
padding: 10rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.img-wrap{
|
||||||
|
height: 27rpx;
|
||||||
|
width: 140rpx;
|
||||||
|
image{
|
||||||
|
border-radius: 0 !important;
|
||||||
|
vertical-align: text-top !important
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tip-img{
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.kd-cover{
|
||||||
|
width: 100%;
|
||||||
|
height: 180rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
.enter-btn{
|
||||||
|
color: #333;
|
||||||
|
background-color: rgba(255,255,255,0.6);
|
||||||
|
font-size: 28rpx;
|
||||||
|
width: fit-content;
|
||||||
|
padding: 6rpx 20rpx;
|
||||||
|
border-radius: 100rpx;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 40rpx;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
.new-zone{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
.new-item{
|
||||||
|
display: flex;
|
||||||
|
margin-right: 20rpx;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.goods-info{
|
||||||
|
width: 122rpx;
|
||||||
|
height: 110rpx;
|
||||||
|
background: rgba(240,240,240,0.8);
|
||||||
|
border-radius: 0rpx 20rpx 20rpx 0rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 10rpx;
|
||||||
|
}
|
||||||
|
.price-wrap{
|
||||||
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -0,0 +1,148 @@
|
|||||||
|
<template>
|
||||||
|
<view class="new-zone-page">
|
||||||
|
<view class="zone-title">
|
||||||
|
<rich-text :nodes="details.title"></rich-text>
|
||||||
|
</view>
|
||||||
|
<view class="banner-zone v12-mt-2">
|
||||||
|
<image class="banner-zone" :src="details.banners[0] || ''" mode="heightFix|widthFix"></image>
|
||||||
|
<view class="swiper-wrap">
|
||||||
|
<swiper style="height: 100%;" :autoplay=" details.newProducts.length > 2" circular next-margin="460rpx" interval="3000">
|
||||||
|
<swiper-item v-for="(item, index) in details.newProducts" :key="index" @click="toGoods(item)">
|
||||||
|
<view class="new-card">
|
||||||
|
<image :src="item.productImage" class="new-card-img" mode="heightFix|widthFix"></image>
|
||||||
|
<view class="box-emp"></view>
|
||||||
|
<view class="new-info">
|
||||||
|
<view class="v12-font-30 one-t" style="width: 100px;text-align:center">{{ item.productTitle }}</view>
|
||||||
|
<view class="v12-font-bold">
|
||||||
|
<text>¥</text>
|
||||||
|
<text class=" v12-font-40">{{ item.productPrice }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="buy-btn">即刻选购</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</swiper-item>
|
||||||
|
</swiper>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="v12-mt-2 v12-align-center">
|
||||||
|
<view class="primary-title" v-if="details.contentTitle">
|
||||||
|
{{ details.contentTitle }}
|
||||||
|
<view class="title-line"></view>
|
||||||
|
</view>
|
||||||
|
<view class="secondary-title v12-ml-2" v-if="details.contentSubTitle">
|
||||||
|
—
|
||||||
|
{{ details.contentSubTitle }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cover-img v12-mt-2" v-for="(item, index) in details.contents" @click="toGoods(item)">
|
||||||
|
<image :src="item.contentImage" class="cover-img" mode="heightFix|widthFix"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { queryNewZone } from '@/api/activity'
|
||||||
|
export default{
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
details: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
queryNewZone().then(res => {
|
||||||
|
console.log(res);
|
||||||
|
this.details = res.data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
toGoods(item) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/shop/GoodsCon/index?id=${item.productId}`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.new-info{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.box-emp{
|
||||||
|
width: 100%;
|
||||||
|
height: 85rpx;
|
||||||
|
}
|
||||||
|
.buy-btn{
|
||||||
|
border-radius: 100px;
|
||||||
|
width: fit-content;
|
||||||
|
color: #fff;
|
||||||
|
background: #C52733;
|
||||||
|
font-size: 28rpx;
|
||||||
|
padding: 4rpx 20rpx;
|
||||||
|
}
|
||||||
|
.swiper-wrap{
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 400rpx;
|
||||||
|
left: 20rpx;
|
||||||
|
bottom: 40rpx;
|
||||||
|
}
|
||||||
|
.new-card{
|
||||||
|
width: 220rpx;
|
||||||
|
height: 240rpx;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
.cover-img{
|
||||||
|
width: 706rpx;
|
||||||
|
height: 400rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
}
|
||||||
|
.new-card-img{
|
||||||
|
position: absolute;
|
||||||
|
width: 150rpx;
|
||||||
|
height: 150rpx;
|
||||||
|
top: -75rpx;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
margin: auto;
|
||||||
|
border-radius: 50%;
|
||||||
|
|
||||||
|
}
|
||||||
|
.primary-title{
|
||||||
|
width: fit-content;
|
||||||
|
position: relative;
|
||||||
|
font-size: 34rpx;
|
||||||
|
color: #333333;
|
||||||
|
font-weight: 800;
|
||||||
|
}
|
||||||
|
.secondary-title{
|
||||||
|
font-family: Source Han Sans SC;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #999999;
|
||||||
|
line-height: 40rpx;
|
||||||
|
}
|
||||||
|
.title-line{
|
||||||
|
width: 100%;
|
||||||
|
height: 6rpx;
|
||||||
|
background: linear-gradient(to right, #C52733 0%, rgba(202,56,67,0.92) 51%, rgba(255,255,255,0) 100%);
|
||||||
|
border-radius: 6rpx;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 3rpx;
|
||||||
|
}
|
||||||
|
.new-zone-page{
|
||||||
|
min-height: 100vh;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20rpx;
|
||||||
|
}
|
||||||
|
.banner-zone{
|
||||||
|
width: 706rpx;
|
||||||
|
height: 760rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user