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.

256 lines
6.0 KiB

4 months ago
<template>
<!-- 砍价列表模块 -->
<view class="box">
<view class='bargain-list'>
<view class='header' :style="'background-image: url('+imgHost+'/statics/images/bargain-list-bg.png);'">
<!-- #ifndef MP -->
<text class="iconfont icon-ic_leftarrow" @click="goarrow"></text>
<!-- #endif -->
<!-- #ifdef MP -->
<view class="bargainTitle">
<view :style="{height:getHeight.barTop+'px'}"></view>
<view class="sysTitle acea-row row-center-wrapper" :style="{height:getHeight.barHeight+'px'}">
<text class="iconfont icon-ic_leftarrow" @click="goarrow"></text>
</view>
</view>
<!-- #endif -->
</view>
<view class='list' v-if="bargainList.length">
<block v-for="(item,index) in bargainList" :key="index">
<view class='item flex justify-between relative'
@tap="openSubscribe('/pages/activity/goods_bargain_details/index?id='+ item.id +'&spid='+ userInfo.uid)">
<!-- <image class="w-240 h-240 rd-16rpx" :src='item.image'></image> -->
<easy-loadimage
mode="widthFix"
:image-src="item.image"
width="240rpx"
height="240rpx"
borderRadius="20rpx"></easy-loadimage>
<view class='w-410 fs-28 flex-col justify-between'>
<view>
<view class='w-410 lh-40rpx line2'>{{item.title}}</view>
<view class='fs-22 fw-500 mt-8 red'>
<text class='iconfont icon-ic_fire fs-22 mr-8'></text>
{{item.people}}人正在参与
</view>
</view>
<view class="flex-between-center">
<view>
<view class='flex items-baseline red'>
<text class="fs-22 lh-30rpx fw-500">最低: </text>
<baseMoney :money="item.min_price" symbolSize="24" integerSize="40" decimalSize="24" incolor="#E93323" weight></baseMoney>
</view>
<view class="otPrice">{{item.ot_price}}</view>
</view>
<view class='cutBnt w-144 h-56 rd-30rpx flex-center fs-24 text--w111-fff'>参与砍价</view>
</view>
</view>
</view>
</block>
</view>
<view class="list no-goods" v-if="!bargainList.length && !loading">
<image :src="imgHost + '/statics/images/noActivity.gif'" mode=""></image>
<text class="fs-26 text--w111-999 pt-16">暂无砍价商品去看看其他商品吧</text>
</view>
</view>
</view>
</template>
<script>
let app = getApp();
import { HTTP_REQUEST_URL } from '@/config/app';
import { getBargainList } from '@/api/activity.js';
import { openBargainSubscribe } from '@/utils/SubscribeMessage.js';
import { getUserInfo } from '@/api/user.js';
import { toLogin } from '@/libs/login.js';
import { mapGetters } from "vuex";
export default {
data() {
return {
bargainList: [],
page: 1,
limit: 20,
loading: false,
loadend: false,
userInfo: {},
isAuto: false, //没有授权的不会自动授权
isShowAuth: false, //是否隐藏授权
imgHost:HTTP_REQUEST_URL,
// #ifdef MP
getHeight: this.$util.getWXStatusHeight()
// #endif
};
},
computed: mapGetters(['isLogin']),
watch: {
isLogin: {
handler: function(newV, oldV) {
if (newV) {
// #ifndef MP
this.getUserInfo();
// #endif
}
},
deep: true
}
},
onLoad: function(options) {
uni.setNavigationBarTitle({
title: "砍价列表"
})
this.getBargainList();
if (this.isLogin) {
this.getUserInfo();
}
},
onShow(){
uni.removeStorageSync('form_type_cart');
},
onPageScroll(object) {
uni.$emit('scroll');
},
methods: {
// 授权关闭
authColse: function(e) {
this.isShowAuth = e
},
goarrow(){
uni.navigateBack()
},
/*
* 获取用户信息
*/
getUserInfo: function() {
let that = this;
getUserInfo().then(res => {
that.$set(that, 'userInfo', res.data);
});
},
openSubscribe: function(e) {
if(this.isLogin){
let page = e;
// #ifndef MP
uni.navigateTo({
url: page
});
// #endif
// #ifdef MP
uni.showLoading({
title: '正在加载',
})
openBargainSubscribe().then(res => {
uni.hideLoading();
uni.navigateTo({
url: page,
});
}).catch((err) => {
uni.hideLoading();
});
// #endif
}else{
toLogin()
}
},
getBargainList: function() {
let that = this;
if (that.loadend) return;
if (that.loading) return;
that.loading = true;
getBargainList({
page: that.page,
limit: that.limit
}).then(function(res) {
that.$set(that, 'bargainList', that.bargainList.concat(res.data));
that.$set(that, 'page', that.page + 1);
that.$set(that, 'loadend', that.limit > res.data.length);
that.$set(that, 'loading', false);
}).catch(res => {
that.loading = false;
});
},
},
onReachBottom: function() {
this.getBargainList();
},
}
</script>
<style lang="scss">
.bargainTitle{
position: fixed;
left:0;
top:0;
width: 100%;
z-index: 99;
.sysTitle{
width: 100%;
position: relative;
.iconfont{
position: absolute;
font-size: 36rpx;
left:11rpx;
width: 80rpx;
color:#fff;
}
}
}
.no-goods{
text-align: center;
padding-bottom: 60rpx!important;
color: #999;
image{
width: 440rpx;
height: 360rpx;
margin: 40rpx auto 0 auto;
display: block;
}
}
.bargain-list .header {
background-repeat: no-repeat;
background-size: 100% 100%;
width: 750rpx;
height: 926rpx;
padding-top: 55rpx;
box-sizing: border-box;
.iconfont{
color: #fff;
font-size: 40rpx;
margin-left: 15rpx;
}
}
.bargain-list .list {
background-color: #fff;
border-radius: 24rpx;
margin: -510rpx 20rpx 66rpx 20rpx;
padding: 32rpx 20rpx;
}
.item~.item{
margin-top: 40rpx;
}
.red{
color: #E93323;
}
.otPrice{
font-size: 26rpx;
font-family: Regular;
color: #999;
text-decoration: line-through;
margin-top: 4rpx;
}
.cutBnt {
background: linear-gradient(90deg, #FF7931 0%, #E93323 100%);
}
.bargain-list .list .load {
font-size: 24rpx;
height: 85rpx;
text-align: center;
line-height: 85rpx;
}
</style>