easypay-app/pages/users/user_integral/index.vue

346 lines
21 KiB
Vue
Raw Normal View History

2023-12-20 21:41:47 +08:00
<template>
<view :data-theme="theme">
<view class='integral-details'>
<view class='header'>
<view class='currentScore'>当前积分</view>
<view class="scoreNum">{{integral.integral||0}}</view>
<view class='line'></view>
<view class='nav acea-row'>
<view class='item'>
<view class='num'>{{integral.sumIntegral||0}}</view>
<view>累计积分</view>
</view>
<view class='item'>
<view class='num'>{{integral.deductionIntegral||0}}</view>
<view>累计消费</view>
</view>
<view class='item'>
<view class='num'>{{integral.frozenIntegral||0}}</view>
<view>冻结积分</view>
</view>
</view>
</view>
<view class='wrapper'>
<view class='nav acea-row'>
<view class='item acea-row row-center-wrapper' :class='current==index?"on":""' v-for="(item,index) in navList" :key='index'
@click='nav(index)'><text class='iconfont' :class="item.icon"></text>{{item.name}}</view>
</view>
<view class='list' :hidden='current!=0'>
<view class='tip acea-row row-middle'><text class='iconfont icon-shuoming'></text>提示积分数值的高低会直接影响您的会员等级</view>
<view class='item acea-row row-between-wrapper' v-for="(item,index) in integralList" :key="index">
<view>
<view class='state'>{{item.title}}</view>
<view>{{item.updateTime}}</view>
</view>
<view class='num font_color' v-if="item.type===1">+{{item.integral}}</view>
<view class='num' v-else>-{{item.integral}}</view>
</view>
<view class='loadingicon acea-row row-center-wrapper' v-if="integralList.length>0">
<text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>{{loadTitle}}
</view>
<view v-if="integralList.length == 0">
<emptyPage title="暂无积分记录哦~"></emptyPage>
</view>
</view>
<view class='list2' :hidden='current!=1'>
<navigator class='item acea-row row-between-wrapper' open-type='switchTab' hover-class='none' url='/pages/index/index'>
<view class='pictrue'>
<image src='../../../static/images/score.png'></image>
</view>
<view class='name'>购买商品可获得积分奖励</view>
<view class='earn'>赚积分</view>
</navigator>
<navigator class='item acea-row row-between-wrapper' hover-class='none' url='/pages/users/user_sgin/index'>
<view class='pictrue'>
<image src='../../../static/images/score.png'></image>
</view>
<view class='name'>每日签到可获得积分奖励</view>
<view class='earn'>赚积分</view>
</navigator>
</view>
</view>
</view>
</view>
</template>
<script>
import { postIntegralUser, getIntegralList } from '@/api/user.js';
import {
toLogin
} from '@/libs/login.js';
import {
mapGetters
} from "vuex";
import emptyPage from '@/components/emptyPage.vue'
let app = getApp();
export default {
components: {
emptyPage
},
data() {
return {
navList: [{
'name': '分值明细',
'icon': 'icon-mingxi'
},
{
'name': '分值提升',
'icon': 'icon-tishengfenzhi'
}
],
current: 0,
page: 1,
limit: 10,
integralList: [],
integral:{},
loadend: false,
loading: false,
loadTitle: '加载更多',
theme:app.globalData.theme,
};
},
computed: mapGetters(['isLogin']),
watch:{
isLogin:{
handler:function(newV,oldV){
if(newV){
this.getUserInfo();
this.getIntegralList();
}
},
deep:true
}
},
onLoad() {
if (this.isLogin) {
this.getUserInfo();
this.getIntegralList();
} else {
toLogin();
}
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
this.getIntegralList();
},
methods: {
getUserInfo: function() {
let that = this;
postIntegralUser().then(function(res) {
that.$set(that,'integral',res.data);
});
},
/**
* 获取积分明细
*/
getIntegralList: function() {
let that = this;
if (that.loading) return;
if (that.loadend) return;
that.loading = true;
that.loadTitle = '';
getIntegralList({
page: that.page,
limit: that.limit
}).then(function(res) {
let list = res.data.list,
loadend = list.length < that.limit;
that.integralList = that.$util.SplitArray(list, that.integralList);
that.$set(that,'integralList',that.integralList);
that.page = that.page + 1;
that.loading = false;
that.loadend = loadend;
that.loadTitle = loadend ? '哼~😕我也是有底线的~' : "加载更多";
}, function(res) {
this.loading = false;
that.loadTitle = '加载更多';
});
},
nav: function(current) {
this.current = current;
}
}
}
</script>
<style scoped lang="scss">
.integral-details .header {
background-image: url('data:image/png;base64,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
background-repeat: no-repeat;
background-size: 100% 100%;
width: 100%;
height: 460rpx;
font-size: 72rpx;
color: #fff;
padding: 31rpx 0 45rpx 0;
box-sizing: border-box;
text-align: center;
font-family: 'Guildford Pro';
@include main_bg_color(theme);
}
.integral-details .header .currentScore {
font-size: 26rpx;
color: rgba(255, 255, 255, 0.8);
text-align: center;
margin-bottom: 11rpx;
}
.integral-details .header .scoreNum{
font-family: "Guildford Pro";
}
.integral-details .header .line {
width: 60rpx;
height: 3rpx;
background-color: #fff;
margin: 20rpx auto 0 auto;
}
.integral-details .header .nav {
font-size: 22rpx;
color: rgba(255, 255, 255, 0.8);
flex: 1;
margin-top: 35rpx;
}
.integral-details .header .nav .item {
width: 33.33%;
text-align: center;
}
.integral-details .header .nav .item .num {
color: #fff;
font-size: 40rpx;
margin-bottom: 5rpx;
font-family: 'Guildford Pro';
}
.integral-details .wrapper .nav {
flex: 1;
width: 690rpx;
border-radius: 20rpx 20rpx 0 0;
margin: -96rpx auto 0 auto;
background-color: #f7f7f7;
height: 96rpx;
font-size: 30rpx;
color: #bbb;
}
.integral-details .wrapper .nav .item {
text-align: center;
width: 50%;
}
.integral-details .wrapper .nav .item.on {
background-color: #fff;
@include main-color(theme);
font-weight: bold;
border-radius: 20rpx 0 0 0;
}
.integral-details .wrapper .nav .item:nth-of-type(2).on {
border-radius: 0 20rpx 0 0;
}
.integral-details .wrapper .nav .item .iconfont {
font-size: 38rpx;
margin-right: 10rpx;
}
.integral-details .wrapper .list {
background-color: #fff;
padding: 24rpx 30rpx;
}
.integral-details .wrapper .list .tip {
font-size: 25rpx;
width: 690rpx;
height: 60rpx;
border-radius: 50rpx;
background-color: #fff5e2;
border: 1rpx solid #ffeac1;
color: #c8a86b;
padding: 0 20rpx;
box-sizing: border-box;
margin-bottom: 24rpx;
}
.integral-details .wrapper .list .tip .iconfont {
font-size: 35rpx;
margin-right: 15rpx;
}
.integral-details .wrapper .list .item {
height: 124rpx;
border-bottom: 1rpx solid #eee;
font-size: 24rpx;
color: #999;
}
.integral-details .wrapper .list .item .state {
font-size: 28rpx;
color: #282828;
margin-bottom: 8rpx;
}
.integral-details .wrapper .list .item .num {
font-size: 36rpx;
font-family: 'Guildford Pro';
}
.integral-details .wrapper .list2 {
background-color: #fff;
padding: 24rpx 0;
}
.integral-details .wrapper .list2 .item {
background-image: linear-gradient(to right, #fff7e7 0%, #fffdf9 100%);
width: 690rpx;
height: 180rpx;
position: relative;
border-radius: 10rpx;
margin: 0 auto 20rpx auto;
padding: 0 25rpx 0 180rpx;
box-sizing: border-box;
}
.integral-details .wrapper .list2 .item .pictrue {
width: 90rpx;
height: 150rpx;
position: absolute;
bottom: 0;
left: 45rpx;
}
.integral-details .wrapper .list2 .item .pictrue image {
width: 100%;
height: 100%;
}
.integral-details .wrapper .list2 .item .name {
width: 285rpx;
font-size: 30rpx;
font-weight: bold;
color: #c8a86b;
}
.integral-details .wrapper .list2 .item .earn {
font-size: 26rpx;
color: #c8a86b;
border: 2rpx solid #c8a86b;
text-align: center;
line-height: 52rpx;
height: 52rpx;
width: 160rpx;
border-radius: 50rpx;
}
.font_color{
@include price_color(theme);
}
</style>