Merge branch 'develop' of http://25.13.9.101:9000/K17_AITS/tra-app into develop
This commit is contained in:
@@ -89,17 +89,23 @@
|
||||
const expand = ref(false); // 展开状态
|
||||
const isSigned = ref(false); // 今日签到状态
|
||||
const continuousDay = ref(0); // 连续签到
|
||||
const continuousDay30 = computed(() => continuousDay.value % 30); // 连续签到取模30的天数
|
||||
const continuousDay30 = computed(() => {
|
||||
// 连续签到取30的天数
|
||||
const mod = continuousDay.value % 30;
|
||||
// 关键:取模为0时返回30(代表满30天),否则返回mod(1-29天)
|
||||
return mod === 0 ? (continuousDay.value === 0 ? 0 : 30) : mod;
|
||||
});
|
||||
// 判断一下当前的签到显示在第几周
|
||||
const nowLine = computed(() => {
|
||||
// 计算当前需要显示图标的天数(已签到则是连续天数,未签到则是下一天)
|
||||
const currentDay = isSigned.value ? continuousDay30.value : continuousDay30.value + 1;
|
||||
// 按每周7天分行,行数从0开始(例如:1-7天 → 第0行,8-14天 → 第1行...)
|
||||
// 注意:如果天数从1开始(不是0),需要减1再计算
|
||||
console.log('nowLine', Math.floor((currentDay - 1) / 7));
|
||||
return Math.floor((currentDay - 1) / 7);
|
||||
const line = Math.floor((currentDay - 1) / 7);
|
||||
console.log('nowLine', Math.max(line, 0)); // 避免输出 -1
|
||||
return Math.max(line, 0); // 核心修复:-1 会被转为 0
|
||||
});
|
||||
|
||||
|
||||
const emits = defineEmits(['checkInFun']);
|
||||
// 切换显示状态
|
||||
const switchStatus = () => {
|
||||
@@ -108,9 +114,10 @@
|
||||
// 退出签到
|
||||
const close = () => {
|
||||
popup.value.close();
|
||||
typeof checkInClickCallback === 'function' && checkInClickCallback({
|
||||
status:false
|
||||
})
|
||||
typeof checkInClickCallback === 'function' &&
|
||||
checkInClickCallback({
|
||||
status: false
|
||||
});
|
||||
};
|
||||
const checkInLoading = ref(false);
|
||||
// 签到
|
||||
@@ -119,7 +126,7 @@
|
||||
checkInLoading.value = true;
|
||||
// 函数执行成功的回调
|
||||
checkInClickCallback({
|
||||
status:true,
|
||||
status: true,
|
||||
days: continuousDay.value,
|
||||
successCb: ({ days, res }) => {
|
||||
console.log('签到成功', res);
|
||||
@@ -176,7 +183,7 @@
|
||||
|
||||
// 计算当前是第几天(以"前X天"为第1天)
|
||||
const dayNumber = i - -X + 1; // 核心计算:转换为从1开始的序列
|
||||
|
||||
|
||||
// 计算text字段
|
||||
let text = '1'; // 默认显示1
|
||||
if (dayNumber === 30) {
|
||||
@@ -207,23 +214,20 @@
|
||||
|
||||
return groupedList;
|
||||
}
|
||||
|
||||
|
||||
const open = (isSignedStatus, days, onCheckInClick = () => {}, onCheckInSuccess = () => {}) => {
|
||||
isSigned.value = isSignedStatus; // 今日签到状态
|
||||
continuousDay.value = days; // 连续签到
|
||||
// isSigned.value = false; // 今日签到状态
|
||||
// continuousDay.value = 1; // 连续签到
|
||||
// continuousDay.value = 30; // 连续签到
|
||||
checkInClickCallback = onCheckInClick;
|
||||
checkInSuccessCallback = onCheckInSuccess;
|
||||
// 示例:X=10时,以"10天前"为第1天,生成35天列表
|
||||
try {
|
||||
const X = continuousDay30.value - (isSigned.value ? 1 : 0);
|
||||
// const X = 10;
|
||||
// console.log(`以${continuousDay.value}天`);
|
||||
// console.log(`以${X}天前为第1天的35天分组日期:`);
|
||||
// console.log('取', X);
|
||||
const subtractNum = isSigned.value ? 1 : 0;
|
||||
const X = Math.max(continuousDay30.value - subtractNum, 0);
|
||||
console.log('取', X);
|
||||
dateGroups.value = generateGroupedDateList(X);
|
||||
|
||||
} catch (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
@@ -239,7 +243,6 @@
|
||||
text-align: center;
|
||||
// 隐藏展开时超过30天的样式
|
||||
&.hide.expand {
|
||||
|
||||
.calendar-day-title {
|
||||
width: 70rpx;
|
||||
color: #fff;
|
||||
|
||||
Reference in New Issue
Block a user