|
...
|
...
|
@@ -188,6 +188,8 @@ Page({ |
|
|
|
list.forEach(detail => {
|
|
|
|
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
|
|
|
|
detail.arule = detail.arule ? util.determine(detail.arule) : '';
|
|
|
|
detail.expiration_date = detail.expiration_date ? util.determine(detail.expiration_date) : '';
|
|
|
|
detail.aexpiration = detail.aexpiration ? util.determine(detail.aexpiration) : '';
|
|
|
|
if (detail.arule) {
|
|
|
|
detail.accumulationShow = detail.arule.is_accumulation
|
|
|
|
}
|
|
...
|
...
|
@@ -204,32 +206,40 @@ Page({ |
|
|
|
}
|
|
|
|
detail.checked = false;
|
|
|
|
detail.showCpupon = '0';
|
|
|
|
let cdateText = ''; //有效期开始时间(如果领取当天可用,领取之日, 否则就是次日)
|
|
|
|
let edateText = ''; //有效期截止时间(领取日期+领取后几天有效的日期)
|
|
|
|
let date = new Date(detail.cdate * 1000);
|
|
|
|
if (detail.arule.is_same_day != '1') {
|
|
|
|
date.setTime(date.getTime() + 24 * 60 * 60 * 1000); // 加一天的毫秒数
|
|
|
|
// 获取使用券的有效期
|
|
|
|
detail.cdate = detail.cdate * 1;
|
|
|
|
detail.useStime = '';
|
|
|
|
detail.useEtime = '';
|
|
|
|
let condition = detail.aexpiration
|
|
|
|
if (condition.valid_forever === '0' && condition.stime && condition.etime) {
|
|
|
|
detail.useStime = condition.stime;
|
|
|
|
detail.useEtime = condition.etime;
|
|
|
|
}
|
|
|
|
date.setHours(0, 0, 0, 0);
|
|
|
|
let newTimestamp = Math.floor(date.getTime() / 1000);
|
|
|
|
cdateText = util.unixtoTime(newTimestamp, 'YYYY-MM-DD')
|
|
|
|
detail.cdateText = cdateText;
|
|
|
|
if (detail.aexpiration == '0' || detail.aexpiration == '') {
|
|
|
|
edateText = util.unixtoTime(detail.etime, 'YYYY-MM-DD')
|
|
|
|
detail.deadlineDate = detail.etime
|
|
|
|
} else {
|
|
|
|
let time = new Date(detail.cdate * 1000);
|
|
|
|
time.setTime(time.getTime() + parseInt(detail.aexpiration) * 24 * 60 * 60 * 1000); // 加上有效期天数的毫秒数
|
|
|
|
time.setHours(23, 59, 0, 0);
|
|
|
|
let deadlineDate = Math.floor(time.getTime() / 1000);
|
|
|
|
detail.deadlineDate = deadlineDate
|
|
|
|
edateText = util.unixtoTime(deadlineDate, 'YYYY-MM-DD')
|
|
|
|
if (condition.valid_forever === '1') {
|
|
|
|
detail.foreverText = '永久有效';
|
|
|
|
}
|
|
|
|
if (condition.valid_forever === '0' && condition.today) {
|
|
|
|
let obj = this.setTimeRange(detail.cdate, 0, parseInt(condition.today) - 1);
|
|
|
|
detail.useStime = obj.useStime;
|
|
|
|
detail.useEtime = obj.useEtime;
|
|
|
|
}
|
|
|
|
if (condition.valid_forever === '0' && condition.tomorrow) {
|
|
|
|
let obj = this.setTimeRange(detail.cdate, 1, condition.tomorrow * 1);
|
|
|
|
detail.useStime = obj.useStime;
|
|
|
|
detail.useEtime = obj.useEtime;
|
|
|
|
}
|
|
|
|
if (condition.valid_forever === '0' && condition.sday && condition.eday) {
|
|
|
|
let eday = condition.sday == '1' ? (parseInt(condition.eday) - 1) : (parseInt(condition.eday) + 1)
|
|
|
|
let obj = this.setTimeRange(detail.cdate, parseInt(condition.sday) - 1, eday);
|
|
|
|
detail.useStime = obj.useStime;
|
|
|
|
detail.useEtime = obj.useEtime;
|
|
|
|
}
|
|
|
|
if((detail.useStime>0 && detail.useEtime>0) || condition.valid_forever === '1') {
|
|
|
|
detail.endDateStr = condition.valid_forever == '1' ? '永久有效' : (util.unixtoTime(detail.useStime, 'YYYY-MM-DD') + '至' + util.unixtoTime(detail.useEtime, 'YYYY-MM-DD'));
|
|
|
|
}
|
|
|
|
detail.endDateStr = cdateText + '至' + edateText
|
|
|
|
})
|
|
|
|
// 筛选出当前时间 > 领取日期+领取后几天有效的日期
|
|
|
|
list = list.filter(item => {
|
|
|
|
return this.data.dataStr < (item.deadlineDate * 1)
|
|
|
|
return (this.data.dataStr < (item.useEtime * 1) || item.aexpiration.valid_forever == '1');
|
|
|
|
})
|
|
|
|
list.sort((a, b) => {
|
|
|
|
return (a.etime * 1) - (b.etime * 1)
|
|
...
|
...
|
@@ -451,26 +461,13 @@ Page({ |
|
|
|
console.log('当前餐段、是不是法定节假日', {
|
|
|
|
...obj
|
|
|
|
});
|
|
|
|
const isTimestampInRange = (startTimestamp, endTimestamp) => {
|
|
|
|
const currentTimestamp = Math.floor(Date.now() / 1000);
|
|
|
|
return currentTimestamp >= startTimestamp && currentTimestamp <= endTimestamp;
|
|
|
|
};
|
|
|
|
list.forEach(coupon => {
|
|
|
|
const couponDate = new Date(coupon.cdate * 1000);
|
|
|
|
const startUseDate = new Date(couponDate);
|
|
|
|
const endUseDate = new Date(couponDate);
|
|
|
|
if (coupon.arule.is_same_day) {
|
|
|
|
startUseDate.setTime(couponDate.getTime() - 24 * 60 * 60 * 1000); // 前一天
|
|
|
|
} else {
|
|
|
|
startUseDate.setTime(couponDate.getTime()); // 直接设置为 couponDate 的时间
|
|
|
|
}
|
|
|
|
|
|
|
|
// 券领取天数为0或者为空 默认券可使用最晚时间是券有效期截止时间
|
|
|
|
if (coupon.aexpiration == '0' || coupon.aexpiration == '') {
|
|
|
|
let date = new Date(coupon.etime * 1000);
|
|
|
|
endUseDate.setTime(date.getTime());
|
|
|
|
} else {
|
|
|
|
endUseDate.setTime(couponDate.getTime() + parseInt(coupon.aexpiration) * 24 * 60 * 60 * 1000); // 加上有效期天数
|
|
|
|
}
|
|
|
|
endUseDate.setHours(23, 59, 59, 999);
|
|
|
|
// 今天不是领取当日,但在有效天数内 && 今天是领取当日且可用
|
|
|
|
const isUseDate = (currentDate > startUseDate && currentDate < endUseDate);
|
|
|
|
// 判断当前时间在不在 券的有效期内
|
|
|
|
const isUseDate = isTimestampInRange(coupon.useStime, coupon.useEtime);
|
|
|
|
let selectedValue = true;
|
|
|
|
let str = true
|
|
|
|
if (coupon.exp_date && coupon.exp_date.week_data && coupon.exp_date.week_data.length > 0) {
|
|
...
|
...
|
@@ -511,8 +508,7 @@ Page({ |
|
|
|
if ((str && !selectedValue) || (!str && selectedValue)) {
|
|
|
|
availableDate = false
|
|
|
|
}
|
|
|
|
coupon.isOk = isUseDate && (availableDate || coupon.exp_date.week_show == '无') ? '1' : '0'; //是否在可用时间内 1可使用 2不可使用
|
|
|
|
coupon.expirationDate = coupon.deadlineDate;
|
|
|
|
coupon.isOk = (isUseDate || coupon.aexpiration.valid_forever == '1') && (availableDate || coupon.exp_date.week_show == '无') ? '1' : '0'; //是否在可用时间内 1可使用 2不可使用
|
|
|
|
});
|
|
|
|
return list;
|
|
|
|
},
|
|
...
|
...
|
@@ -602,9 +598,9 @@ Page({ |
|
|
|
console.log(`两者的优惠值相同: ${maxStackableValue}`);
|
|
|
|
let copiedList1 = JSON.parse(JSON.stringify(list1));
|
|
|
|
let copiedList2 = JSON.parse(JSON.stringify(list2));
|
|
|
|
let minList1 = copiedList1.length > 0 ? Math.min(...copiedList1.map(item => item.expirationDate)) : Infinity;
|
|
|
|
let minList2 = copiedList2.length > 0 ? Math.min(...copiedList2.map(item => item.expirationDate)) : Infinity;
|
|
|
|
// 判断最小的 expirationDate 是在 list1 还是 list2
|
|
|
|
let minList1 = copiedList1.length > 0 ? Math.min(...copiedList1.map(item => item.useEtime)) : Infinity;
|
|
|
|
let minList2 = copiedList2.length > 0 ? Math.min(...copiedList2.map(item => item.useEtime)) : Infinity;
|
|
|
|
// 判断最小的 useEtime 是在 list1 还是 list2
|
|
|
|
if (minList1 <= minList2) {
|
|
|
|
console.log('最小的在 list1 中', list1);
|
|
|
|
finalList = list1
|
|
...
|
...
|
@@ -640,6 +636,17 @@ Page({ |
|
|
|
finalList, // 返回可叠加和不可叠加的优惠券组合
|
|
|
|
};
|
|
|
|
},
|
|
|
|
// 计算免费券有效期的起始、结束日期
|
|
|
|
setTimeRange(cdate, startOffset, endOffset) {
|
|
|
|
console.log(cdate, startOffset, endOffset);
|
|
|
|
const startDate = new Date((cdate + startOffset * 86400) * 1000);
|
|
|
|
startDate.setHours(0, 0, 0, 0);
|
|
|
|
let useStime = startDate.getTime() / 1000
|
|
|
|
const endDate = new Date((cdate + endOffset * 86400) * 1000);
|
|
|
|
endDate.setHours(23, 59, 59, 0);
|
|
|
|
let useEtime = endDate.getTime() / 1000
|
|
|
|
return { useStime, useEtime };
|
|
|
|
},
|
|
|
|
// 处理优惠券不可用日期数据
|
|
|
|
hasConsecutiveSelect(arr, type) {
|
|
|
|
let firstTitle = null;
|
...
|
...
|
|