$('#calendar').fullCalendar({
header: {
left: '',
center: 'title',
right: 'prev,next today'
},
weekNumbers:true,
weekNumberCalculation:function(params){
var d = params._d;
var date = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
var week;
//console.log("date",date);
$.ajax({
type: "POST",
url: siteurl + '/mes/productcalendar/queryWeekNum',
data: JSON.stringify({date:date}),
async: false,
dataType: 'json',
contentType: 'application/json;charset=UTF-8',
success: function (r) { // 获取当前月的数据
//console.log("r",r.week);
week = r.week;
}
});
return week;
},
firstDay: 5,
editable: true,
eventLimit: true,
droppable: true, // this allows things to be dropped onto the calendar
drop: function (event, dayDelta, minuteDelta, allDay) {
var date_value = new Date(event._d);
date = date_value.getFullYear() + '-' + ('00' + (date_value.getMonth() + 1)).slice(-2) + '-' + ('00' + (date_value.getDate())).slice(-2);
if (minuteDelta.helper[0].innerHTML == '加班') {
//弹出选择加班时长范围的弹窗
//根据日期查找当天方案 再根据方案查找方案班组时间
//$('#planname').val(planname);
//console.log(date);
if (event._d < new Date()) {//所选时间小于当前时间,不可以生成方案
layer.alert("过期日期不可生成方案排班");
}
else {
planname = '加班';
vm2.selelctTeamPlanName(date);
index2 = layer.open({
type: 1,
title: '加班',
area: ['350px', '380px'],
content: $('#overtime')
});
Initialize();
form.render();
}
} else {
var planstr = minuteDelta.helper[0].innerHTML;
planname = planstr.substr(0, planstr.indexOf(':'));
//获取到所拖拽的方案的id
planid = minuteDelta.helper[0].id;
if (event._d < new Date()) {//所选时间小于当前时间,不可以生成方案
layer.alert("过期日期不可生成方案排班");
}
else {
//弹出选择作用范围的弹窗
$('#planname').val(planname);
index3 = layer.open({
type: 1,
title: '排班',
area: ['400px', '380px'],
content: $('#jump')
});
form.render();
}
}
},
eventDrop: function (event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) {
//alert(dayDelta);
//console.log(event);
},
selectable: true,
selectHelper: true,
select: function(start, end) {
var date = new Date(end);//获取结束时间
date.setDate(date.getDate()-1);
startT = new Date(start).getFullYear() + '-' + (new Date(start).getMonth() + 1) + '-' + new Date(start).getDate();
endT = new Date(date).getFullYear() + '-' + (new Date(date).getMonth() + 1) + '-' + (new Date(date).getDate());
//alert(new Date(startT)+' '+ new Date(endT));
if (start < new Date() || end 1){
//所选日期有方案的 不是同一个方案 选择班次、班组点击保存则弹出不可修改
layer.alert("所选日期内的方案不统一,无法批量修改班组!");
}else if(r.mesCalendarScheduleEntities.length<1){
//所选日期没有生成方案 一个方案都没有
layer.alert("所选日期内没有方案,请先添加方案再批量修改班组!");
}
}
});
}
},
editable: false, //不允许拖动
events: function (start, end, timezone, callback) {
events = [];
vm.getEventList(callback);
vm.getWorkOverList(callback);
},
eventRender: function (event, element) {//title以HTML显示(换行)
element.html(event.title);
},
eventClick: function (event, jsEvent, view) {
index1 = layer.open({
type: 1,
title: '事件详细信息',
area: ['650px','600px'],
content: $('#info')
});
//日期
//点击查看详情时的日期和方案名
curdate = event.start._i;
curplname = event.title.substr(0, event.title.indexOf(':'));
delplname = curplname;
deldate = curdate;
//方案名
//console.log(plname);
//根据方案名和日期查找所有事件
vm.getAllEventList(curplname, curdate,1);
vm.initTable();
vm.initPage();
//form.render();
}
});
- 日历显示以周五作为周的第一天
设置firstDay: 5,
- 日历上显示第几周,根据官方文档查询到的资料显示,如果我们需要自定义可以通过weekNumberCalculation自定义方法来显示当前为第几周
weekNumberCalculation:function(params){
var d = params._d;
var date = d.getFullYear() + ‘-’ + (d.getMonth() + 1) + ‘-’ + d.getDate();
var week;
//console.log(“date”,date);
$.ajax({
type: “POST”,
url: siteurl + ‘/mes/productcalendar/queryWeekNum’,
data: JSON.stringify({date:date}),
async: false,
dataType: ‘json’,
contentType: ‘application/json;charset=UTF-8’,
success: function ® { // 获取当前月的数据
//console.log(“r”,r.week);
week = r.week;
}
});
return week;
},
ajax传第一列日期值 params._d 到后台进行计算当前为第几周,返回week为图中39,40,41,42,43
ps:由于规则特殊,所以需要算当前第几周,若显示自然周不需要自定义计算