最终效果如下:开始日期与结束日期最小间隔一周,最大间隔30周,开始日期结束日期都在当前周之前,且从周一至周日算为一整周,现在是周二
默认日历的第一天是从周日开始的,需要在配置项加入firstDayOfWeek:1,使开始的一周从星期一开始计算

image.png

image.png
// 周历开始时间 配置项
function beginWeek(begin, end) {
// 获取当天时间 周几
var now = new Date();
var curday = 7 - now.getDay(); // 7 - 当前周几
WdatePicker({
onpicked:function() {
// 设置了一个隐藏的input存 年-月-日信息,供结束日期使用
$('#' + begin + 'hidden').val($dp.cal.getP('y')+'-'+$dp.cal.getP('M')+'-'+$dp.cal.getP('d'))
// 设置显示的值 2018/10
$dp.$(begin).value=$dp.cal.getP('y')+'-'+$dp.cal.getP('W','WW');
},
isShowWeek:'true',errDealMode:3,
minDate:'%y-%M-{%d-210}', // 最小时间 当前时间-210天
maxDate:'%y-%M-{%d-14+'+ curday +'}', // 最大时间 当前时间-14天再减去当前的周几数目,使高亮在周日那天
});
}
// 周历结束时间 配置项
function endWeek(begin, end) {
// 获取当天时间 周几
var now = new Date();
var curday = now.getDay(); // 当前周几
// 获取开始时间,后面拼接字符串是随意写的,为了获取时间戳
var now = $('#beginDateWeekhidden').val() + ' ' + '18:55:49:123'
var nowTi = new Date(now)
var nowTime = new Date(now).getTime(); // 获取当前时间戳
var day = 7- nowTi.getDay() // 7 - 开始时间选择的周几
// 选择周日时候可能会出现0的状态,这里处理一下
day === 7 ? day = 0 : void 0
WdatePicker(
{onpicked:function(){
$dp.$(end).value=$dp.cal.getP('y')+'-'+$dp.cal.getP('W','WW');
},
isShowWeek:'true',errDealMode:3,
// 最小时间从周一开始
minDate:'#F{$dp.$D(\'beginDateWeekhidden\',{d:1+'+ day +'})}',
// 最大时间到周日
maxDate:'%y-%M-{%d-'+curday +'}',
});
}
<input id="beginDateWeek" name="beginDate" id="beginDate" type="text" readonly="readonly"
value="${beginDate}" maxlength="20" class="input-mini Wdate"
onclick="beginWeek('beginDateWeek','endDateWeek');"
/>
<input id="beginDateWeekhidden" type="hidden" value=""/>
-
<input id="endDateWeek" name="endDate" id="endDate" type="text" value="${endDate}" readonly="readonly"
maxlength="20" class="input-mini Wdate" value="${beginDate.endDate}"
data-option='{"dateFmt":"yyyy-MM-dd","isShowWeek":"true"}'
onclick="endWeek('beginDateWeek','endDateWeek');"
/>