请假补假
This commit is contained in:
210
src/main/webapp/jsp/administration/leaveApplyEdit.jsp
Normal file
210
src/main/webapp/jsp/administration/leaveApplyEdit.jsp
Normal file
@ -0,0 +1,210 @@
|
||||
<%@ page language="java" pageEncoding="UTF-8"%>
|
||||
<script type="text/javascript">
|
||||
function normalizeDateValue(value) {
|
||||
if (!value) {
|
||||
return "";
|
||||
}
|
||||
var match = value.match(/^(\d{4}-\d{2}-\d{2})/);
|
||||
return match ? match[1] : value;
|
||||
}
|
||||
function getHalfDayIndex(period) {
|
||||
return period === "下午" ? 1 : 0;
|
||||
}
|
||||
function getDayNumber(dateText) {
|
||||
var parts = dateText.split("-");
|
||||
if (parts.length !== 3) {
|
||||
return NaN;
|
||||
}
|
||||
return Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / (24 * 60 * 60 * 1000));
|
||||
}
|
||||
function parseLeaveTimeValue(value) {
|
||||
if (!value) {
|
||||
return {date: "", period: "上午"};
|
||||
}
|
||||
var match = value.match(/^(\d{4}-\d{2}-\d{2})\s*(上午|下午)$/);
|
||||
if (match) {
|
||||
return {date: match[1], period: match[2]};
|
||||
}
|
||||
var datetimeMatch = value.match(/^(\d{4}-\d{2}-\d{2})(?:\s+(\d{1,2})(?::\d{1,2}(?::\d{1,2})?)?(?:\.\d+)?)?$/);
|
||||
if (datetimeMatch) {
|
||||
var hour = datetimeMatch[2] ? parseInt(datetimeMatch[2], 10) : 0;
|
||||
return {date: datetimeMatch[1], period: hour >= 12 ? "下午" : "上午"};
|
||||
}
|
||||
return {date: "", period: "上午"};
|
||||
}
|
||||
function syncLeaveTimeFields() {
|
||||
var startDate = normalizeDateValue($("#startDate").val());
|
||||
var endDate = normalizeDateValue($("#endDate").val());
|
||||
var startPeriod = $("#startPeriod").val();
|
||||
var endPeriod = $("#endPeriod").val();
|
||||
$("#startDate").val(startDate);
|
||||
$("#endDate").val(endDate);
|
||||
$("#startTime").val(startDate && startPeriod ? (startDate + " " + startPeriod) : "");
|
||||
$("#endTime").val(endDate && endPeriod ? (endDate + " " + endPeriod) : "");
|
||||
}
|
||||
function calculateLeaveDays() {
|
||||
syncLeaveTimeFields();
|
||||
var startDate = $("#startDate").val();
|
||||
var endDate = $("#endDate").val();
|
||||
var startPeriod = $("#startPeriod").val();
|
||||
var endPeriod = $("#endPeriod").val();
|
||||
if (!startDate || !endDate || !startPeriod || !endPeriod) {
|
||||
$("#hours").val("");
|
||||
$("#days").val("");
|
||||
return true;
|
||||
}
|
||||
var startUnit = getDayNumber(startDate) * 2 + getHalfDayIndex(startPeriod);
|
||||
var endUnit = getDayNumber(endDate) * 2 + getHalfDayIndex(endPeriod);
|
||||
if (isNaN(startUnit) || isNaN(endUnit) || endUnit < startUnit) {
|
||||
$("#hours").val("");
|
||||
$("#days").val("");
|
||||
return false;
|
||||
}
|
||||
var halfDays = endUnit - startUnit + 1;
|
||||
var hours = halfDays * 4;
|
||||
var days = halfDays / 2;
|
||||
$("#hours").val(hours.toString());
|
||||
$("#days").val(days % 1 === 0 ? days.toString() : days.toFixed(1));
|
||||
return true;
|
||||
}
|
||||
function showUser4AuditSelectsFun() {
|
||||
var userIds = $("#auditManId").val();
|
||||
var companyId = $("#subForm [name='unitId']").val();
|
||||
$.post(ext.contextPath + '/user/userForSelect.do', {formId:"subForm",hiddenId:"auditManId",textId:"auditManName",userIds:userIds,companyId:companyId}, function(data) {
|
||||
$("#user4SelectDiv").html(data);
|
||||
openModal("user4SelectModal");
|
||||
});
|
||||
}
|
||||
function doUpdateLeaveApply(startProcess) {
|
||||
$("#subForm").bootstrapValidator('validate');
|
||||
if ($("#subForm").data('bootstrapValidator').isValid()) {
|
||||
if (!calculateLeaveDays()) {
|
||||
showAlert('d', '结束日期时段不能早于开始日期时段');
|
||||
return;
|
||||
}
|
||||
var url = startProcess ? "/administration/leaveApply/startProcess.do" : "/administration/leaveApply/update.do";
|
||||
$.post(ext.contextPath + url, $("#subForm").serialize(), function(data) {
|
||||
if (data.res == 1) {
|
||||
closeModal('subModal');
|
||||
$("#table").bootstrapTable('refresh');
|
||||
} else {
|
||||
showAlert('d', data.res == 0 ? '操作失败' : data.res);
|
||||
}
|
||||
}, 'json');
|
||||
}
|
||||
}
|
||||
$(function(){
|
||||
$("#subForm").bootstrapValidator({
|
||||
live: 'disabled',
|
||||
fields: {
|
||||
startDate: {validators: {notEmpty: {message: '请选择开始日期'}}},
|
||||
startPeriod: {validators: {notEmpty: {message: '请选择开始时段'}}},
|
||||
endDate: {validators: {notEmpty: {message: '请选择结束日期'}}},
|
||||
endPeriod: {validators: {notEmpty: {message: '请选择结束时段'}}},
|
||||
reason: {validators: {notEmpty: {message: '请填写申请事由'}}}
|
||||
}
|
||||
});
|
||||
$('#startDate,#endDate').datetimepicker({
|
||||
language: 'zh-CN',
|
||||
format: 'yyyy-mm-dd',
|
||||
startView: 'month',
|
||||
minView: 2,
|
||||
maxView: 'year',
|
||||
autoclose: true,
|
||||
todayBtn: true,
|
||||
todayHighlight: true
|
||||
}).on('changeDate', function() {
|
||||
calculateLeaveDays();
|
||||
});
|
||||
$('#startDate,#endDate,#startPeriod,#endPeriod').on('change', function() {
|
||||
calculateLeaveDays();
|
||||
});
|
||||
var startInfo = parseLeaveTimeValue("${leaveApply.startTime}");
|
||||
var endInfo = parseLeaveTimeValue("${leaveApply.endTime}");
|
||||
$("#applyType").val("${leaveApply.applyType}");
|
||||
$("#leaveType").val("${leaveApply.leaveType}");
|
||||
$("#startDate").val(startInfo.date);
|
||||
$("#startPeriod").val(startInfo.period);
|
||||
$("#endDate").val(endInfo.date);
|
||||
$("#endPeriod").val(endInfo.period);
|
||||
calculateLeaveDays();
|
||||
});
|
||||
</script>
|
||||
<div class="modal fade" id="subModal">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
||||
<h4 class="modal-title">编辑请假补假申请</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" id="subForm">
|
||||
<input type="hidden" name="id" value="${leaveApply.id}">
|
||||
<input type="hidden" name="unitId" value="${leaveApply.unitId}">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">申请类型</label>
|
||||
<div class="col-sm-8">
|
||||
<select class="form-control" id="applyType" name="applyType">
|
||||
<option value="leave">请假</option>
|
||||
<option value="compensatory">补假</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">假别</label>
|
||||
<div class="col-sm-8">
|
||||
<select class="form-control" id="leaveType" name="leaveType">
|
||||
<option value="annual">年假</option>
|
||||
<option value="personal">事假</option>
|
||||
<option value="sick">病假</option>
|
||||
<option value="marriage">婚假</option>
|
||||
<option value="maternity">产假</option>
|
||||
<option value="funeral">丧假</option>
|
||||
<option value="adjustment">调休</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">开始日期</label>
|
||||
<div class="col-sm-5"><input class="form-control" id="startDate" name="startDate" autocomplete="off" placeholder="请选择日期"></div>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="startPeriod" name="startPeriod">
|
||||
<option value="上午">上午</option>
|
||||
<option value="下午">下午</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">结束日期</label>
|
||||
<div class="col-sm-5"><input class="form-control" id="endDate" name="endDate" autocomplete="off" placeholder="请选择日期"></div>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="endPeriod" name="endPeriod">
|
||||
<option value="上午">上午</option>
|
||||
<option value="下午">下午</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" id="startTime" name="startTime" value="${leaveApply.startTime}">
|
||||
<input type="hidden" id="endTime" name="endTime" value="${leaveApply.endTime}">
|
||||
<input type="hidden" id="hours" name="hours" value="${leaveApply.hours}">
|
||||
<div class="form-group"><label class="col-sm-3 control-label">天数</label><div class="col-sm-8"><input class="form-control" id="days" name="days" value="${leaveApply.days}" readonly placeholder="自动计算"></div></div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">审批人</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control" id="auditManName" name="auditManName" value="${leaveApply.auditMan}" onclick="showUser4AuditSelectsFun();" placeholder="可不选;不选时谁签收谁审批">
|
||||
<input type="hidden" id="auditManId" name="auditManId" value="${leaveApply.auditManId}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group"><label class="col-sm-3 control-label">申请事由</label><div class="col-sm-8"><textarea class="form-control" rows="3" name="reason">${leaveApply.reason}</textarea></div></div>
|
||||
<div class="form-group"><label class="col-sm-3 control-label">工作交接</label><div class="col-sm-8"><textarea class="form-control" rows="2" name="handoverDesc">${leaveApply.handoverDesc}</textarea></div></div>
|
||||
<div class="form-group"><label class="col-sm-3 control-label">备注</label><div class="col-sm-8"><textarea class="form-control" rows="2" name="remark">${leaveApply.remark}</textarea></div></div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||||
<button type="button" class="btn btn-primary" onclick="doUpdateLeaveApply(false)">保存</button>
|
||||
<button type="button" class="btn btn-primary" onclick="doUpdateLeaveApply(true)">发起审批</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user