
<view class="myIntegral-wrap page" id="myIntegral">
<scroll-view class="myIntegral-content" wx:if="{{ integralPage == 0 }}" scroll-y="true" bindscroll="fixedMessageNav" lower-threshold="116" bindscrolltolower="checkMoreMessageData">
<view class="integral-detail">
<view class="detail-name">
<view class="single-icon">积</view>
<text>现有积分/总积分</text>
</view>
<view class="detail-num">
<text>{{ canUseIntegral }} / {{ totalIntegral }}</text>
</view>
<view class="detail-rule" catchtap="showIntegralRule">
<view class="single-icon">?</view>
<text>积分规则</text>
</view>
</view>
<view class="message-nav">
<view class="type-item {{ currentMessageType == 'income' ? 'active' : '' }}" catchtap="setCurrentMessageType" data-type="income" >收入</view>
<view class="type-item {{ currentMessageType == 'outcome' ? 'active' : '' }}" catchtap="setCurrentMessageType" data-type="outcome" >支出</view>
</view>
<view class="message-nav {{ navFixed ? 'fixed' : 'nofixed' }}">
<view class="type-item {{ currentMessageType == 'income' ? 'active' : '' }}" catchtap="setCurrentMessageType" data-type="income" >收入</view>
<view class="type-item {{ currentMessageType == 'outcome' ? 'active' : '' }}" catchtap="setCurrentMessageType" data-type="outcome" >支出</view>
</view>
<view class="message-content {{ currentMessageType == 'income' ? 'active' : '' }}" >
<block wx:for="{{ incomeBranch.data }}">
<view class="message-item">
<view class="message-title">{{ item.content }}</view>
<view class="message-time">{{ item.time }}</view>
<view class="message-num">{{ item.num }}</view>
</view>
</block>
</view>
<view class="message-content {{ currentMessageType == 'outcome' ? 'active' : '' }}" >
<block wx:for="{{ outcomeBranch.data }}">
<view class="message-item">
<view class="message-title">{{ item.content }}</view>
<view class="message-time">{{ item.time }}</view>
<view class="message-num">{{ item.num }}</view>
</view>
</block>
</view>
</scroll-view>
<view class="myIntegral-rule" wx:if="{{ integralPage == 1 }}">
<view class="rule-list">
<view class="rule-item">
<view class="item-name">积累规则</view>
<view class="item-content">消费 {{ integralRule.consumeNum }} 元,获得 1 积分</view>
</view>
<view class="rule-item" wx:if="{{ integralRule.loginNum != 0 }}">
<view class="item-name">额外积分</view>
<view class="item-content">每天登录送 {{ integralRule.loginNum }} 积分</view>
</view>
<view class="rule-item" wx:if="{{ integralRule.shareNum != 0 }}">
<view class="item-name">额外积分</view>
<view class="item-content">推荐好友送 {{ integralRule.shareNum }} 积分</view>
</view>
<view class="rule-item" wx:if="{{ integralRule.postCommentNum != 0 }}">
<view class="item-name">额外积分</view>
<view class="item-content">商品评论送 {{ integralRule.postCommentNum }} 积分</view>
</view>
<view class="rule-item">
<view class="item-name">使用积分</view>
<view class="item-content">{{ integralRule.convertNum }} 积分 = 1元</view>
</view>
<view class="rule-item">
<view class="item-name">提醒</view>
<view class="item-content">消费积分并不会影响升级会员卡,与会员升级相关的是总积分</view>
</view>
</view>
<view class="confirm-btn" catchtap="hideIntegralRule">确定</view>
</view>
</view>
|
#myIntegral {
min-height: 100vh;
background-color: #eeeeee;
}
#myIntegral .myIntegral-content {
height: 100vh;
}
#myIntegral .integral-detail {
position: relative;
background: #5db968;
height: 125px;
margin-bottom: 10px;
color: #fff;
}
#myIntegral .integral-detail .detail-name .single-icon {
width: 20px;
height: 20px;
background: #fff;
color: #5db968;
border-radius: 50%;
display: inline-block;
text-align: center;
vertical-align: middle;
line-height: 20px;
margin-right: 5px;
font-size: 12px;
}
#myIntegral .integral-detail .detail-name {
position: absolute;
top: 30px;
left: 30px;
font-size: 18px;
}
#myIntegral .integral-detail .detail-name text {
vertical-align: middle;
}
#myIntegral .integral-detail .detail-num {
position: absolute;
left: 35px;
bottom: 18px;
font-size: 24px;
}
#myIntegral .integral-detail .detail-rule {
position: absolute;
top: 32px;
right: 30px;
}
#myIntegral .integral-detail .detail-rule .single-icon {
display: inline-block;
width: 14px;
height: 14px;
line-height: 14px;
margin-right: 5px;
background: #5db968;
color: #fff;
border-radius: 50%;
text-align: center;
vertical-align: middle;
font-size: 12px;
border: 1px solid #fff;
}
#myIntegral .integral-detail .detail-rule text {
font-size: 14px;
}
#myIntegral .message-nav {
width: 100%;
height: 42px;
line-height: 42px;
text-align: center;
background-color: #fff;
border-top: 1px solid #eee;
border-bottom: 1px solid #e9e9e9;
z-index: 1;
}
#myIntegral .message-nav.fixed {
display: block;
position: fixed;
top: 0;
left: 0;
}
#myIntegral .message-nav.nofixed {
display: none;
position: fixed;
top: 0;
left: 0;
}
#myIntegral .message-nav .type-item {
position: relative;
display: inline-block;
min-width: 70px;
}
#myIntegral .message-nav .type-item:first-child {
margin-right: 15px;
}
#myIntegral .message-nav .type-item.active {
color: #55b737;
border-bottom: 1px solid #55b737;
}
#myIntegral .message-content {
display: none;
/*max-height: calc(100vh - 177px);*/
}
#myIntegral .message-content.active {
display: block;
}
#myIntegral .message-item {
position: relative;
margin: 0;
width: 100%;
background: #fff;
border-bottom: 1px solid #e9e9e9;
}
#myIntegral .message-item:last-child {
margin-bottom: 16px;
}
#myIntegral .message-item .message-title {
width: calc(100% - 110px);
padding: 15px 0 0 15px;
font-size: 16px;
overflow: hidden;
}
#myIntegral .message-item .message-time {
margin: 10px 0 12px 15px;
color: #d6d6d6;
font-size: 12px;
}
#myIntegral .message-item .message-num {
position: absolute;
top: 18px;
right: 15px;
overflow: hidden;
font-size: 14px;
color: #5db968;
}
/* 积分商品 积分规则页面*/
#myIntegral .myIntegral-rule {
display: block;
}
#myIntegral .rule-list {
padding: 10px 0;
border-bottom: 1px solid #ddd;
background: #feffff;
}
#myIntegral .rule-item {
min-height: 36px;
margin: 0 10px;
padding: 5px 0;
line-height: 36px;
}
#myIntegral .rule-item:last-child {
border: 0;
}
#myIntegral .rule-item .item-name {
display: inline-block;
height: 36px;
width: 85px;
margin-right: 8px;
vertical-align: top;
color: #878889;
text-align: center;
overflow: hidden;
}
#myIntegral .rule-item .item-content {
display: inline-block;
max-width: calc(100% - 100px);
min-height: 36px;
line-height: 36px;
overflow: hidden;
vertical-align: top;
}
#myIntegral .rule-item .data-img {
display: inline-block;
width: 60px;
height: 60px;
}
#myIntegral .myIntegral-rule .confirm-btn {
margin: 14px 10px;
padding: 10px 0;
background: #55b737;
border-radius: 5px;
color: #fff;
text-align: center;
font-size: 16px;
}
|
var app = getApp()
Page({
data: {
integralPage: 0, // 控制是否展开 0:显示主页 1:显示积分规则页
canUseIntegral: 0, // 现有积分
totalIntegral: 0, // 总积分
currentMessageType: 'income', // income:收入 / outcome:支出
// navStyle: '',
navFixed: false, // 固定导航条
// 积分规则
integralRule: {
convertNum: 100, // xx积分对应1元
consumeNum: 0, // 消费xx元积累1积分
loginNum: 0, // 每天登录送xx积分
postCommentNum: 0, // 商品评论送xx积分
shareNum: 0, // 推荐好友送xx积分
},
/*
xxxBranch 对象
data: 对应分支的数据
isMore: 是否拥有更多的新的数据
currentPage: 当前已经加载到页数
onload: 是否处在数据加载中, true加载中,false加载完毕
*/
incomeBranch: {
data: [],
isMore: 0,
currentPage: 1,
onload: false
},
outcomeBranch: {
data: [],
isMore: 0,
currentPage: 1,
onload: false
},
},
onLoad: function(){
this.getIntegralDetailData();
this.getIntegralRuleData();
this.getMessageData('income');
this.getMessageData('outcome');
},
// onShow: function(){
// app.checkIfBindPhone();
// },
// 获得积分详情数据
getIntegralDetailData: function(){
let that = this;
app.sendRequest({
url: '/index.php?r=AppShop/GetIntegralInfo',
// data: {
// 'id': app.getUserInfo().id
// },
success: function(res){
that.setData({
'canUseIntegral': res.data.can_use_integral,
'totalIntegral': res.data.total_integral
});
}
});
},
// 获得积分规则数据
getIntegralRuleData: function(){
let that = this;
app.sendRequest({
url: '/index.php?r=AppShop/IntegralRule',
success: function(res){
that.setData({
'integralRule.convertNum': res.data.convert_num,
'integralRule.consumeNum': res.data.consume_num,
'integralRule.loginNum': res.data.login_num,
'integralRule.postCommentNum': res.data.post_comment_num,
'integralRule.shareNum': res.data.share_num
});
}
});
},
// 获取对应消息数据
getMessageData: function(type, page){
let that = this;
let action = '';
if (type == 'income') {
action = 'add';
} else if (type = 'outcome') {
action = 'minus';
}
app.sendRequest({
url: '/index.php?r=AppShop/UserIntegralAction',
data: {
'action': action,
'page': page || 1
},
success: function(res){
switch(type){
// 收入消息
case 'income':
that.setData({
'incomeBranch.data': that.data.incomeBranch.data ? that.data.incomeBranch.data.concat(that.parseMessageData(res.data)) : that.parseMessageData(res.data) ,
'incomeBranch.isMore': res.is_more,
'incomeBranch.currentPage': res.current_page,
'incomeBranch.onload': false,
});
break;
// 支出消息
case 'outcome':
that.setData({
'outcomeBranch.data': that.data.outcomeBranch.data ? that.data.outcomeBranch.data.concat(that.parseMessageData(res.data)) : that.parseMessageData(res.data) ,
'outcomeBranch.isMore': res.is_more,
'outcomeBranch.currentPage': res.current_page,
'outcomeBranch.onload': false,
})
break;
}
}
});
},
// 解析对应消息数据
parseMessageData: function(data){
var that = this;
let array = [];
let item = {};
for (var i = 0; i < data.length; i++) {
item = {
content: data[i].content,
num: data[i].num,
time: data[i].time
}
array.push(item);
}
return array;
},
// 底部触发是否获取数据
checkMoreMessageData: function(){
let that = this;
switch(that.data.currentMessageType) {
case 'income':
// 有更多数据 并且 不在加载中时 执行
if ((that.data.incomeBranch.isMore != 0 ) && ( !that.data.incomeBranch.onload)) {
that.getMessageData('income', (that.data.incomeBranch.currentPage + 1));
that.setData({
'incomeBranch.onload': true
});
}
break;
case 'outcome':
// 有更多数据 并且 不在加载中时 执行
if ((that.data.outcomeBranch.isMore != 0 ) && ( !that.data.outcomeBranch.onload)) {
that.getMessageData('outcome', (that.data.outcomeBranch.currentPage + 1));
that.setData({
'outcomeBranch.onload': true
});
}
break;
}
},
// 固定消息导航条
fixedMessageNav: function(event){
var that = this;
if (event.detail.scrollTop <= 135) {
that.setData({
// navStyle: ''
navFixed: false
});
} else {
that.setData({
// navStyle: 'position: fixed; top: 0; left: 0;'
navFixed: true
});
}
},
// 切换显示的消息类型
setCurrentMessageType: function(event){
this.setData({
'currentMessageType': event.target.dataset.type
});
},
// 积分规则:打开积分详情
showIntegralRule: function(){
// 设置页面标题
app.setPageTitle('积分规则');
// 请求数据
this.setData({
'integralPage': 1
});
},
// 积分规则:关闭积分详情(返回:个人积分主页)
hideIntegralRule: function(){
// 设置页面标题
app.setPageTitle('个人积分');
// 回到系统通知页面,清空表单数据
this.setData({
'integralPage': 0
});
}
})
|
模板简介:该模板名称为【微信小程序绿色风格个人积分收入支出样式模板制作设计下载】,大小是,文档格式为.,推荐使用打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【小程序教程】栏目查找您需要的精美模板。