martial-arts/pagesA/my-sign/my-sign.vue

130 lines
3.9 KiB
Vue

<template>
<view>
<view class="" :style="{paddingTop:statusBarHeight+'px'}">
<image src="/static/tabbar/my-back.png" mode="" class="width100 posia" style="top: 0;z-index: -1;" lazy-load :style="{height:newHeight+'px'}"></image>
<view class="disac colf fon42" style="height: 42px;padding: 0 30rpx;"><view class="icon icon-return fon38 colf" @tap="goBack"></view><span @tap="goBack"></span></view>
</view>
<view class="" v-if="loading">
<view class="disjcac mar-x20">
<view class="posir disjcac" @tap="signEv">
<image src="/static/public/icon-sign-box.png" mode="" style="width: 166rpx;height: 166rpx;" lazy-load></image>
<view class="disjcac fc posia fon38 bold" style="color: #f37c20;">
<image class="mar-x10" src="/static/public/icon-sign.png" mode="" style="width: 40rpx;height: 36rpx;" lazy-load></image>
{{signText}}
</view>
</view>
</view>
<view class="pad-zy30">
<view class="disjbac" style="background: linear-gradient(to bottom, #fefcfc 0%, #f8efed 100%);border-radius: 24rpx 24rpx 0 0;">
<view class="disjcac fc fon24 pad-sx30 width100" :class="item.is_sign==1?'activeDay':''" v-for="(item,index) in signList" :key="index">
<view class="">+{{item.score}}</view>
<view class="mar-s10">{{item.key}}</view>
</view>
</view>
</view>
<view class="pad-zy20">
<view class="posir bacf disac fw pad-zy10 boxshow2 pad-x30" style="z-index: 1;">
<view class="disjbac bbot width100 pad-sx20 pad-zy30" v-for="(item,index) in dataList" :key="index">
<view class="fon24 col-e42417">+{{item.num}}</view>
<view class="fon20" style="color: #676767;" v-if="item.created_at">{{item.created_at.slice(0,10).split('-').join('.')}}</view>
</view>
</view>
<view class="" v-if="moreLoading">
<pitera :textStr="`${noMore && total > dataList.length?'上滑加载更多':'到底了'}~~`" textColor="#b0aaa9" paddingStr="40rpx 0 20rpx 0"></pitera>
</view>
</view>
</view>
<dynamic-frame ref="refFrame" :showType="showType"></dynamic-frame>
</view>
</template>
<script>
import dynamicFrame from '@/components/dynamic-frame.vue';
import pitera from '@/components/nothing/pitera.vue';
export default {
components:{
dynamicFrame,
pitera
},
data() {
return {
statusBarHeight: uni.getSystemInfoSync().statusBarHeight,
newHeight:uni.getSystemInfoSync().screenHeight,
dataList:[],// 记录列表
signList:[],// 日期列表
signText:'签到',
showType:4,
page:1,
size:20,
loading:false,
noMore:false,
moreLoading:false
}
},
onLoad() {
this.getSignInfo();
},
onReachBottom() {
if(this.total!=this.dataList.length){
this.page++;
this.getSignList();
} else {
this.noMore = true;
}
},
methods: {
// 获取签到信息
getSignInfo(){
this.$requst.get('/api/sign/info').then(res=>{
if(res.code==0){
this.signList = res.data.week;
this.signText = ['签到','已签到'][res.data.today_sign];
this.loading = true;
this.getSignList();
}
})
},
// 返回
goBack(){
uni.navigateBack({
delta:1
})
},
// 执行签到
signEv(){
this.$requst.post('/api/sign/sign').then(res=>{
if(res.code==0){
this.signText = "已签到";
this.$refs.refFrame.ifLogistics = true;
this.$refs.refFrame.ifAnimated = true;
this.getSignList();
}
})
},
// 获取签到记录
getSignList(){
let params = {
page:this.page,
size:this.size
}
this.moreLoading = false;
if(this.page==1) this.dataList = [];
this.$requst.get('/api/user/sign-score',params).then(res=>{
if(res.code==0){
this.total = res.data.total;
this.dataList = [...this.dataList,...res.data.list];
this.moreLoading = true;
}
})
}
}
}
</script>
<style>
.activeDay{
background-color: #f37717;
color: #FFFFFF;
}
</style>