耀实惠小程序
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.
 
 
 

566 lines
21 KiB

<template>
<view class="goods-items" @click="toGoodsInfo(goods.id,1)">
<view class="position-relative m-b-10 overflow-hidden">
<image v-show="segmentedControlCurrent === 0" class="goods-items-image" :src="goods.pic" mode="aspectFill"></image>
<view v-show="segmentedControlCurrent === 1" class="position-relative">
<!-- @click.stop="play(goods.picVo)" -->
<!-- <image class="goods-items-image" :src="goods.pic" mode="aspectFill"></image> -->
<video class="goods-items-image" :src="picVo[0]" id="myVideo"></video>
<!-- <view class="position-absolute goods-items-play"><u-icon name="play-circle" color="#fff" size="80"></u-icon></view> -->
</view>
<!-- <view v-else @click.stop>
<video class="goods-items-image" :src="video_src" id="myVideo"></video>
</view> -->
<view class="position-absolute goods-items-tag flex justify-end align-center" v-show="!!goods.hotText">
<view class="goods-items-tag-content flex align-center justify-center font-26 text-white">{{ goods.hotText }}</view>
</view>
<view class="position-absolute goods-items-segmented-control flex align-center" id="segmentedControl" v-if="goods.voType == 1">
<view
class="goods-items-segmented-control-item flex align-center justify-center flex-1"
:class="{ 'goods-items-segmented-control-item--active': segmentedControlCurrent === index }"
v-for="(item, index) in subsectionList"
:key="index"
@click.stop="onSegmentedControl(index)"
>
{{ item.name }}
</view>
<view class="goods-items-segmented-control-bar" :style="[segmentedControlLeft]"></view>
</view>
<!-- <video id="myVideo" src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20200317.mp4" enable-danmu danmu-btn controls></video> -->
</view>
<view class="goods-items-title u-line-2 w-100 overflow-hidden font-36 text-black">
<u-tag v-if="goods.payNum == 1" text="处方药" mode="dark" />
<u-tag v-if="goods.isSituation == 1" text="防疫药" mode="dark" type="success"/>
<!-- 限制字数长度 打点 -->
<text >{{title}}</text>
<view class="heat flex align-center" style="float: right;">
<image :src="IMG_URL + 'goods/hot.png'" style="width: 23rpx; height: 25rpx;" mode="" alt="火图片"></image>
<text class="m-l-10 text-EE8414" style="font-size: 28rpx;">人气值: {{ goods.daySale }}</text>
</view>
</view>
<view class=" flex flex-column">
<view class="money_box flex align-center flex-1 m-b-6">
<view class="font-36 text-red" v-if="thereTo !== 'integralStore'">
本网价
<text class="big font-42" >{{ goods.payMoney }}</text>
</view>
<view class="font-36 text-red" v-else>
兑购金:
<text class="big">{{ goods.integerPrice }}</text>
</view>
<view class="through_money m-l-10 font-28" v-if="thereTo === 'integralStore'"></view>
<view class="through_money m-l-10 font-28" v-else>市场价:{{ goods.price }} 元</view>
<!-- <com-view>
<view class="goods-items-add flex align-center justify-center"><u-icon name="shopping-cart" color="#fff" size="34"></u-icon></view>
</com-view> -->
</view>
<!-- 普通用户展示的信息 -->
<template v-if="thereTo">
<view class="font-32" v-if="(thereTo == 'ZeroMoneyBuy' || thereTo == 'todayAllReturn' || thereTo == 'membersArea') && goods.giveType == 1">
<text v-if="userInfo.level == 1 && !(goods.oneMomey == 0 && goods.oneInteger == 0)" class="return_box">
再返:{{ goods.oneMomey == 0 ? '' : goods.oneMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.oneInteger == 0 ? '' : goods.oneInteger + '元兑购金' }}
</text>
<text v-if="userInfo.level == 2 && !(goods.twoMomey == 0 && goods.twoInteger == 0)" class="return_box">
再返:{{ goods.twoMomey == 0 ? '' : goods.twoMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.twoInteger == 0 ? '' : goods.twoInteger + '元兑购金' }}
</text>
<text v-if="userInfo.level == 3 && !(goods.threeMomey == 0 && goods.threeInteger == 0)" class="return_box">
再返:{{ goods.threeMomey == 0 ? '' : goods.threeMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.threeInteger == 0 ? '' : goods.threeInteger + '元兑购金' }}
</text>
<text v-if="userInfo.level == 4 && !(goods.fourMomey == 0 && goods.fourInteger == 0)" class="return_box">
再返:{{ goods.fourMomey == 0 ? '' : goods.fourMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.fourInteger == 0 ? '' : goods.fourInteger + '元兑购金' }}
</text>
<!-- <text class="return_text" v-if="goods.payMoney !== 0" >可用{{goods.payMoney}}元消费金兑购</text> -->
</view>
<!-- <view class="font-28 text-red m-b-6" v-if="thereTo !== 'scienceIsTie-in' && goods.endTime">活动结束时间: {{ goods.endTime }}</view> -->
<!-- <view class="font-28 text-red m-b-6" v-if="(thereTo == 'ZeroMoneyBuy' || thereTo == 'todayAllReturn' || thereTo == 'membersArea') &&goods.endTime">活动结束时间: {{ goods.endTime }}</view> -->
<view v-if="(thereTo == 'ZeroMoneyBuy' || thereTo == 'todayAllReturn' || thereTo == 'membersArea') && goods.giveType == 0">
<!-- <text class="return_text" v-if="goods.payMoney !== 0" >可用{{goods.payMoney}}元消费金兑购</text> -->
<text v-if="!(goods.allMoney == 0 && goods.allInteger == 0) " class="return_box font-32">
再返:{{ goods.allMoney == 0 ? '' : goods.allMoney + '元消费金' }}&nbsp;&nbsp;{{ goods.allInteger == 0 ? '' : goods.allInteger + '元兑购金' }}
</text>
</view>
<!-- 拼团 -->
<view class="font-28" v-if="thereTo == 'PreferentialSpellGroup' && goods.giveType == 1">
<!-- <text v-if="userInfo.level == 1 && goods.oneMomey == 0" class="return_box">再返:{{ goods.oneMomey }}元消费金</text>
<text v-if="userInfo.level == 2 && goods.twoMomey == 0" class="return_box">再返:{{ goods.twoMomey }}元消费金</text>
<text v-if="userInfo.level == 3 && goods.threeMomey == 0" class="return_box">再返:{{ goods.threeMomey }}元消费金</text>
<text v-if="userInfo.level == 4 && goods.fourMomey == 0" class="return_box">再返:{{ goods.fourMomey }}元消费金</text> -->
<text v-if="userInfo.level == 1 && !(goods.oneMomey == 0 && goods.oneInteger == 0)" class="return_box">
再返:{{ goods.oneMomey == 0 ? '' : goods.oneMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.oneInteger == 0 ? '' : goods.oneInteger + '元兑购金' }}
</text>
<text v-if="userInfo.level == 2 && !(goods.twoMomey == 0 && goods.twoInteger == 0)" class="return_box">
再返:{{ goods.twoMomey == 0 ? '' : goods.twoMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.twoInteger == 0 ? '' : goods.twoInteger + '元兑购金' }}
</text>
<text v-if="userInfo.level == 3 && !(goods.threeMomey == 0 && goods.threeInteger == 0)" class="return_box">
再返:{{ goods.threeMomey == 0 ? '' : goods.threeMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.threeInteger == 0 ? '' : goods.threeInteger + '元兑购金' }}
</text>
<text v-if="userInfo.level == 4 && !(goods.fourMomey == 0 && goods.fourInteger == 0)" class="return_box">
再返:{{ goods.fourMomey == 0 ? '' : goods.fourMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.fourInteger == 0 ? '' : goods.fourInteger + '元兑购金' }}
</text>
</view>
<!-- <view class="font-28 text-red m-b-6" v-if="thereTo == 'PreferentialSpellGroup' &&goods.endTime">活动结束时间: {{ goods.endTime }}</view> -->
<view class="font-28" v-if="thereTo == 'PreferentialSpellGroup' && goods.giveType == 0">
<!-- <text v-if="goods.allMoney == 0 && goods.allMoney == 0" class="return_box">再返:{{ goods.allMoney }}元消费金</text> -->
<text v-if="!(goods.allMoney == 0 && goods.allInteger == 0) " class="return_box">
再返:{{ goods.allMoney == 0 ? '' : goods.allMoney + '元消费金' }}&nbsp;&nbsp;{{ goods.allInteger == 0 ? '' : goods.allInteger + '元兑购金' }}
</text>
</view>
<!-- 站长控制的显示的佣金 -->
<view class="font-28 m-b-20" v-if="changeShowBrokerage" >
<view class="master_money">站长佣金¥<text>{{goods.getSWallet}}</text> </view>
</view>
<!-- 合伙人控制的显示的佣金 -->
<view class="font-28 m-b-20" v-if="changeShowCommission" >
<view class="master_money">合伙人佣金¥<text>{{goods.getCWallet}}</text> </view>
</view>
<!-- <view class="rebate font-30 flex flex-column" v-if="!goods.giveType">
<view class="m-b-4 m-r-6"><u-tag class="font-30" :text="`次卡再返消费金${goods.oneMomey}元`" mode="dark" /></view>
<view class="m-b-4 m-r-6"><u-tag type="success" :text="`银卡再返消费金${goods.twoMomey}元`" mode="dark" /></view>
<view class="m-b-4 m-r-6"><u-tag type="warning" :text="`金卡再返消费金${goods.threeMomey}元`" mode="dark" /></view>
<view class="m-b-4 m-r-6"><u-tag type="info" :text="`钻石卡再返消费金${goods.fourMomey}元`" mode="dark" /></view>
</view> -->
<!-- goods.giveType==0 所有人可见 -->
<view class="rebate font-30 flex flex-column" v-if="goods.giveType == 1">
<text class="bg_style bgcolor1" v-if="goods.oneMomey !== 0 || goods.oneInteger !== 0 ">次卡再返:{{ goods.oneMomey == 0 ? '' : goods.oneMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.oneInteger == 0 ? '' : goods.oneInteger + '元兑购金' }}</text>
<text class="bg_style bgcolor2" v-if="goods.twoMomey !== 0 || goods.twoInteger !== 0 ">银卡再返:{{ goods.twoMomey == 0 ? '' : goods.twoMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.twoInteger == 0 ? '' : goods.twoInteger + '元兑购金' }}</text>
<text class="bg_style bgcolor3" v-if="goods.threeMomey !== 0 || goods.threeInteger !== 0 ">金卡再返:{{ goods.threeMomey == 0 ? '' : goods.threeMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.threeInteger == 0 ? '' : goods.threeInteger + '元兑购金' }}</text>
<text class="bg_style bgcolor4" v-if="goods.fourMomey !== 0 || goods.fourInteger !== 0 ">钻石卡再返:{{ goods.fourMomey == 0 ? '' : goods.fourMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.fourInteger == 0 ? '' : goods.fourInteger + '元兑购金' }}</text>
</view>
<view class="font-28 text-red m-b-6" v-if="goods.endTime">活动结束时间: {{ goods.endTime }}</view>
<view class="font-28" v-if=" thereTo=='home' && goods.giveType == 0">
<text v-if="!(goods.allMoney == 0 && goods.allInteger == 0) " class="return_box">
再返:{{ goods.allMoney == 0 ? '' : goods.allMoney + '元消费金' }}&nbsp;&nbsp;{{ goods.allInteger == 0 ? '' : goods.allInteger + '元兑购金' }}
</text>
</view>
<!-- <view class="rebate font-30 flex flex-column" v-else>
<text class="bg_style bgcolor1" v-if="goods.oneMomey !== 0 || goods.oneInteger !== 0 ">次卡再返:{{ goods.oneMomey == 0 ? '' : goods.oneMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.oneInteger == 0 ? '' : goods.oneInteger + '元兑购金' }}</text>
<text class="bg_style bgcolor2" v-if="goods.twoMomey !== 0 || goods.twoInteger !== 0 ">银卡再返:{{ goods.twoMomey == 0 ? '' : goods.twoMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.twoInteger == 0 ? '' : goods.twoInteger + '元兑购金' }}</text>
<text class="bg_style bgcolor3" v-if="goods.threeMomey !== 0 || goods.threeInteger !== 0 ">金卡再返:{{ goods.threeMomey == 0 ? '' : goods.threeMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.threeInteger == 0 ? '' : goods.threeInteger + '元兑购金' }}</text>
<text class="bg_style bgcolor4" v-if="goods.fourMomey !== 0 || goods.fourInteger !== 0 ">钻石卡再返:{{ goods.fourMomey == 0 ? '' : goods.fourMomey + '元消费金' }}&nbsp;&nbsp;{{ goods.fourInteger == 0 ? '' : goods.fourInteger + '元兑购金' }}</text>
</view> -->
<!-- 拼团 -->
<view class="add_shop_car_P font-28" v-if="thereTo == 'PreferentialSpellGroup'">
<view class="show_btn_p">
<u-icon name="play-right-fill"></u-icon>
<text>{{ goods.sum }}人成团</text>
</view>
<button class="addCar" @click.stop="toGoodsInfo(goods.id)">查看详情</button>
</view>
<!-- 兑购金 -->
<view class="add_shop_car_I font-28" v-else-if="thereTo == 'integralStore'">
<!-- <text class="return_text" v-if="goods.payMoney !== 0" >可用{{goods.payMoney}}元消费金兑购</text> -->
<!-- <text v-if="goods.integerOldPrice == 0">{{ goods.payMoney }}元({{ goods.integerOldPrice }}元兑购金兑购)</text> -->
<!-- <button class="addCar" @click.stop="toGoodsInfo(goods.id)">查看详情</button> -->
</view>
<!-- <view class="add_shop_car" v-else>
<view class="show_btn">
<view class="box">
<u-icon color="#fff" size="20" name="play-right-fill"></u-icon>
<text> 可用{{goods.payMoney}}元消费金兑购</text>
</view>
<view class="box">
<u-icon color="#fff" size="20" name="play-right-fill"></u-icon>
<text>推广可得兑购金{{ goods.getInteger }}元</text>
</view>
</view>
<button class="addCar">加入购物车</button>
</view> -->
<view v-else>
<view class="flex flex-column m-b-10">
<!-- <text class="return_text" v-if="goods.payMoney !== 0 && goods.bottonType == 0 && thereTo == 'sort'" >可用{{goods.payMoney}}元消费金兑购</text> -->
<text class="return_text" v-if="goods.payMoney !== 0" >可用{{goods.payMoney}}元消费金抵购</text>
<text class="return_text" v-if="goods.integerOldPrice !== 0" >可用{{goods.integerOldPrice}}兑购金兑购</text>
<div class="flex justify-between">
<!-- <text class="return_text" v-if="goods.getInteger !== 0">推广可得兑购金{{goods.getInteger}}元</text> -->
<text class="return_text" v-if="thereTo == 'sort' && goods.getMoney!==0">推广可得兑购金{{goods.getMoney}}元</text>
<text class="return_text" v-if="thereTo !== 'sort'">推广可得兑购金{{goods.getMoney}}元</text>
<!-- <text class="return_text" v-if="goods.integerPrice == 0 ? '' : goods.integerPrice">推广可得兑购金{{goods.getInteger}}元</text> -->
<button class="addCar" v-if="thereTo !== 'sort'" @click.stop="toGoodsInfo(goods.id)">查看详情</button>
</div>
<view class="m-b-4">
<!-- <u-tag size="mini" :text="`可用${goods.payMoney}元消费金兑购`" mode="plain" /> -->
</view>
<view class="m-b-4">
<!-- <u-tag size="mini" :text="`推广可得兑购金${goods.getInteger}元`" mode="plain" /> -->
</view>
</view>
<view class="flex justify-between align-center">
<!-- <button class="addCar" @click.stop="toGoodsInfo(goods.id)">查看详情</button> -->
<!-- <button class="addCar">加入购物车</button> -->
</view>
</view>
</template>
</view>
</view>
</template>
<script>
import { IMG_URL } from '@/env.js';
let subsectionList = [{ name: '图片', key: 'image' }, { name: '视频', key: 'video' }];
export default {
props: {
goods: {
type: Object,
default: {}
},
// 从哪里来的
thereTo: {
type: String,
default: ''
},
// 站长控制的佣金显示
changeShowBrokerage: {
type: Boolean,
default: false
},
// 合伙人控制的佣金显示
changeShowCommission: {
type: Boolean,
default: false
}
},
data() {
return {
IMG_URL,
subsectionList,
// userInfo: {},
segmentedControlInfo: null,
segmentedControlCurrent: 0
};
},
async mounted() {
// this.userInfo = uni.getStorageSync("__user_info");
this.$store.state.userInfo;
this.segmentedControlInfo = await this.$util.getDomInfo('#segmentedControl', this);
},
computed: {
title(){
// goods.subTitle,goods.title.substr
console.log()
let str = `${this.$props.goods.subTitle}${this.$props.goods.title}`
if(this.$props.thereTo !== 'sort'){
if(str.length>31){
str = str.substr(0,31) + '...'
}
}else{
if(str.length>18){
str = str.substr(0,18) + '...'
}
}
return str
},
picVo () {
return this.goods.picVo ? this.goods.picVo.split(',') : []
},
segmentedControlLeft() {
let width = this.segmentedControlInfo?.width ?? 0 / 2;
let left = width * this.segmentedControlCurrent;
return {
transform: `translateX(${left}rpx)`
};
}
},
methods: {
onSegmentedControl(idx) {
this.segmentedControlCurrent = idx;
},
toGoodsInfo(id,index=0) {
// 播放视频 阻止跳转 index 0 图片 1 视频
if(index == 1 && this.segmentedControlCurrent == 1){
return
}
console.log(this.thereTo)
this.$tools.navigateTo({
url: `/pagesC/goodsInfo/goodsInfo?id=${id}&type=${this.thereTo}`
});
},
play(picVo) {
this.$tools.navigateTo({
url: `/pagesC/videoPlay/videoPlay?picVo=${picVo}`
});
}
}
};
</script>
<!-- scoped -->
<style lang="scss" scoped>
::v-deep u-tag .u-size-default{
font-size: 28rpx !important;
}
.goods-items {
margin-top: 20rpx;
padding: 30rpx 16rpx 20rpx;
background: #ffffff;
border-radius: 34rpx;
box-shadow: 0px 6rpx 12rpx 0px rgba(0, 0, 0, 0.16);
&-image {
width: 100%;
height: 300rpx;
}
&-play {
left: 50%;
bottom: 50%;
transform: translate(-50%, 50%);
}
&-title {
line-height: 50rpx;
}
&-add {
margin-right: 20rpx;
width: 80rpx;
height: 50rpx;
border-radius: 18rpx;
background-color: $u-type-primary;
}
&-tag {
// width: 150rpx;
// height: 110rpx;
// transform: translateX(20rpx);
// transform: translate(50%, 50%);
transform: rotate(45deg);
top: 0;
right: 0;
&-content {
transform: translate(30%, -30%);
width: 300rpx;
height: 50rpx;
background-color: #db0618;
box-shadow: 0px 6rpx 12rpx 0px rgba(0, 0, 0, 0.1);
}
}
&-segmented-control {
width: 200rpx;
height: 50rpx;
background: #fff;
border-radius: 40rpx;
right: 20rpx;
bottom: 20rpx;
&-item {
position: relative;
z-index: 1;
color: #000;
font-size: 24rpx;
transition: all 0.2s linear;
&--active {
color: #fff;
}
}
&-bar {
width: 50%;
height: 100%;
border-radius: 40rpx;
position: absolute;
background-color: $u-type-primary;
z-index: 0;
transition: all 0.2s linear;
}
}
}
.money_box {
.through_money {
color: #707070;
font-size: 24rpx;
text-decoration: line-through;
}
}
.return_box {
display: inline-block;
border-radius: 30.5rpx;
border: 1px solid #db0618;
// font-size: 24rpx;
color: #db0618;
padding: 15rpx 18rpx;
box-sizing: border-box;
margin-top: 16rpx;
margin-bottom: 24rpx;
margin-left: 15rpx;
}
.return_text{
width: fit-content;
border: 1px solid #01AEEA;
background-color: #fff;
color: #01AEEA;
border-radius: 6rpx;
font-size: 36rpx;
padding: 6rpx 12rpx;
margin-bottom: 10rpx;
}
.rebate {
width: 100%;
display: flex;
flex-wrap: wrap;
// margin-bottom: 6rpx;
.bg_style{
width: fit-content;
font-size: 36rpx;
padding: 10rpx 20rpx;
margin-bottom: 10rpx;
border-radius: 12rpx;
color: #fff;
}
.bgcolor1 {
background-color: #58efa9;
display: inline-block;
}
.bgcolor2 {
background-color: #ffa952;
display: inline-block;
}
.bgcolor3 {
background-color: #f94343;
display: inline-block;
}
.bgcolor4 {
background-color: #000000;
display: inline-block;
}
}
.add_shop_car_P {
display: flex;
width: 100%;
justify-content: space-between;
align-items: center;
margin-top: 22rpx;
.show_btn_p {
display: flex;
align-items: center;
margin-top: 15rpx;
margin-left: 15rpx;
margin-bottom: 27rpx;
background-color: #fa3838;
color: #fff;
padding-left: 10rpx;
padding-right: 30rpx;
height: 66rpx;
border-radius: 15rpx;
box-sizing: border-box;
text {
margin-top: 0;
margin-left: 10rpx;
color: #fff;
}
}
// .addCar {
// width: 240rpx;
// height: 75rpx;
// margin: 0;
// border-radius: 37.5rpx;
// background-color: #01aeea;
// color: #fff;
// font-size: 26rpx;
// line-height: 76rpx;
// text-align: center;
// margin-right: 14rpx;
// // margin-bottom: 27rpx;
// }
}
.add_shop_car_I {
display: flex;
width: 100%;
justify-content: space-between;
align-items: flex-start;
margin-top: 22rpx;
text {
margin-top: 20rpx;
margin-left: 20rpx;
color: #db0618;
font-size: 36;
}
}
.add_shop_car {
display: flex;
width: 100%;
justify-content: space-between;
align-items: flex-end;
.show_btn {
display: flex;
flex-direction: column;
margin-top: 15rpx;
margin-left: 15rpx;
margin-bottom: 27rpx;
.box {
padding-left: 20rpx;
padding-right: 20rpx;
padding-bottom: 15rpx;
padding-top: 15rpx;
border-radius: 12rpx;
margin-top: 10rpx;
background-color: #96def6;
display: flex;
align-items: center;
text {
font-size: 20rpx;
color: #fff;
}
}
}
// .addCar {
// width: 240rpx;
// height: 75rpx;
// margin: 0;
// border-radius: 37.5rpx;
// background-color: #01aeea;
// color: #fff;
// font-size: 26rpx;
// line-height: 76rpx;
// text-align: center;
// margin-right: 14rpx;
// margin-bottom: 27rpx;
// }
}
.addCar {
width: 240rpx;
height: 75rpx;
margin: 0;
border-radius: 37.5rpx;
background-color: #01aeea;
color: #fff;
font-size: 26rpx;
line-height: 76rpx;
text-align: center;
}
.master_money {
display: inline-block;
padding: 10rpx 20rpx;
background-color: #7AD0EE;
font-size: 24rpx;
color: #fff;
border-radius: 8rpx;
}
</style>