我们使用过程中返现,很多客户反应无法选择下个月的时间,什么原因,插件是可以切换下个月的呀!但是你要知道,你知道不代表用户知道。
用户点选8月1日 怎么都没有反应,这时候就会认为软件有问题不用。
我们再看看微信官方自己的时间选择插件,是可以让你选择的。


解决思路:
查看代码发现不能选择的原因是因为阻止了我们选择
if (weeks.disable) return
我们需要可以选择并且自动切换下个月,或上个月,语言组织能力有限直接上代码
choiceDate(weeks)方法中添加如下代码
console.log(weeks,this.nowDate);
// 组合选中的fullDate
var selectedWeeks = weeks;
var selectedMonth = Number(selectedWeeks.month);
if (selectedWeeks.fullDate==undefined){
switch (selectedWeeks.month) {
case 13:
selectedMonth = 1;
break;
case 10:
case 11:
case 12:
break
default:
if (selectedWeeks.month.length ==3 && typeof selectedWeeks.month === 'string'){
selectedMonth = this.sumDigits(selectedMonth)
}
break
}
// 使用 split 方法分割日期,然后重新拼接
let dateParts = this.nowDate.fullDate.split('-');
if (selectedMonth == 1 && dateParts[1]=='12') {
dateParts[0] = String(Number(dateParts[0]) + 1); // 年份加1
}else if (selectedMonth==12 && dateParts[1]=='01'){
dateParts[0] = String(Number(dateParts[0]) - 1); // 年份减1
}
selectedWeeks.fullDate = dateParts[0] + '-' + String(selectedMonth).padStart(2, '0') + '-' + String(selectedWeeks.date).padStart(2, '0')
}
console.log(selectedWeeks);
const startDateTime = new Date(this.startDate).getTime();
const endDateTime = new Date(this.endDate).getTime();
const nowDateTime = new Date(selectedWeeks.fullDate).getTime();
const fullDateTime = new Date(weeks.fullDate).getTime();
if (selectedWeeks.disable && startDateTime && endDateTime && nowDateTime && (nowDateTime < startDateTime || nowDateTime > endDateTime)) {
// 提示不可选择
uni.showToast({
title: '日期['+selectedWeeks.fullDate+']不可选',
icon: 'none'
})
return ;
}
console.log(selectedMonth,Number(this.nowDate.month));
// 选择月份
if(selectedMonth!=Number(this.nowDate.month)){
if(selectedMonth>Number(this.nowDate.month)){
this.changeMonth('next')
}else if(selectedMonth<Number(this.nowDate.month)){
this.changeMonth('pre')
}
}
// if (weeks.disable) return
自定义了一个 月份转换的方法: sumDigits
sumDigits(num) {
// 将数字转换为字符串以便逐个提取每位数字
const digits = num.toString();
// 初始化总和为0
let sum = 0;
// 遍历每个字符并将其转换回数字后累加
for (let i = 0; i < digits.length; i++) {
sum += parseInt(digits[i], 10);
}
return sum;
},
能力有限:如果对您有所帮助,我将十分高兴。
1732

被折叠的 条评论
为什么被折叠?



