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.
389 lines
8.2 KiB
389 lines
8.2 KiB
<template> |
|
<view class="good_detail_page" v-show="data.goodsImageUrl"> |
|
<view class="current_goods"> |
|
<img class="main_img" :src="data.goodsImageUrl" /> |
|
<view class="current_goods_text"> |
|
<text class="goods_title">{{data.goodsDesc}}</text> |
|
<view class="price"> |
|
<text>¥{{(data.minGroupPrice - data.couponDiscount) / 100 }} |
|
<text class="yuanjia">团购价¥{{data.minGroupPrice/100}} |
|
原价¥{{data.minNormalPrice/100}}</text></text> |
|
</view> |
|
|
|
<view class="biaoqian"> |
|
<text v-for="(item,index) in data.unifiedTags" :key="index" class="biaoqian_text" v-if="item">{{item}}</text> |
|
</view> |
|
|
|
<view class="goods_dp"> |
|
<image class="goodsa_dp_img" :src="data.mallImgUrl" mode="aspectFit"></image> |
|
<view class="goodsa_dp_name"> |
|
<view>{{data.goodsName}}</view> |
|
<view class="hot">已拼{{data.salesTip}}件</view> |
|
</view> |
|
</view> |
|
</view> |
|
<view v-for="(item,index) in data.goodsGalleryUrls" :key="index"> |
|
<image class="current_imgs" :src="item" mode="aspectFill"></image> |
|
</view> |
|
</view> |
|
<view type="warn" class="buy_btn"> |
|
<view class="topbtn" @click="toTop()">↑TOP</view> |
|
<view class="price"> |
|
<view><text class="juanhou">券后</text> |
|
¥{{(data.minGroupPrice - data.couponDiscount) / 100 }}</view> |
|
<view class="yuanjia">原价¥{{data.minNormalPrice/100}} 团购价¥{{data.minGroupPrice/100}} |
|
券¥{{data.couponDiscount/100}}</view> |
|
<button @click="buy" type="warn" class="btn">领劵购买</button> |
|
</view> |
|
</view> |
|
<!-- #ifdef APP --> |
|
<view class="fenxiang" @click="fenxiang()">分享</view> |
|
<!-- #endif --> |
|
<view class="tuijian_list"> |
|
<view class="tuijian_title">为您推荐</view> |
|
<scroll-view style="width: 100%;height: 100%;" scroll-y="true" @scrolltolower="getList()"> |
|
<view class="tuijian_item" v-for="(item,index) in list" :key="index"> |
|
<good :data="item" :search_id="item.search_id" :pid="pid"></good> |
|
</view> |
|
<uni-load-more :status="moreStatus" color="#FE5353"></uni-load-more> |
|
</scroll-view> |
|
</view> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
import good from './good_com/good.vue' |
|
import { pddDetail,pddLink } from '@/api/store' |
|
import fenxiang from './utils/share.js' |
|
export default { |
|
components: { |
|
good |
|
}, |
|
|
|
data() { |
|
return { |
|
goodSign:"", |
|
hasLogin: true, |
|
data: {}, |
|
id: '', |
|
list: [], |
|
page: 1, |
|
moreStatus: '', |
|
search_id: '', |
|
pid: '' |
|
}; |
|
}, |
|
computed: { |
|
price() { |
|
if (!this.data) { |
|
return; |
|
} |
|
if (this.data.coupon_discount && this.data.min_group_price) { |
|
return (this.data.min_group_price - this.data.coupon_discount) / 100 |
|
} |
|
return this.data.min_group_price / 100 || '' |
|
} |
|
}, |
|
// #ifdef APP |
|
onBackPress({ |
|
from |
|
}) { |
|
if (from == 'backbutton') { |
|
this.$nextTick(function() { |
|
uniShare.hide() |
|
}) |
|
return uniShare.isShow; |
|
} |
|
}, |
|
// #endif |
|
|
|
onReachBottom() { |
|
if (this.moreStatus != 'nomore') { |
|
this.getList() |
|
} |
|
}, |
|
mounted() { |
|
this.goodSign = this._route.query.goodSign; |
|
this.getData(); |
|
}, |
|
methods: { |
|
async buy() { |
|
pddLink(this.goodSign).then(res=>{ |
|
|
|
uni.navigateToMiniProgram({ |
|
appId: res.data.weAppInfo.appId, |
|
path: res.data.weAppInfo.pagePath |
|
}) |
|
}) |
|
|
|
|
|
|
|
}, |
|
doWeb() { |
|
pddApi.promotion_url_generate(this.data.goods_sign, this.pid, this.search_id).then( |
|
res => { |
|
let data = res.data.goods_promotion_url_generate_response |
|
.goods_promotion_url_list[0] |
|
console.log('普通链接:', data) |
|
uni.setStorageSync('webUrl', data.mobile_url) |
|
// #ifndef MP |
|
uni.navigateTo({ |
|
url: '/uni_modules/aliea-goods/pages/webview/webview' |
|
}) |
|
// #endif |
|
|
|
// #ifdef MP |
|
uni.navigateToMiniProgram({ |
|
appId: data.we_app_info.app_id, |
|
path: data.we_app_info.page_path |
|
}) |
|
// #endif |
|
}) |
|
}, |
|
getData() { |
|
pddDetail(this.goodSign).then(res=>{ |
|
console.log(res); |
|
this.data = res.data; |
|
// this.getList(); |
|
uni.setNavigationBarTitle({ |
|
title: this.data.goodsDesc |
|
}) |
|
this.toTop() |
|
}) |
|
|
|
}, |
|
getList() { |
|
this.moreStatus = 'loading' |
|
pddApi.goodsRecommend(this.data.cat_ids[0], this.id, this.pid, this.list.length).then(res => { |
|
res.data.goods_basic_detail_response.list.forEach((item, index) => { |
|
item.search_id = res.data.goods_basic_detail_response.search_id |
|
this.list.push(item) |
|
}) |
|
if (this.list.length == 0) { |
|
this.moreStatus = 'nomore' |
|
} else { |
|
this.moreStatus = 'more' |
|
} |
|
}).catch(err => { |
|
this.moreStatus = 'error' |
|
}) |
|
}, |
|
|
|
toTop() { |
|
uni.pageScrollTo({ |
|
duration: 0, |
|
scrollTop: 0 |
|
}) |
|
}, |
|
async fenxiang() { |
|
//#ifdef APP |
|
let url = "/#/uni_modules/aliea-goods/pages/goods/goodDetail?id=" + this.id + |
|
"&search_id=" + this.search_id |
|
if (this.pid) { |
|
url += '&p_id=' + this.pid |
|
} |
|
|
|
fenxiang(this.data.mall_name, url, this.data.goods_desc, this.data.goods_thumbnail_url) |
|
//#endif |
|
} |
|
} |
|
} |
|
</script> |
|
|
|
<style lang="scss"> |
|
.good_detail_page { |
|
width: 100%; |
|
height: auto; |
|
background-color: antiquewhite; |
|
|
|
.fenxiang { |
|
position: fixed; |
|
display: flex; |
|
flex-direction: column; |
|
right: 15rpx; |
|
bottom: 270rpx; |
|
width: 60rpx; |
|
line-height: 60rpx; |
|
background-color: #ff5500; |
|
border-radius: 50%; |
|
z-index: 1000; |
|
border: #55aa00 10rpx dashed; |
|
color: #ffffff; |
|
padding: 15rpx; |
|
text-align: center; |
|
font-size: 28rpx; |
|
|
|
} |
|
|
|
.current_goods { |
|
width: 100%; |
|
background-color: antiquewhite; |
|
display: block; |
|
|
|
.main_img { |
|
width: 100%; |
|
} |
|
|
|
.current_imgs { |
|
width: 750rpx; |
|
height: 750rpx; |
|
margin: 10rpx 0rpx; |
|
} |
|
|
|
.current_goods_text { |
|
// border: #ccc 1px solid; |
|
margin: 30rpx; |
|
padding: 30rpx; |
|
border-radius: 20rpx; |
|
background-color: #fff; |
|
|
|
.price { |
|
position: relative; |
|
margin: 20rpx 0; |
|
font-size: 60rpx; |
|
font-weight: 600; |
|
color: red; |
|
|
|
.yuanjia { |
|
margin-left: 20rpx; |
|
text-decoration: line-through; |
|
font-size: 28rpx; |
|
color: #868686; |
|
font-weight: normal; |
|
} |
|
} |
|
|
|
|
|
|
|
.biaoqian { |
|
|
|
position: relative; |
|
|
|
.biaoqian_text { |
|
display: inline-block; |
|
background-color: #ff5500; |
|
padding: 10rpx; |
|
margin: 5rpx; |
|
color: #fff; |
|
border-radius: 15rpx; |
|
line-height: 35rpx; |
|
font-size: 28rpx; |
|
} |
|
} |
|
|
|
.goods_title { |
|
margin-bottom: 20rpx; |
|
line-height: 40rpx; |
|
font-weight: bold; |
|
font-size: 30rpx; |
|
} |
|
|
|
.goods_dp { |
|
width: 100%; |
|
margin-top: 30rpx; |
|
font-size: 28rpx; |
|
font-weight: bold; |
|
|
|
.goodsa_dp_img { |
|
width: 100rpx; |
|
height: 100rpx; |
|
vertical-align: top; |
|
margin-right: 10rpx; |
|
} |
|
|
|
.goodsa_dp_name { |
|
display: inline-block; |
|
line-height: 50rpx; |
|
font-size: 26rpx; |
|
|
|
.hot { |
|
color: #ff0000; |
|
font-weight: bold; |
|
} |
|
} |
|
|
|
} |
|
} |
|
} |
|
|
|
.buy_btn { |
|
|
|
position: fixed; |
|
background-color: #ff634e; |
|
text-align: center; |
|
z-index: 10; |
|
width: 750rpx; |
|
height: 230rpx; |
|
bottom: 0; |
|
color: #fff; |
|
padding: 30rpx; |
|
|
|
.topbtn { |
|
position: absolute; |
|
right: 40rpx; |
|
top: 0rpx; |
|
width: 100rpx; |
|
height: 45rpx; |
|
background-color: #e20000; |
|
font-size: 28rpx; |
|
padding: 0; |
|
line-height: 45rpx; |
|
color: #fff; |
|
} |
|
|
|
.price { |
|
color: #fff; |
|
font-size: 45rpx; |
|
|
|
.btn { |
|
width: 250rpx; |
|
line-height: 60rpx; |
|
border: #efefef 1px solid; |
|
border-radius: 20rpx; |
|
background-color: #ec0000; |
|
font-size: 38rpx; |
|
} |
|
|
|
.juanhou { |
|
color: #fff; |
|
font-size: 26rpx; |
|
} |
|
|
|
.yuanjia { |
|
margin-left: 20rpx; |
|
font-size: 26rpx; |
|
color: #e7e7e7; |
|
font-weight: normal; |
|
margin: 10rpx auto; |
|
} |
|
} |
|
} |
|
|
|
.tuijian_list { |
|
margin-top: 20rpx; |
|
width: 100%; |
|
height: 100%; |
|
|
|
.tuijian_title { |
|
width: 100%; |
|
line-height: 40rpx; |
|
background-color: #fff; |
|
padding: 20rpx; |
|
margin-bottom: 20rpx; |
|
font-size: 30rpx; |
|
font-weight: bold; |
|
border-top: #cfcfcf 1px solid; |
|
border-bottom: #cfcfcf 1px solid; |
|
} |
|
|
|
.tuijian_item { |
|
display: inline-block; |
|
width: 355rpx; |
|
margin: 10rpx; |
|
} |
|
} |
|
|
|
|
|
|
|
} |
|
</style> |