<template>
|
<view class="points">
|
|
<view class="info-rule" @click="jumpService">积分规则</view>
|
<view class="head" :style="{ backgroundImage: 'url(' + backImage + ')', height: 'calc(' + (navHeight + statusbarHeight + 'px + 376rpx)') }">
|
<view :style="{ width: '100%', height: navHeight + statusbarHeight + 'px' }"></view>
|
<view class="head-bar" :style="{ height: navHeight + statusbarHeight + 'px' }">
|
<view :style="{ width: '100%', height: statusbarHeight + 'px' }"></view>
|
<view class="head-bar-nav" :style="{ height: navHeight + 'px' }" @click="openLoacing">
|
<image src="/static/icon/nav_ic_bac@2x.png" mode="widthFix"></image>
|
<text>我的积分</text>
|
<image src="/static/icon/nav_ic_bac@2x.png" mode="widthFix" style="opacity: 0;"></image>
|
</view>
|
</view>
|
<view class="info">
|
<view class="info-a">当前积分</view>
|
<view class="info-b">{{countData.surplusIntegral || 0}}</view>
|
<view class="info-c">
|
<image src="/static/icon/ic_tixing@2x.png" mode="widthFix"></image>
|
<text>{{countData.expiredIntegral || 0}}积分即将过期</text>
|
</view>
|
</view>
|
<view class="list">
|
<view class="list-title">
|
<view class="list-title-name">积分明细</view>
|
<view class="list-title-cate">
|
<view :class="'list-title-cate-row '+(active ==0?'active':'')" @click="changeActive(0)" >全部</view>
|
<view :class="'list-title-cate-row '+(active ==1?'active':'')" @click="changeActive(1)">获得</view>
|
<view :class="'list-title-cate-row '+(active ==2?'active':'')" @click="changeActive(2)">扣除</view>
|
</view>
|
</view>
|
<view class="list-item">
|
<view class="list-item-left">
|
<text>购买商品,获得100积分</text>
|
<text>2025-11-21 09:00:00</text>
|
</view>
|
<view class="list-item-num">+100</view>
|
</view>
|
</view>
|
</view>
|
</view>
|
</template>
|
|
<script>
|
import { mapState } from 'vuex'
|
export default {
|
computed: {
|
...mapState(['navHeight', 'statusbarHeight','shopInfo', 'shopToken'])
|
},
|
data() {
|
return {
|
currentPage:1,
|
total:0,
|
shop:{},
|
active:0,
|
hasNext:true,
|
dataList:[],
|
countData:{},
|
backImage: require('@/static/images/jifen_bg@2x.png')
|
};
|
},
|
onReachBottom(){
|
this.getDataList( );
|
},
|
onShow() {
|
this.shop ={}
|
this.checkShopLogin()
|
this.active=0
|
this.shop = this.shopInfo || {}
|
this.getCountData()
|
this.currentPage = 0
|
this.getDataList()
|
},
|
methods:{
|
changeActive(index){
|
this.getCountData(index)
|
},
|
showRule(){
|
console.log("==================================",this.showPhone)
|
},
|
async getCountData(){
|
var that =this
|
let res = await that.$u.api.getIntegralData({ userType: 1, tokenType:1 })
|
if (res.code === 200) {
|
this.countData = res.data
|
}
|
},
|
async getDataList(){
|
if(this.loading || !this.hasNext){
|
return
|
}
|
this.loading=true
|
this.currentPage = this.currentPage+1
|
if(this.currentPage == 1){
|
this.hasNext =true
|
this.dataList=[]
|
}
|
var that =this
|
let res = await that.$u.api.shopOrderPage({
|
capacity:10,
|
model: {
|
receiveType: 1,
|
status: 1
|
},
|
page:this.currentPage
|
});
|
console.log(res)
|
if (res.code === 200 ) {
|
if ( res.data && res.data.page ===this.currentPage) {
|
res.data.records = res.data.records||[]
|
that.dataList.push(...res.data.records)
|
that.total=res.data.total
|
if( this.currentPage >= res.data.pageCount||0){
|
that.hasNext=false
|
}else{
|
that.hasNext=true
|
}
|
}
|
}
|
this.loading=false
|
},
|
jumpService() {
|
uni.navigateTo({
|
url: '/pagesA/pages/rich-text-page/rich-text-page?flag='+2
|
})
|
},
|
checkShopLogin(){
|
var that =this
|
if( this.shopInfo ==null || this.shopInfo.id==null || this.shopToken==null || this.shopToken==''){
|
uni.navigateTo({
|
url: '/pages/login/login'
|
})
|
}
|
}
|
}
|
}
|
</script>
|
|
<style>
|
page {
|
background-color: #F9F9FB;
|
}
|
</style>
|
<style lang="scss" scoped>
|
.points {
|
width: 100%;
|
.info-rule{
|
float: right;
|
margin-top:214rpx;
|
width: 140rpx;
|
// height: 52rpx;
|
padding: 5px 0;
|
background: #FFFFFF;
|
border-radius: 36rpx 0rpx 0rpx 36rpx;
|
|
font-family: PingFangSC, PingFang SC;
|
font-weight: 400;
|
font-size: 24rpx;
|
color: #333333;
|
line-height: 34rpx;
|
text-align: center;
|
font-style: normal;
|
}
|
.head {
|
width: 100%;
|
height: 424rpx;
|
padding: 0 30rpx;
|
box-sizing: border-box;
|
background-repeat: no-repeat;
|
background-size: 100% 100%;
|
|
.list {
|
width: 100%;
|
display: flex;
|
flex-direction: column;
|
background: #FFFFFF;
|
border-radius: 16rpx;
|
margin-top: 30rpx;
|
padding: 34rpx 30rpx;
|
box-sizing: border-box;
|
.list-title {
|
width: 100%;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
.list-title-name {
|
font-weight: 600;
|
font-size: 32rpx;
|
color: #222222;
|
}
|
.active {
|
color: #004096 !important;
|
background: #F8F9FB !important;
|
}
|
.list-title-cate {
|
display: flex;
|
align-items: center;
|
.list-title-cate-row {
|
width: 96rpx;
|
height: 56rpx;
|
line-height: 56rpx;
|
text-align: center;
|
background: #F8F9FB;
|
border-radius: 28rpx;
|
font-weight: 400;
|
font-size: 24rpx;
|
color: #333333;
|
margin-left: 20rpx;
|
}
|
}
|
}
|
.list-item {
|
width: 100%;
|
height: 154rpx;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
border-bottom: 1rpx solid #E5E5E5;
|
.list-item-left {
|
flex: 1;
|
height: 100%;
|
display: flex;
|
flex-direction: column;
|
justify-content: space-evenly;
|
text {
|
&:nth-child(1) {
|
font-weight: 400;
|
font-size: 28rpx;
|
color: #222222;
|
}
|
&:nth-child(2) {
|
font-weight: 400;
|
font-size: 24rpx;
|
color: #999999;
|
}
|
}
|
}
|
.list-item-num {
|
flex-shrink: 0;
|
margin-left: 30rpx;
|
font-weight: 500;
|
font-size: 32rpx;
|
color: #222222;
|
}
|
}
|
}
|
.info {
|
width: 100%;
|
padding: 30rpx 0;
|
box-sizing: border-box;
|
.info-a {
|
font-weight: 400;
|
font-size: 26rpx;
|
color: #333333;
|
}
|
.info-b {
|
font-weight: bold;
|
font-size: 72rpx;
|
color: #222222;
|
}
|
.info-c {
|
width: 100%;
|
display: flex;
|
align-items: center;
|
margin-top: 20rpx;
|
image {
|
width: 28rpx;
|
height: 28rpx;
|
margin-right: 10rpx;
|
}
|
text {
|
font-weight: 400;
|
font-size: 24rpx;
|
color: #777777;
|
}
|
}
|
}
|
|
.head-bar {
|
width: 100%;
|
position: fixed;
|
padding: 0 30rpx;
|
box-sizing: border-box;
|
top: 0;
|
left: 0;
|
z-index: 999;
|
|
.head-bar-nav {
|
width: 100%;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
|
image {
|
width: 44rpx;
|
height: 44rpx;
|
}
|
|
text {
|
font-weight: 500;
|
font-size: 32rpx;
|
color: #111111;
|
}
|
}
|
}
|
}
|
}
|
</style>
|