forked from zhongyuanhaiju/uniapp
235 lines
5.5 KiB
JavaScript
235 lines
5.5 KiB
JavaScript
import Calendar from '@/components/uni-calendar/util.js';
|
|
export default {
|
|
data() {
|
|
return {
|
|
rule: [
|
|
{}
|
|
],
|
|
hasSign: 0, //今天是否签到
|
|
signDaysSeries: 0, //连续签到次数
|
|
timestamp: "", //当前的时间戳
|
|
time: "", //当前日期
|
|
MonthData: [], //本月日期信息
|
|
signList: [],
|
|
back: '', //返回页
|
|
redirect: '', //返回方式
|
|
successTip: {},
|
|
startDate: null,
|
|
endDate: null,
|
|
isActive: "", //判断点击
|
|
signState: 1,
|
|
headimg: '',
|
|
point: 0,
|
|
growth: 0,
|
|
signPoint: 0,
|
|
signGrowth: 0,
|
|
rewardRuleDay: [],
|
|
cycle: 0,
|
|
reward:{},
|
|
fixBtnShow: false,
|
|
};
|
|
},
|
|
methods: {
|
|
// 获取签到累积积分
|
|
getSignPointData() {
|
|
this.$api.sendRequest({
|
|
url: '/api/memberaccount/sum',
|
|
data: {
|
|
account_type: 'point',
|
|
from_type: 'signin'
|
|
},
|
|
success: res => {
|
|
if (res.code == 0) {
|
|
this.signPoint = res.data;
|
|
}
|
|
}
|
|
});
|
|
},
|
|
// 获取签到累积成长值
|
|
getSignGrowthData() {
|
|
this.$api.sendRequest({
|
|
url: '/api/memberaccount/sum',
|
|
data: {
|
|
account_type: 'growth',
|
|
from_type: 'signin'
|
|
},
|
|
success: res => {
|
|
if (res.code == 0) {
|
|
this.signGrowth = res.data;
|
|
}
|
|
}
|
|
});
|
|
},
|
|
// 签到是否开启
|
|
getSignState() {
|
|
this.$api.sendRequest({
|
|
url: '/api/membersignin/getSignStatus',
|
|
success: res => {
|
|
if (res.code == 0) {
|
|
this.signState = res.data.is_use;
|
|
}
|
|
}
|
|
});
|
|
},
|
|
navigateBack() {
|
|
if (this.back != '') {
|
|
this.$util.redirectTo(this.back, {}, this.redirect);
|
|
} else {
|
|
this.$util.redirectTo('/pages/member/index');
|
|
}
|
|
},
|
|
//获取rule
|
|
getRule() {
|
|
this.rewardRuleDay = [];
|
|
this.$api.sendRequest({
|
|
url: '/api/membersignin/award',
|
|
success: res => {
|
|
if (res.code == 0) {
|
|
this.cycle = res.data.cycle || 0;
|
|
this.rule = res.data.reward || [];
|
|
let default_point = 0;
|
|
if (this.rule.length > 1) {
|
|
this.rule.forEach((item, index)=>{
|
|
if (index) this.rewardRuleDay.push(parseInt(item.day));
|
|
if(item.day == 1) default_point = item.point;
|
|
|
|
this.reward[item.day] = item.point;
|
|
})
|
|
}
|
|
|
|
//展示7天
|
|
var showSignDays = [];
|
|
var start_day = 1;
|
|
var end_day = 7;
|
|
var total_day = res.data.cycle;
|
|
if(this.signDaysSeries > 5){
|
|
start_day = this.signDaysSeries - 5;
|
|
}
|
|
if(total_day >= (this.signDaysSeries + 1)){
|
|
end_day = this.signDaysSeries + 1;
|
|
}
|
|
if(this.signDaysSeries <= 5){
|
|
end_day = 8-start_day;
|
|
}
|
|
|
|
if((end_day - start_day) < 7 && total_day >= start_day+6){
|
|
end_day = start_day+6;
|
|
}
|
|
if(total_day == this.signDaysSeries){
|
|
start_day = this.signDaysSeries-6;
|
|
end_day = this.signDaysSeries;
|
|
}
|
|
|
|
for (let i = 1; i <= res.data.cycle; i++) {
|
|
if(i >= start_day && i <= end_day){
|
|
showSignDays.push({
|
|
day: i,
|
|
is_last:0,
|
|
point:default_point
|
|
})
|
|
}
|
|
}
|
|
|
|
// for (let i = 1; i <= res.data.cycle; i++) {
|
|
// if((i >= this.signDaysSeries || (res.data.cycle - i) < 7) && showSignDays.length < 7){
|
|
// showSignDays.push({
|
|
// day: i,
|
|
// is_last:0,
|
|
// point:default_point
|
|
// })
|
|
// }
|
|
// }
|
|
|
|
if(showSignDays&&showSignDays.length)showSignDays[showSignDays.length - 1]['is_last'] = 1;
|
|
|
|
for(let i in showSignDays){
|
|
let item = showSignDays[i];
|
|
if(this.$util.inArray(item.day, this.rewardRuleDay) != -1){
|
|
showSignDays[i]['point'] = parseInt(this.reward[item.day]) + parseInt(default_point);
|
|
}
|
|
}
|
|
|
|
this.showSignDays = showSignDays;
|
|
}
|
|
}
|
|
});
|
|
},
|
|
//获取连续签到次数
|
|
getSignInfo() {
|
|
this.$api.sendRequest({
|
|
url: '/api/member/info',
|
|
success: res => {
|
|
if (res.code == 0) {
|
|
this.timestamp = res.timestamp;
|
|
this.time = this.$util.timeStampTurnTime(this.timestamp).slice(0, 10)
|
|
this.headimg = res.data.headimg;
|
|
this.signDaysSeries = res.data.sign_days_series;
|
|
this.getRule();
|
|
this.$refs.loadingCover.hide();
|
|
}
|
|
}
|
|
});
|
|
},
|
|
//判断当前是否签到
|
|
getIsSign() {
|
|
this.$api.sendRequest({
|
|
url: '/api/membersignin/issign',
|
|
success: res => {
|
|
if (res.code == 0) {
|
|
this.hasSign = res.data;
|
|
this.getSignInfo();
|
|
this.getSignPointData();
|
|
this.getSignGrowthData();
|
|
}
|
|
}
|
|
});
|
|
},
|
|
//签到
|
|
sign() {
|
|
if (this.signState == 0) {
|
|
this.$util.showToast({
|
|
title: '签到未开启'
|
|
})
|
|
}
|
|
|
|
if (!this.hasSign && this.signState == 1) {
|
|
this.$api.sendRequest({
|
|
url: '/api/membersignin/signin',
|
|
success: res => {
|
|
if (res.code == 0) {
|
|
this.successTip = res.data;
|
|
this.$refs.uniPopup.open()
|
|
this.getSignInfo();
|
|
this.getSignPointData();
|
|
this.getSignGrowthData();
|
|
this.hasSign = 1;
|
|
this.signDaysSeries = this.signDaysSeries + 1;
|
|
} else {
|
|
this.$util.showToast({
|
|
title: res.message
|
|
})
|
|
}
|
|
}
|
|
});
|
|
}
|
|
},
|
|
close() {
|
|
this.$refs.uniPopup.close()
|
|
}
|
|
},
|
|
computed:{
|
|
pointTomorrow: function(){
|
|
var signDaysSeries = this.signDaysSeries + 1;
|
|
var point = this.rule[0].point ? parseInt(this.rule[0].point) : 0;
|
|
for (let i = 1; i < this.rule.length; i++) {
|
|
let reward = this.rule[i];
|
|
if (reward.day == signDaysSeries && reward.point) point += parseInt(reward.point);
|
|
}
|
|
return point;
|
|
},
|
|
showDay: function(){
|
|
return parseInt(this.signDaysSeries / 7) * 7 + 1;
|
|
}
|
|
}
|
|
};
|