Files
SIPAIIS_WMS_JSSW/WebRoot/jsp/work/schedulingCalender.jsp

264 lines
12 KiB
Plaintext
Raw Normal View History

2026-01-16 14:13:44 +08:00
<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ page import="com.sipai.entity.base.ServerObject" %>
<%@ taglib uri="http://www.springsecurity.org/jsp" prefix="security" %>
<!DOCTYPE html>
<!-- <html lang="zh-CN"> -->
<!-- BEGIN HEAD -->
<head>
<style>
</style>
<title>
<%= ServerObject.atttable.get("TOPTITLE")%>
</title>
<!-- 引用页头及CSS页-->
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<link rel="stylesheet" href="<%=request.getContextPath()%>/node_modules/fullcalendar/dist/fullcalendar.min.css"/>
<link rel="stylesheet"
href="<%=request.getContextPath()%>/node_modules/fullcalendar/dist/fullcalendar.print.min.css" media='print'/>
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/moment/min/moment.min.js"
charset="utf-8"></script>
<script type="text/javascript"
src="<%=request.getContextPath()%>/node_modules/fullcalendar/dist/fullcalendar.min.js"
charset="utf-8"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/fullcalendar/dist/locale/zh-cn.js"
charset="utf-8"></script>
<!-- bootstrap switch -->
<link rel="stylesheet"
href="<%=request.getContextPath()%>/node_modules/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.min.css"/>
<script type="text/javascript"
src="<%=request.getContextPath()%>/node_modules/bootstrap-switch/dist/js/bootstrap-switch.min.js"
charset="utf-8"></script>
<!-- 文件上传-->
<link rel="stylesheet" href="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/css/fileinput.min.css"/>
<script type="text/javascript"
src="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/fileinput.min.js"
charset="utf-8"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/locales/zh.js"
charset="utf-8"></script>
<style>
.calendarEvents {
height: 30%;
}
</style>
<script type="text/javascript">
var patroltype = "";
var showAllSchedulingPerDay = function (date) {
$.post(ext.contextPath + '/work/scheduling/showSchedulingList.do', {
date: date,
grouptype: $('#grouptype').val(),
patroltype: patroltype
}, function (data) {
$("#allSchedulingDiv").html(data);
openModal('schedulingListModal');
});
};
var showSingleScheduling = function (id, datetime) {
$.post(ext.contextPath + '/work/scheduling/edit.do', {
id: id,
grouptype: $('#grouptype').val(),
patroltype: patroltype,
datetime: datetime
},
function (data) {
$("#editDiv").html(data);
openModal('schedulingEditModal');
});
};
var doReloadCalendar = function () {
$('#calendar').fullCalendar('refetchEvents');
};
var dosearch = function () {
$('#calendar').fullCalendar('refetchEvents');
}
function titlePullTogether(event) {
var result = "<span style='cursor: pointer;'>" + event._groupTimename + "</span><span style='cursor: pointer;'>&nbsp;&nbsp;&nbsp;" + event._groupDetailName + "</span>";
return result;
}
function initFun() {
$.post(ext.contextPath + "/work/groupType/getGroupTypeTreeFromDetail.do", {unitId: unitId}, function (data) {
// console.log("sdata",data);
patroltype = data[0].patroltype;
var select = $("#grouptype").select2({
data: data,
placeholder: '请选择',//默认文字提示
allowClear: false,//允许清空
escapeMarkup: function (markup) {
return markup;
}, // 自定义格式化防止xss注入
language: "zh-CN",
minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框
formatResult: function formatRepo(repo) {
return repo.text;
}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo) {
return repo.text;
} // 函数用于呈现当前的选择
});
$("#grouptype").on("select2:select", function (e) {
var ckdata = e.params.data;
patroltype = ckdata.patroltype;
doReloadCalendar();
});
$(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'});//选中元素上下居中
if (data.length != 0) {
select.val(data[0].id).trigger("change");//设置选中
} else {
select.val("").trigger("change");//设置选中
}
//日历
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
// defaultDate: '2018-03-12',
timeFormat: 'HH:mm', //定义表格中显示的时间格式如2230默认格式为HH(:mm)效果是整点的时候自动隐藏分钟例如2300会显示成23
displayEventEnd: true, //显示事件的结束时间默认是false
aspectRatio: 2, //设置日历单元格显示的宽高比,数值越小越窄高
navLinks: true, // can click day/week names to navigate views
eventLimit: true, // allow "more" link when too many events
editable: false, //允许编辑
eventStartEditable: false, //允许直接在界面中编辑事件的开始时间
eventDurationEditable: false, //允许编辑事件的时长
events: function (start, end, timezone, callback) { //单击日历中事件时触发的函数,实现效果是获取当前点击事件的标题,开始时间,结束时间传给DOM控件
if (unitId != "" && $("#grouptype").val() != "") {
var events = [];
//console.log("val", $("#grouptype").val());
// var starttime = moment(start).format('YYYY-MM-DD HH:mm:ss'); //使用moment.js对时间进行格式化
// var endtime = moment(end).format('YYYY-MM-DD HH:mm:ss');
$.post(ext.contextPath + '/work/scheduling/getlCalenderEvents.do', {
sdt: start.format(),
edt: end.format(),
bizid: unitId,
schedulingtype: $("#grouptype").val(),
}, function (data) {
//console.log("data", data);
for (var i = 0; i < data.length; i++) {
var obj = new Object();
obj.id = data[i].id;
// obj.title = data[i]._groupTimename + "&nbsp;&nbsp;&nbsp;" + data[i]._groupDetailName;
obj.title = titlePullTogether(data[i]);
var startdate = data[i].stdt.substring(0, 10).replace(/-/g, '/');
var stdtts = new Date(startdate).getTime();
var enddate = data[i].eddt.substring(0, 10).replace(/-/g, '/');
var eddtts = new Date(enddate).getTime();
if (eddtts > stdtts) {//跨天
obj.color = '#3C8DBC';
} else {
obj.color = '#F39C12';
}
obj.start = data[i].stdt;
obj.end = data[i].eddt;
//console.log("obj", obj);
events.push(obj);
}
callback(events);
}, 'json'); //把从后台取出的数据进行封装以后在页面上以fullCalendar的方式进行显示
}
},
eventClick: function (event, jsEvent, view) {
// var datetime = moment(date).format('YYYY-MM-DD HH:mm:ss');
showSingleScheduling(event.id, event.start._i);
},
dayClick: function (date, jsEvent, view) {
// console.log(date)
var datetime = moment(date).format('YYYY-MM-DD HH:mm:ss');
showAllSchedulingPerDay(datetime);
},
eventRender: function (event, element) {//title以HTML显示换行
element.html(event.title);
}
});
}, 'json');
}
$(function () {
initFun();
})
//导入
function importExcelFun() {
$.post(ext.contextPath + '/work/scheduling/importExcelFun.do', {unitId: unitId}, function (data) {
$("#subDiv").html(data);
openModal('subModal');
});
}
//导出
function downloadExcelFun() {
var month = moment($('#calendar').fullCalendar('getView').intervalStart).format('YYYY-MM-DD HH:mm:ss');
var groupType = $('#grouptype').val();
window.open(ext.contextPath + "/work/scheduling/downloadExcelFun.do?date=" + month + "&groupType=" + groupType + "&unitId=" + unitId);
}
</script>
</head>
<body onload="initMenu()" class="hold-transition ${cu.themeclass} sidebar-mini">
<div class="wrapper">
<div class="content-wrapper">
<%-- <section class="content-header">--%>
<%-- <h1 id="head_title"></h1>--%>
<%-- <ol class="breadcrumb">--%>
<%-- <li><a id='head_firstlevel' href="#"><i class="fa fa-dashboard"></i> </a></li>--%>
<%-- </ol>--%>
<%-- </section>--%>
<section class="content container-fluid">
<div id="mainAlertdiv"></div>
<div id="allSchedulingDiv"></div>
<div id="singleSchedulingDiv"></div>
<div id="subDiv"></div>
<div id="addDiv"></div>
<div id="editDiv"></div>
<div id="shiftChangeDiv"></div>
<div id="workPeopleAddDiv"></div>
<div id="user4SelectDiv"></div>
<div>
<div class="form-group form-inline" style="padding:0;">
<div class="form-group pull">
<label class="form-label">排班类型:</label>
<select class="form-control select2 " id="grouptype" name="grouptype"
style="width: 220px;"></select>
</div>
<div class="form-group pull">
<button type="button" class="btn btn-default btn-sm" onclick="importExcelFun();"><i
class="fa fa-cloud-upload"></i>
Excel导入
</button>
<button type="button" class="btn btn-default btn-sm" onclick="downloadExcelFun();"><i
class="fa fa-cloud-download"></i>
Excel导出
</button>
</div>
</div>
<div class="box box-primary">
<div class="box-body no-padding">
<div id="calendar"></div>
</div>
</div>
</div>
</section>
</div>
</div>
</body>
</html>