Files
SIPAIIS_WMS_JSSW/src/main/webapp/jsp/administration/leaveApplyEdit.jsp
2026-04-09 13:12:26 +08:00

196 lines
8.5 KiB
Plaintext

<%@ 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 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>&times;</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"><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>