276 lines
6.2 KiB
JavaScript
276 lines
6.2 KiB
JavaScript
export default {
|
|
data() {
|
|
return {
|
|
showSignDays: [], // 一共展示的天数
|
|
rule: [{}],
|
|
hasSign: 0, //今天是否签到
|
|
signDaysSeries: 0, //连续签到次数
|
|
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: {}
|
|
};
|
|
},
|
|
onLoad(option) {
|
|
setTimeout( () => {
|
|
if (!this.addonIsExist.membersignin) {
|
|
this.$util.showToast({
|
|
title: '商家未开启会员签到',
|
|
mask: true,
|
|
duration: 2000
|
|
});
|
|
setTimeout(() => {
|
|
this.$util.redirectTo('/pages/index/index');
|
|
}, 2000);
|
|
}
|
|
},1000);
|
|
|
|
if (option.back) this.back = option.back;
|
|
if (option.redirect) this.redirect = option.redirect;
|
|
|
|
this.getSignState();
|
|
},
|
|
onShow() {
|
|
if (!this.storeToken) {
|
|
this.$nextTick(() => {
|
|
this.$refs.login.open('/pages_tool/member/signin');
|
|
});
|
|
return;
|
|
}
|
|
|
|
this.headimg = this.memberInfo.headimg;
|
|
this.signDaysSeries = this.memberInfo.sign_days_series;
|
|
|
|
this.getSignPointData();
|
|
this.getSignGrowthData();
|
|
this.setPublicShare();
|
|
|
|
this.getIsSign();
|
|
},
|
|
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 > 0) {
|
|
this.rule.forEach((item, index) => {
|
|
if (item.day == 1) {
|
|
default_point = item.point;
|
|
} else {
|
|
this.rewardRuleDay.push(parseInt(item.day));
|
|
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
|
|
})
|
|
}
|
|
}
|
|
|
|
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;
|
|
this.$refs.loadingCover.hide();
|
|
}
|
|
}
|
|
});
|
|
},
|
|
//判断当前是否签到
|
|
getIsSign() {
|
|
this.$api.sendRequest({
|
|
url: '/api/membersignin/issign',
|
|
success: res => {
|
|
if (res.code == 0) {
|
|
this.hasSign = res.data;
|
|
this.getRule();
|
|
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.getRule();
|
|
this.getSignPointData();
|
|
this.getSignGrowthData();
|
|
this.hasSign = 1;
|
|
this.signDaysSeries = this.signDaysSeries + 1;
|
|
} else {
|
|
this.$util.showToast({
|
|
title: res.message
|
|
})
|
|
}
|
|
}
|
|
});
|
|
}
|
|
},
|
|
close() {
|
|
this.$refs.uniPopup.close()
|
|
},
|
|
/**
|
|
* 设置公众号分享
|
|
*/
|
|
setPublicShare() {
|
|
let shareUrl = this.$config.h5Domain + '/pages_tool/member/signin';
|
|
|
|
this.$util.setPublicShare({
|
|
title: '签到有礼',
|
|
desc: '天天签到,积分好礼送不停',
|
|
link: shareUrl,
|
|
imgUrl: ''
|
|
},
|
|
res => {
|
|
// console.log('公众号分享成功');
|
|
// this.share();
|
|
}
|
|
);
|
|
},
|
|
},
|
|
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;
|
|
}
|
|
},
|
|
/**
|
|
* 自定义分享内容
|
|
*/
|
|
onShareAppMessage() {
|
|
var path = '/pages_tool/member/signin';
|
|
return {
|
|
title: '签到有礼,天天签到,积分好礼送不停',
|
|
imageUrl: '',
|
|
path: path,
|
|
success: res => {},
|
|
fail: res => {},
|
|
complete: res => {}
|
|
};
|
|
}
|
|
}; |