363 lines
8.3 KiB
Vue
363 lines
8.3 KiB
Vue
<template>
|
||
<view class="sdetails">
|
||
<u-swiper :list="list" height="500" border-radius="0" mode="dot"></u-swiper>
|
||
<view class="info">
|
||
<view class="title u-line-2">
|
||
<text>{{ goodsInfo.store_name }}</text>{{ goodsInfo.goods_name }}
|
||
</view>
|
||
<view class="pic">
|
||
<text>¥{{ goodsInfo.goods_price }}</text>
|
||
<s>¥{{ goodsInfo.goods_marketprice }}</s>
|
||
</view>
|
||
</view>
|
||
<view class="hr"></view>
|
||
<!-- <navs :value="领券"></navs> -->
|
||
<navs :value="'产品规格'"></navs>
|
||
<navs :value="'产品颜色'"></navs>
|
||
<navs :value="'选择尺码'"></navs>
|
||
<view class="hr"></view>
|
||
<view class="group-user" v-if="groupUser.length">
|
||
<view class="top">
|
||
<view class="title">{{ groupUser.length }}人正在拼团,可直接参与</view>
|
||
<view class="view-more">
|
||
<text>查看全部</text>
|
||
<image src="/static/image/common/1.png"></image>
|
||
</view>
|
||
</view>
|
||
<view class="bottom">
|
||
<view class="left">
|
||
<view class="avatar">
|
||
<image v-for="(user, i) in groupUser" :src="user[0].member_avatar" :key="i"></image>
|
||
</view>
|
||
<view class="all">
|
||
<text>查看全部</text>
|
||
<image src="/static/image/common/1.png"></image>
|
||
</view>
|
||
</view>
|
||
<view class="right">
|
||
<view class="launch-user">
|
||
<image :src="groupUser[0][0].member_avatar"></image>
|
||
<text class="u-line-1">{{ groupUser[0][0].member_nickname }}</text>
|
||
</view>
|
||
<view class="involvement-user">
|
||
<view class="item" v-for="(user, i) in groupUser.slice(1)" :key="i">
|
||
<image :src="user[0].member_avatar"></image>
|
||
<text class="u-line-1">{{ user[0].member_nickname }}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="xiangqing">
|
||
<view class="heng"></view>
|
||
<view class="title">商品详情</view>
|
||
<view class="heng"></view>
|
||
</view>
|
||
<view class="rich">
|
||
<rich-text :nodes="goodsInfo.mobile_body"></rich-text>
|
||
</view>
|
||
<!-- 拼团 tool -->
|
||
<view class="group-tool" v-if="type==2">
|
||
<view class="launch" @click="withImmediate">发起拼团</view>
|
||
<view class="involvement">参与拼团</view>
|
||
</view>
|
||
<!-- 普通商品 tool -->
|
||
<tloos @buy="buy" @xuanze="xuanze" :id="goodsInfo.goods_commonid" :info="info" v-if="type==1"></tloos>
|
||
<u-toast ref="uToast" />
|
||
</view>
|
||
</template>
|
||
<script>
|
||
import navs from "../components/sdetails/navs"
|
||
import tloos from "../components/sdetails/tloos"
|
||
export default {
|
||
name:"sdetails",
|
||
data() {
|
||
return {
|
||
list: [], // 轮播图列表
|
||
goodsInfo: {},
|
||
info:{},
|
||
glist:[],
|
||
id:0,
|
||
type: '', // 商品类型
|
||
groupUser: [], // 拼团用户
|
||
avatarWidth: '',
|
||
}
|
||
},
|
||
components:{
|
||
navs,
|
||
tloos
|
||
},
|
||
onLoad(option) {
|
||
this.id = option.id;
|
||
this.init();
|
||
},
|
||
methods: {
|
||
init() {
|
||
this.type = this.$store.getters.getGoodsType;
|
||
const info = this.$store.getters.getGoodsInfo;
|
||
console.log(info);
|
||
this.goodsInfo = info.goods;
|
||
this.groupUser = info.user;
|
||
// 设置轮播图
|
||
let list = [];
|
||
info.goods_image[0].forEach(item => {
|
||
let temp = {
|
||
image: item
|
||
}
|
||
list.push(temp);
|
||
})
|
||
this.list = list;
|
||
this.setTitle();
|
||
},
|
||
buy(info){
|
||
if(info.type == 2){
|
||
this.$u.api.addCart({
|
||
goods_id: this.id,
|
||
quantity: info.value,
|
||
}).then(res => {
|
||
this.$refs.uToast.show({
|
||
title: res.errCode[1],
|
||
type: res.errCode == 0 ? 'success' : 'warning',
|
||
})
|
||
})
|
||
}
|
||
},
|
||
getGoodsDetails(id) {
|
||
this.id = id;
|
||
this.$u.api.getGoodsDetails({ id: id }).then((res)=>{
|
||
if (res.errCode == 0) {
|
||
this.goodsInfo = res.data.goods;
|
||
let list = [];
|
||
res.data.goods_image[0].forEach(item => {
|
||
let temp = {
|
||
image: item
|
||
}
|
||
list.push(temp);
|
||
})
|
||
this.list = list;
|
||
// console.log(this.goodsInfo.mobile_body);
|
||
}
|
||
})
|
||
this.$u.api.goodsInfo({id}).then((res)=>{
|
||
// console.log(res)
|
||
this.info = res.data.goods;
|
||
this.glist = res.data.spec_list;
|
||
})
|
||
},
|
||
withImmediate() {
|
||
this.$u.api.withImmediate({
|
||
pintuan_id: this.id,
|
||
}).then(res => {
|
||
|
||
})
|
||
},
|
||
xuanze(id){
|
||
// console.log(id)
|
||
this.getGoodsDetails(this.glist[id])
|
||
},
|
||
setTitle() {
|
||
let title = '';
|
||
switch (this.type) {
|
||
case 1:
|
||
|
||
break;
|
||
case 2:
|
||
title = '拼团商品详情';
|
||
break;
|
||
case 1:
|
||
|
||
break;
|
||
case 1:
|
||
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
uni.setNavigationBarTitle({
|
||
title: title
|
||
});
|
||
},
|
||
},
|
||
}
|
||
</script>
|
||
<style lang="scss" scoped>
|
||
.sdetails{
|
||
padding-bottom: 98rpx;
|
||
.info{
|
||
padding: 30rpx;
|
||
.title{
|
||
flex-wrap: wrap;
|
||
margin-bottom: 30rpx;
|
||
>text{
|
||
padding: 13rpx;
|
||
font-size: 24rpx;
|
||
color:#fff;
|
||
margin-right: 13rpx;
|
||
background-color: #FF780F;
|
||
display: inline-block;
|
||
border-radius: 25rpx;
|
||
}
|
||
}
|
||
.pic{
|
||
>text{
|
||
font-size: 32rpx;
|
||
color: #FF3131;
|
||
}
|
||
>s{
|
||
font-size: 26rpx;
|
||
color: #999;
|
||
display: inline-block;
|
||
margin-left: 30rpx;
|
||
}
|
||
}
|
||
}
|
||
.hr{
|
||
width: 100%;
|
||
height: 20rpx;
|
||
background-color: #ececec;
|
||
}
|
||
.group-user {
|
||
padding: 30rpx;
|
||
.top {
|
||
margin-bottom: 28rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
.title {
|
||
font-size: 30rpx;
|
||
color: rgba(51,51,51,1);
|
||
}
|
||
.view-more {
|
||
font-size: 24rpx;
|
||
color: rgba(153,153,153,1);
|
||
> image {
|
||
margin-left: 10rpx;
|
||
width: 8rpx;
|
||
height: 16rpx;
|
||
}
|
||
}
|
||
}
|
||
.bottom {
|
||
display: flex;
|
||
align-items: center;
|
||
font-size: 22rpx;
|
||
color: rgba(153,153,153,1);
|
||
.left {
|
||
margin-right: 40rpx;
|
||
.avatar {
|
||
width: 120rpx;
|
||
height: 60rpx;
|
||
margin-bottom: 16rpx;
|
||
position: relative;
|
||
@mixin avatar($left, $index) {
|
||
width: 60rpx;
|
||
height: 60rpx;
|
||
border-radius: 50%;
|
||
position: absolute;
|
||
top: 0;
|
||
left: $left;
|
||
z-index: $index;
|
||
}
|
||
> image {
|
||
&:first-child {
|
||
background-color: aliceblue;
|
||
@include avatar($left: 0rpx, $index: 7);
|
||
}
|
||
&:nth-child(2) {
|
||
background-color: aquamarine;
|
||
@include avatar($left: 30rpx, $index: 8);
|
||
}
|
||
&:nth-child(3) {
|
||
background-color: antiquewhite;
|
||
@include avatar($left: 60rpx, $index: 9);
|
||
}
|
||
}
|
||
}
|
||
.all {
|
||
> image {
|
||
margin-left: 10rpx;
|
||
width: 8rpx;
|
||
height: 16rpx;
|
||
}
|
||
}
|
||
}
|
||
.right {
|
||
display: flex;
|
||
image {
|
||
background-color: aquamarine;
|
||
width: 60rpx;
|
||
height: 60rpx;
|
||
margin-bottom: 15rpx;
|
||
border-radius: 50%;
|
||
}
|
||
.launch-user {
|
||
margin-right: 40rpx;
|
||
text-align: center;
|
||
> text {
|
||
width: 98rpx;
|
||
display: block;
|
||
}
|
||
}
|
||
.involvement-user {
|
||
display: flex;
|
||
align-items: center;
|
||
.item {
|
||
text-align: center;
|
||
> text {
|
||
display: block;
|
||
width: 72rpx;
|
||
}
|
||
&:not(:last-child) {
|
||
margin-right: 30rpx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
.xiangqing{
|
||
display: flex;
|
||
height: 85rpx;
|
||
background-color: #ececec;
|
||
align-items: center;
|
||
justify-content: center;
|
||
.heng{
|
||
width: 79rpx;
|
||
height: 2rpx;
|
||
background-color: #a9a9a9;
|
||
|
||
}
|
||
font-size: 28rpx;
|
||
color: #999;
|
||
.title{
|
||
margin: 0 20rpx;
|
||
}
|
||
}
|
||
.rich {
|
||
width: 100%;
|
||
}
|
||
.group-tool {
|
||
position: fixed;
|
||
bottom: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 98rpx;
|
||
display: flex;
|
||
font-size: 32rpx;
|
||
color: rgba(255,255,255,1);
|
||
z-index: 99;
|
||
.launch {
|
||
flex: 1;
|
||
background: rgba(253,211,96,1);
|
||
line-height: 98rpx;
|
||
text-align: center;
|
||
}
|
||
.involvement {
|
||
flex: 1;
|
||
background: rgba(255,120,15,1);
|
||
line-height: 98rpx;
|
||
text-align: center;
|
||
}
|
||
}
|
||
}
|
||
</style> |