dev_oa/app/oa/view/approve/add_jiaban.html
HDM58\hdm58 f26a7693c0 优化:审批模块的请假、出差、外出、加班、用车等时长的计算,新的计算方式按照天计算,最小是0.5天。
注意,本次需要更新数据库:
ALTER TABLE `oa_approve` ADD COLUMN `start_time_span` int(1) NOT NULL DEFAULT 0 COMMENT '开始时间时段:1上午,2下午' AFTER `start_time`;
ALTER TABLE `oa_approve` ADD COLUMN `end_time_span` int(1) NOT NULL DEFAULT 0 COMMENT '结束时间时段:1上午,2下午' AFTER `end_time`;
2023-11-16 11:47:46 +08:00

167 lines
5.7 KiB
HTML

{extend name="../../base/view/common/base" /}
{block name="style"}
{include file="/approve/add_style" /}
{/block}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-4" lay-filter="demo-val-filter">
<h3 class="pb-3">加班申请审批</h3>
{eq name="$id" value="0"}
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">开始时间<font>*</font></td>
<td>
<div class="layui-input-inline" style="width:120px; margin-right:16px;">
<input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</div>
<div class="layui-input-inline">
<input type="radio" name="start_time_span" value="1" title="上午" checked lay-filter="starttype">
<input type="radio" name="start_time_span" value="2" title="下午" lay-filter="starttype">
</div>
</td>
<td class="layui-td-gray">结束时间<font>*</font></td>
<td>
<div class="layui-input-inline" style="width:120px; margin-right:16px;">
<input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</div>
<div class="layui-input-inline">
<input type="radio" name="end_time_span" value="1" title="上午" lay-filter="endtype">
<input type="radio" name="end_time_span" value="2" title="下午" checked lay-filter="endtype">
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray">加班天数</td>
<td colspan="3"><span id="days">-</span><input type="hidden" id="duration" name="duration" value="0"></td>
</tr>
<tr>
<td class="layui-td-gray">加班事由<font>*</font></td>
<td colspan="3">
<textarea name="content" placeholder="请输入加班事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入加班事由"></textarea>
</td>
</tr>
</table>
{else/}
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">开始时间<font>*</font></td>
<td>
<div class="layui-input-inline" style="width:120px; margin-right:16px;">
<input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="{$detail.start_time|date='Y-m-d'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</div>
<div class="layui-input-inline">
<input type="radio" name="start_time_span" value="1" title="上午" lay-filter="starttype" {eq name="$detail.start_time_span" value="1"} checked{/eq}>
<input type="radio" name="start_time_span" value="2" title="下午" lay-filter="starttype" {eq name="$detail.start_time_span" value="2"} checked{/eq}>
</div>
</td>
<td class="layui-td-gray">结束时间<font>*</font></td>
<td>
<div class="layui-input-inline" style="width:120px; margin-right:16px;">
<input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="{$detail.end_time|date='Y-m-d'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</div>
<div class="layui-input-inline">
<input type="radio" name="end_time_span" value="1" title="上午" lay-filter="endtype" {eq name="$detail.end_time_span" value="1"} checked{/eq}>
<input type="radio" name="end_time_span" value="2" title="下午" lay-filter="endtype" {eq name="$detail.end_time_span" value="2"} checked{/eq}>
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray">加班天数</td>
<td colspan="3"><span id="days">{$detail.duration|default='-'}</span><input type="hidden" id="duration" name="duration" value="{$detail.duration|default='0'}"></td>
</tr>
<tr>
<td class="layui-td-gray">请假事由<font>*</font></td>
<td colspan="5">
<textarea name="content" placeholder="请输入请假理由" class="layui-textarea" lay-verify="required" lay-reqText="请输入请假理由">{$detail.content}</textarea>
</td>
</tr>
</table>
{/eq}
{include file="/approve/add_flow" /}
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
/*
* 时长计算
*/
function daysBetweenDates(date1, date2) {
var date1 = $('#start_time').val();
var date2 = $('#end_time').val();
if(date1=='' || date2==''){
return -1;
}
var startDate = new Date(date1);
var endDate = new Date(date2);
var millisecondsPerDay = 24 * 60 * 60 * 1000;
var differenceInMilliseconds = endDate - startDate;
var differenceInDays = differenceInMilliseconds / millisecondsPerDay;
return Math.round(differenceInDays);
}
const moduleInit = ['tool','employeepicker','oaTool'];
function gouguInit() {
var form = layui.form,
tool=layui.tool,
oaTool=layui.oaTool,
laydate = layui.laydate;
oaTool.addFile({
btn: 'upFile',
box: 'fileList'
});
if (typeof (flowStep) == "function") {
flowStep();
}
function countDuration(){
let hours = daysBetweenDates();
if(hours < 0){
$('#duration').val(0);
$('#days').html('-');
}
else{
let formData = form.val('demo-val-filter');
if(formData.start_time_span==1){
hours=hours+1;
}
if(formData.start_time_span==2){
hours=hours+0.5;
}
if(formData.end_time_span==1){
hours=hours-0.5;
}
if(hours<0){
hours=0;
}
$('#duration').val(hours);
$('#days').html(hours);
}
}
//日期时间范围
lay('.select-time').each(function () {
laydate.render({
elem: this,
trigger: 'click',
done:function(){
countDuration();
}
});
});
form.on('radio(starttype)',function(data){
countDuration();
});
form.on('radio(endtype)',function(data){
countDuration();
});
}
</script>
{/block}
<!-- /脚本 -->