优化:审批日期选择操作优化,工时计算优化。

This commit is contained in:
HDM58\hdm58 2023-06-14 18:18:52 +08:00
parent 307d2ec30a
commit 3bdfe60443
11 changed files with 215 additions and 596 deletions

View File

@ -35,7 +35,7 @@
,cols: [[ ,cols: [[
{field:'id',width:80, title: 'ID号', align:'center'} {field:'id',width:80, title: 'ID号', align:'center'}
,{field: 'sort', title: '排序',align:'center', width:80} ,{field: 'sort', title: '排序',align:'center', width:80}
,{field:'title', edit:'text',width:240, title: '分类名称'} ,{field:'title', width:240, title: '分类名称'}
,{field:'pid', title: '父级ID', width:80, align:'center'} ,{field:'pid', title: '父级ID', width:80, align:'center'}
,{field:'desc', title: '描述', } ,{field:'desc', title: '描述', }
,{width:160,title: '操作', align:'center',templet: function(d){ ,{width:160,title: '操作', align:'center',templet: function(d){

View File

@ -399,8 +399,8 @@ class Approve extends BaseController
$detail['end_time_b'] = date('H:i',$detail['end_time']); $detail['end_time_b'] = date('H:i',$detail['end_time']);
$detail['detail_time'] = date('Y-m-d',$detail['detail_time']); $detail['detail_time'] = date('Y-m-d',$detail['detail_time']);
$detail['days'] = floor($detail['duration']*10/75); $detail['days'] = floor($detail['duration']*10/80);
$detail['hours'] = (($detail['duration']*10)%75)/10; $detail['hours'] = (($detail['duration']*10)%80)/10;
$type = $detail['type']; $type = $detail['type'];
if($detail['file_ids'] !=''){ if($detail['file_ids'] !=''){
$fileArray = Db::name('File')->where('id','in',$detail['file_ids'])->select(); $fileArray = Db::name('File')->where('id','in',$detail['file_ids'])->select();
@ -446,8 +446,8 @@ class Approve extends BaseController
$detail['detail_time'] = date('Y-m-d',$detail['detail_time']); $detail['detail_time'] = date('Y-m-d',$detail['detail_time']);
} }
$detail['days'] = floor($detail['duration']*10/75); $detail['days'] = floor($detail['duration']*10/80);
$detail['hours'] = (($detail['duration']*10)%75)/10; $detail['hours'] = (($detail['duration']*10)%80)/10;
$detail['create_user'] = Db::name('Admin')->where('id',$detail['admin_id'])->value('name'); $detail['create_user'] = Db::name('Admin')->where('id',$detail['admin_id'])->value('name');
$flows = Db::name('FlowStep')->where(['action_id'=>$detail['id'],'type'=>1,'sort'=>$detail['check_step_sort'],'delete_time'=>0])->find(); $flows = Db::name('FlowStep')->where(['action_id'=>$detail['id'],'type'=>1,'sort'=>$detail['check_step_sort'],'delete_time'=>0])->find();

View File

@ -9,35 +9,29 @@
{eq name="$id" value="0"} {eq name="$id" value="0"}
<table class="layui-table layui-table-form"> <table class="layui-table layui-table-form">
<tr> <tr>
<td class="layui-td-gray-2">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td> <td>
<input type="hidden" name="duration" value=""> <input type="hidden" name="duration" value="">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">出差地点<font>*</font></td> <td class="layui-td-gray">出差地点<font>*</font></td>
<td colspan="5"><input type="text" name="address" value="" autocomplete="off" placeholder="请输入出差地点" lay-verify="required" lay-reqText="请输入出差地点" class="layui-input"></td> <td colspan="3"><input type="text" name="address" value="" autocomplete="off" placeholder="请输入出差地点" lay-verify="required" lay-reqText="请输入出差地点" class="layui-input"></td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">出差事由<font>*</font></td> <td class="layui-td-gray">出差事由<font>*</font></td>
<td colspan="5"> <td colspan="3">
<textarea name="content" placeholder="请输入出差事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入出差事由"></textarea> <textarea name="content" placeholder="请输入出差事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入出差事由"></textarea>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td> <td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td>
<td colspan="5" style="line-height:inherit"> <td colspan="3" style="line-height:inherit">
<div class="layui-row" id="fileList"> <div class="layui-row" id="fileList">
<input type="hidden" data-type="file" name="file_ids" value=""> <input type="hidden" data-type="file" name="file_ids" value="">
</div> </div>
@ -47,35 +41,29 @@
{else/} {else/}
<table class="layui-table layui-table-form"> <table class="layui-table layui-table-form">
<tr> <tr>
<td class="layui-td-gray-2">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" readonly class="layui-input select-time" value="{$detail.start_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="{$detail.start_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.start_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td> <td>
<input id="end_time_a" name="end_time_a" autocomplete="off" readonly class="layui-input select-time" value="{$detail.end_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input type="hidden" name="duration" value="">
</td> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="{$detail.end_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
<td>
<input type="hidden" name="duration" value="{$detail.duration}">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.end_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">出差地点<font>*</font></td> <td class="layui-td-gray">出差地点<font>*</font></td>
<td colspan="5"><input type="text" name="address" value="{$detail.address}" autocomplete="off" placeholder="请输入出差地点" lay-verify="required" lay-reqText="请输入出差地点" class="layui-input"></td> <td colspan="3"><input type="text" name="address" value="{$detail.address}" autocomplete="off" placeholder="请输入出差地点" lay-verify="required" lay-reqText="请输入出差地点" class="layui-input"></td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">出差事由<font>*</font></td> <td class="layui-td-gray">出差事由<font>*</font></td>
<td colspan="5"> <td colspan="3">
<textarea name="content" placeholder="请输入出差事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入出差事由">{$detail.content}</textarea> <textarea name="content" placeholder="请输入出差事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入出差事由">{$detail.content}</textarea>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td> <td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td>
<td colspan="5" style="line-height:inherit"> <td colspan="3" style="line-height:inherit">
<div class="layui-row" id="fileList"> <div class="layui-row" id="fileList">
<input type="hidden" name="file_ids" data-type="file" value="{$detail.file_ids}"> <input type="hidden" name="file_ids" data-type="file" value="{$detail.file_ids}">
{notempty name="$detail.file_ids"} {notempty name="$detail.file_ids"}
@ -102,43 +90,19 @@ const moduleInit = ['tool','employeepicker','oaTool'];
tool=layui.tool, tool=layui.tool,
oaTool=layui.oaTool, oaTool=layui.oaTool,
laydate = layui.laydate; laydate = layui.laydate;
oaTool.addFile({
btn: 'upFile',
box: 'fileList'
});
//日期时间范围 //日期时间范围
lay('.select-time').each(function () { lay('.select-time').each(function () {
laydate.render({ laydate.render({
elem: this, elem: this,
trigger: 'click' trigger: 'click',
fullPanel:true,
type:'datetime'
}); });
}); });
//选择具体时间 oaTool.addFile({
lay('.select-datetime').each(function () { btn: 'upFile',
laydate.render({ box: 'fileList'
elem: this,
trigger: 'click',
type: 'time',
format: 'HH:mm',
btns: ['clear', 'confirm'],
ready: function (date) {
var dom = $(".laydate-time-list").children("li");
for (var i = 0; i < dom.length; i++) {
if (i == 2 || i == 5) {
$(dom[i]).remove();
} else if(i==1||i==4) {
var li = $(dom[i]).children("ol").children("li")
for (var j = 0; j < li.length; j++) {
if ($(li[j]).text() != 00 && $(li[j]).text()!=30) {
$(li[j]).remove();
}
}
}
}
},
});
}); });
if (typeof (flowStep) == "function") { if (typeof (flowStep) == "function") {

View File

@ -20,23 +20,17 @@
</td> </td>
<td class="layui-td-gray">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td> <td>
<input type="hidden" name="duration" value=""> <input type="hidden" name="duration" value="">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">备注</td> <td class="layui-td-gray">备注</td>
<td colspan="7"> <td colspan="5">
<textarea name="remark" placeholder="请输入备注信息" class="layui-textarea"></textarea> <textarea name="remark" placeholder="请输入备注信息" class="layui-textarea"></textarea>
</td> </td>
</tr> </tr>
@ -55,23 +49,17 @@
</td> </td>
<td class="layui-td-gray">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.start_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="{$detail.start_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.start_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td> <td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.end_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input type="hidden" name="duration" value="">
</td> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="{$detail.end_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
<td>
<input type="hidden" name="duration" value="{$detail.duration}">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.end_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">备注</td> <td class="layui-td-gray">备注</td>
<td colspan="7"> <td colspan="5">
<textarea name="remark" placeholder="请输入备注" class="layui-textarea">{$detail.remark}</textarea> <textarea name="remark" placeholder="请输入备注" class="layui-textarea">{$detail.remark}</textarea>
</td> </td>
</tr> </tr>
@ -92,44 +80,12 @@ const moduleInit = ['tool','employeepicker'];
flowStep(); flowStep();
} }
//日期时间范围 //日期时间范围
laydate.render({ lay('.select-time').each(function () {
elem: '#start_time_a',
type: 'date',
format: 'yyyy-MM-dd',
showBottom: false
});
//日期时间范围
laydate.render({
elem: '#end_time_a',
type: 'date',
format: 'yyyy-MM-dd',
showBottom: false
});
//选择具体时间
lay('.select-datetime').each(function () {
laydate.render({ laydate.render({
elem: this, elem: this,
trigger: 'click', trigger: 'click',
type: 'time', fullPanel:true,
format: 'HH:mm', type:'datetime'
btns: ['clear', 'confirm'],
ready: function (date) {
var dom = $(".laydate-time-list").children("li");
for (var i = 0; i < dom.length; i++) {
if (i == 2 || i == 5) {
$(dom[i]).remove();
} else if(i==1||i==4) {
var li = $(dom[i]).children("ol").children("li")
for (var j = 0; j < li.length; j++) {
if ($(li[j]).text() != 00 && $(li[j]).text()!=30) {
$(li[j]).remove();
}
}
}
}
}
}); });
}); });
} }

View File

@ -10,42 +10,36 @@
<table class="layui-table layui-table-form"> <table class="layui-table layui-table-form">
<tr> <tr>
<td class="layui-td-gray-2">活动名称<font>*</font></td> <td class="layui-td-gray-2">活动名称<font>*</font></td>
<td colspan="2"><input type="text" name="name" value="" autocomplete="off" placeholder="请输入活动名称" lay-verify="required" lay-reqText="请输入活动名称" class="layui-input"></td> <td><input type="text" name="name" value="" autocomplete="off" placeholder="请输入活动名称" lay-verify="required" lay-reqText="请输入活动名称" class="layui-input"></td>
<td class="layui-td-gray">活动预算<font>*</font></td> <td class="layui-td-gray">活动预算<font>*</font></td>
<td colspan="2"><input type="text" name="amount" value="" autocomplete="off" placeholder="请输入活动预算金额" lay-verify="required|number" lay-reqText="请输入活动预算金额" class="layui-input"></td> <td><input type="text" name="amount" value="" autocomplete="off" placeholder="请输入活动预算金额" lay-verify="required|number" lay-reqText="请输入活动预算金额" class="layui-input"></td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">活动说明<font>*</font></td> <td class="layui-td-gray">活动说明<font>*</font></td>
<td colspan="5"> <td colspan="3">
<textarea name="content" placeholder="请输入活动说明" class="layui-textarea" lay-verify="required" lay-reqText="请输入活动说明" ></textarea> <textarea name="content" placeholder="请输入活动说明" class="layui-textarea" lay-verify="required" lay-reqText="请输入活动说明" ></textarea>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td> <td>
<input type="hidden" name="duration" value=""> <input type="hidden" name="duration" value="">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">备注</td> <td class="layui-td-gray">备注</td>
<td colspan="5"> <td colspan="3">
<textarea name="remark" placeholder="请输入备注信息" class="layui-textarea"></textarea> <textarea name="remark" placeholder="请输入备注信息" class="layui-textarea"></textarea>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td> <td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td>
<td colspan="5" style="line-height:inherit"> <td colspan="3" style="line-height:inherit">
<div class="layui-row" id="fileList"> <div class="layui-row" id="fileList">
<input type="hidden" data-type="file" name="file_ids" value=""> <input type="hidden" data-type="file" name="file_ids" value="">
</div> </div>
@ -56,9 +50,9 @@
<table class="layui-table layui-table-form"> <table class="layui-table layui-table-form">
<tr> <tr>
<td class="layui-td-gray-2">活动名称<font>*</font></td> <td class="layui-td-gray-2">活动名称<font>*</font></td>
<td colspan="2"><input type="text" name="name" value="{$detail.name}" autocomplete="off" placeholder="请输入活动名称" lay-verify="required" lay-reqText="请输入活动名称" class="layui-input"></td> <td><input type="text" name="name" value="{$detail.name}" autocomplete="off" placeholder="请输入活动名称" lay-verify="required" lay-reqText="请输入活动名称" class="layui-input"></td>
<td class="layui-td-gray">活动预算<font>*</font></td> <td class="layui-td-gray">活动预算<font>*</font></td>
<td colspan="2"><input type="text" name="amount" value="{$detail.amount}" autocomplete="off" placeholder="请输入活动预算金额" lay-verify="required|number" lay-reqText="请输入活动预算金额" class="layui-input"></td> <td><input type="text" name="amount" value="{$detail.amount}" autocomplete="off" placeholder="请输入活动预算金额" lay-verify="required|number" lay-reqText="请输入活动预算金额" class="layui-input"></td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">活动说明<font>*</font></td> <td class="layui-td-gray">活动说明<font>*</font></td>
@ -69,29 +63,23 @@
<tr> <tr>
<td class="layui-td-gray">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.start_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="{$detail.start_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.start_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td> <td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.end_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input type="hidden" name="duration" value="">
</td> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="{$detail.end_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
<td>
<input type="hidden" name="duration" value="{$detail.duration}">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.end_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">备注</td> <td class="layui-td-gray">备注</td>
<td colspan="5"> <td colspan="3">
<textarea name="remark" placeholder="请输入备注" class="layui-textarea">{$detail.remark}</textarea> <textarea name="remark" placeholder="请输入备注" class="layui-textarea">{$detail.remark}</textarea>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td> <td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td>
<td colspan="5" style="line-height:inherit"> <td colspan="3" style="line-height:inherit">
<div class="layui-row" id="fileList"> <div class="layui-row" id="fileList">
<input type="hidden" name="file_ids" data-type="file" value="{$detail.file_ids}"> <input type="hidden" name="file_ids" data-type="file" value="{$detail.file_ids}">
{notempty name="$detail.file_ids"} {notempty name="$detail.file_ids"}
@ -127,44 +115,12 @@ const moduleInit = ['tool','employeepicker','oaTool'];
flowStep(); flowStep();
} }
//日期时间范围 //日期时间范围
laydate.render({ lay('.select-time').each(function () {
elem: '#start_time_a',
type: 'date',
format: 'yyyy-MM-dd',
showBottom: false
});
//日期时间范围
laydate.render({
elem: '#end_time_a',
type: 'date',
format: 'yyyy-MM-dd',
showBottom: false
});
//选择具体时间
lay('.select-datetime').each(function () {
laydate.render({ laydate.render({
elem: this, elem: this,
trigger: 'click', trigger: 'click',
type: 'time', fullPanel:true,
format: 'HH:mm', type:'datetime'
btns: ['clear', 'confirm'],
ready: function (date) {
var dom = $(".laydate-time-list").children("li");
for (var i = 0; i < dom.length; i++) {
if (i == 2 || i == 5) {
$(dom[i]).remove();
} else if(i==1||i==4) {
var li = $(dom[i]).children("ol").children("li")
for (var j = 0; j < li.length; j++) {
if ($(li[j]).text() != 00 && $(li[j]).text()!=30) {
$(li[j]).remove();
}
}
}
}
}
}); });
}); });
} }

View File

@ -9,29 +9,23 @@
{eq name="$id" value="0"} {eq name="$id" value="0"}
<table class="layui-table layui-table-form"> <table class="layui-table layui-table-form">
<tr> <tr>
<td class="layui-td-gray-2">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td> <td>
<input type="hidden" name="duration" value=""> <input type="hidden" name="duration" value="">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">加班时长</td> <td class="layui-td-gray">加班时长</td>
<td colspan="5" id="duration">-</td> <td colspan="3" id="duration">-</td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">加班事由<font>*</font></td> <td class="layui-td-gray">加班事由<font>*</font></td>
<td colspan="5"> <td colspan="3">
<textarea name="content" placeholder="请输入加班事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入加班事由"></textarea> <textarea name="content" placeholder="请输入加班事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入加班事由"></textarea>
</td> </td>
</tr> </tr>
@ -39,20 +33,14 @@
{else/} {else/}
<table class="layui-table layui-table-form"> <table class="layui-table layui-table-form">
<tr> <tr>
<td class="layui-td-gray-2">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.start_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="{$detail.start_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.start_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td> <td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.end_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input type="hidden" name="duration" value="">
</td> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="{$detail.end_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
<td>
<input type="hidden" name="duration" value="{$detail.duration}">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.end_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
@ -79,16 +67,11 @@
* 工时计算 * 工时计算
*/ */
function leaveTime() { function leaveTime() {
var data_1 = $('#start_time_a').val(); var start_date = $('#start_time').val();
var data_1_1 = $('#start_time_b').val(); var end_date = $('#end_time').val();
var data_2 = $('#end_time_a').val(); if(start_date=='' || end_date==''){
var data_2_1 = $('#end_time_b').val();
if(data_1=='' || data_1_1=='' || data_2=='' || data_2_1==''){
return 0; return 0;
} }
var start_date = data_1+' '+data_1_1;
var end_date = data_2+' '+data_2_1;
var start = new Date(start_date.replace(/-/g,'/')); var start = new Date(start_date.replace(/-/g,'/'));
var end = new Date(end_date.replace(/-/g,'/')); var end = new Date(end_date.replace(/-/g,'/'));
var diff=end.getTime() - start.getTime();//时间差的毫秒数 var diff=end.getTime() - start.getTime();//时间差的毫秒数
@ -98,7 +81,7 @@ function leaveTime() {
//计算出小时数 //计算出小时数
var hours=diff/(3600*1000); var hours=diff/(3600*1000);
console.log(hours); console.log(hours);
return hours; return hours.toFixed(1);
} }
@ -114,6 +97,8 @@ const moduleInit = ['tool','employeepicker'];
laydate.render({ laydate.render({
elem: this, elem: this,
trigger: 'click', trigger: 'click',
fullPanel:true,
type:'datetime',
done:function(){ done:function(){
var hours = leaveTime(); var hours = leaveTime();
if(hours == 0){ if(hours == 0){
@ -127,41 +112,6 @@ const moduleInit = ['tool','employeepicker'];
}); });
}); });
//选择具体时间
lay('.select-datetime').each(function () {
laydate.render({
elem: this,
trigger: 'click',
type: 'time',
format: 'HH:mm',
btns: ['clear', 'confirm'],
ready: function (date) {
var dom = $(".laydate-time-list").children("li");
for (var i = 0; i < dom.length; i++) {
if (i == 2 || i == 5) {
$(dom[i]).remove();
} else if(i==1||i==4) {
var li = $(dom[i]).children("ol").children("li")
for (var j = 0; j < li.length; j++) {
if ($(li[j]).text() != 00 && $(li[j]).text()!=30) {
$(li[j]).remove();
}
}
}
}
},
done:function(){
var hours = leaveTime();
if(hours == 0){
$('#duration').html('-');
}
else{
$('#duration').html('共'+hours+'小时');
}
$('[name="duration"]').val(hours);
}
});
});
} }
</script> </script>
{/block} {/block}

View File

@ -10,7 +10,7 @@
<table class="layui-table layui-table-form"> <table class="layui-table layui-table-form">
<tr> <tr>
<td class="layui-td-gray-2">请假类型<font>*</font></td> <td class="layui-td-gray-2">请假类型<font>*</font></td>
<td colspan="5"> <td colspan="3">
<select name="detail_type" lay-verify="required" lay-reqText="请选择请假类型"> <select name="detail_type" lay-verify="required" lay-reqText="请选择请假类型">
<option value="">--请选择--</option> <option value="">--请选择--</option>
<option value="1">事假</option> <option value="1">事假</option>
@ -28,35 +28,29 @@
<tr> <tr>
<td class="layui-td-gray">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td> <td>
<input type="hidden" name="duration" value=""> <input type="hidden" name="duration" value="">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">请假工时</td> <td class="layui-td-gray">请假工时</td>
<td colspan="2" id="hours">-</td> <td id="hours">-</td>
<td class="layui-td-gray">请假天数</td> <td class="layui-td-gray">请假天数</td>
<td colspan="2" id="days">-</td> <td id="days">-</td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">请假事由<font>*</font></td> <td class="layui-td-gray">请假事由<font>*</font></td>
<td colspan="5"> <td colspan="3">
<textarea name="content" placeholder="请输入请假事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入请假事由"></textarea> <textarea name="content" placeholder="请输入请假事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入请假事由"></textarea>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td> <td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td>
<td colspan="5" style="line-height:inherit"> <td colspan="3" style="line-height:inherit">
<div class="layui-row" id="fileList"> <div class="layui-row" id="fileList">
<input data-type="file" type="hidden" name="file_ids" value=""> <input data-type="file" type="hidden" name="file_ids" value="">
</div> </div>
@ -67,7 +61,7 @@
<table class="layui-table layui-table-form"> <table class="layui-table layui-table-form">
<tr> <tr>
<td class="layui-td-gray">请假类型<font>*</font></td> <td class="layui-td-gray">请假类型<font>*</font></td>
<td colspan="5"> <td colspan="3">
<select name="detail_type" lay-verify="required" lay-reqText="请选择请假类型"> <select name="detail_type" lay-verify="required" lay-reqText="请选择请假类型">
<option value="">--请选择--</option> <option value="">--请选择--</option>
<option value="1" {eq name="$detail.detail_type" value="1"}selected=""{/eq}>事假</option> <option value="1" {eq name="$detail.detail_type" value="1"}selected=""{/eq}>事假</option>
@ -85,35 +79,29 @@
<tr> <tr>
<td class="layui-td-gray">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.start_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="{$detail.start_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.start_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td> <td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.end_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input type="hidden" name="duration" value="">
</td> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="{$detail.end_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
<td>
<input type="hidden" name="duration" value="{$detail.duration}">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.end_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">请假工时</td> <td class="layui-td-gray">请假工时</td>
<td colspan="2" id="hours">共{$detail.duration}工时</td> <td id="hours">共{$detail.duration}工时</td>
<td class="layui-td-gray">请假天数</td> <td class="layui-td-gray">请假天数</td>
<td colspan="2" id="days">共{$detail.days}天,{$detail.hours}小时</td> <td id="days">共{$detail.days}天,{$detail.hours}小时</td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">请假事由<font>*</font></td> <td class="layui-td-gray">请假事由<font>*</font></td>
<td colspan="5"> <td colspan="3">
<textarea name="content" placeholder="请输入请假事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入请假事由">{$detail.content}</textarea> <textarea name="content" placeholder="请输入请假事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入请假事由">{$detail.content}</textarea>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td> <td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td>
<td colspan="5" style="line-height:inherit"> <td colspan="3" style="line-height:inherit">
<div class="layui-row" id="fileList"> <div class="layui-row" id="fileList">
<input data-type="file" type="hidden" name="file_ids" value="{$detail.file_ids}"> <input data-type="file" type="hidden" name="file_ids" value="{$detail.file_ids}">
{notempty name="$detail.file_ids"} {notempty name="$detail.file_ids"}
@ -137,68 +125,48 @@
/** /**
* 工时计算 * 工时计算
*/ */
function leaveTime() { const WORKDAY_HOURS = 8;
var data_1 = $('#start_time_a').val(); const START_HOUR = 9;
var data_1_1 = $('#start_time_b').val(); const END_HOUR = 18;
var data_2 = $('#end_time_a').val(); const START_BREAK_HOUR = 12;
var data_2_1 = $('#end_time_b').val(); const END_BREAK_HOUR = 13;
if(data_1=='' || data_1_1=='' || data_2=='' || data_2_1==''){ const WEEKEND_DAYS = [0, 6];
return 0;
function isWeekend(day) {
return WEEKEND_DAYS.includes(day);
} }
var start_date = data_1+' '+data_1_1; function calculateWorkHours() {
var end_date = data_2+' '+data_2_1; var startDate = new Date($('#start_time').val());
var start = new Date(start_date.replace(/-/g,'/')); var endDate = new Date($('#end_time').val());
var end = new Date(end_date.replace(/-/g,'/'));
var startHour = start.getHours(); //16
var startMin = start.getMinutes();
var endHour = end.getHours();
var endMin = end.getMinutes();
var startDate = start.setHours(0, 0, 0); const start = startDate.getTime();
var endDate = end.setHours(0, 0, 0); const end = endDate.getTime();
if(endDate<startDate){ const startDay = startDate.getDay();
return 0; const endDay = endDate.getDay();
}
var dayNum = parseInt(Math.abs(endDate - startDate) / 1000 / 60 / 60 / 24);
var hour = 0; let totalHours = 0;
if (startDate == endDate) {
var date = new Date(startDate); for (let time = start; time < end; time += 3600000 /* 1 hour in milliseconds */) {
var week = date.getDay(); const date = new Date(time);
if (week != 0 && week != 6) { const dayOfWeek = date.getDay();
hour= (endHour-startHour)*10-startMin/6+endMin/6; const hour = date.getHours();
if (startHour <= 12 && endHour>12) {
hour= hour-15; if (!isWeekend(dayOfWeek)) {
} if (dayOfWeek === startDay && hour < START_HOUR) {
} continue;
} else { } else if (dayOfWeek === endDay && hour >= END_HOUR) {
for (var i = 0; i <= dayNum; i++) { break;
var DateTime = startDate + 60 * 60 * 24 * 1000*i } else if (hour >= START_HOUR && hour < END_HOUR) {
var date = new Date(DateTime); if (hour < START_BREAK_HOUR || hour >= END_BREAK_HOUR) {
var week = date.getDay(); totalHours += 1;
if (week != 0 && week != 6) {
if (DateTime == startDate) {
hour+= (18-startHour)*10-(startMin/6);
if (startHour <= 12) {
hour= hour-15;
}
} else if (DateTime > startDate && DateTime < endDate) {
hour += 75;
} else if (DateTime == endDate){
hour+= (endHour-9)*10+endMin/6;
if (endHour > 12) {
hour= hour-15;
} }
} }
} }
} }
return totalHours;
} }
if(hour<0){
hour=0;
}
return hour;
}
const moduleInit = ['tool','employeepicker','oaTool']; const moduleInit = ['tool','employeepicker','oaTool'];
function gouguInit() { function gouguInit() {
@ -220,61 +188,22 @@ const moduleInit = ['tool','employeepicker','oaTool'];
laydate.render({ laydate.render({
elem: this, elem: this,
trigger: 'click', trigger: 'click',
fullPanel:true,
type:'datetime',
done:function(){ done:function(){
var hours = leaveTime(); var hours = calculateWorkHours();
if(hours == 0){ if(hours == 0){
$('#hours,#days').html('-'); $('#hours,#days').html('-');
} }
else{ else{
$('#hours').html('共'+hours/10+'小时'); $('#hours').html('共'+hours+'小时');
var days = 0; var days = 0;
if(hours>=75){ if(hours>=8){
days = parseInt(hours/75); days = parseInt(hours/8);
} }
$('#days').html('共'+days+'天,'+(hours%75)/10+'小时'); $('#days').html('共'+days+'天,'+(hours%8)+'小时');
} }
$('[name="duration"]').val(hours/10); $('[name="duration"]').val(hours);
}
});
});
//选择具体时间
lay('.select-datetime').each(function () {
laydate.render({
elem: this,
trigger: 'click',
type: 'time',
format: 'HH:mm',
btns: ['clear', 'confirm'],
ready: function (date) {
var dom = $(".laydate-time-list").children("li");
for (var i = 0; i < dom.length; i++) {
if (i == 2 || i == 5) {
$(dom[i]).remove();
} else if(i==1||i==4) {
var li = $(dom[i]).children("ol").children("li")
for (var j = 0; j < li.length; j++) {
if ($(li[j]).text() != 00 && $(li[j]).text()!=30) {
$(li[j]).remove();
}
}
}
}
},
done:function(){
var hours = leaveTime();
if(hours == 0){
$('#hours,#days').html('-');
}
else{
$('#hours').html('共'+hours/10+'小时');
var days = 0;
if(hours>=75){
days = parseInt(hours/75);
}
$('#days').html('共'+days+'天,'+(hours%75)/10+'小时');
}
$('[name="duration"]').val(hours/10);
} }
}); });
}); });

View File

@ -5,19 +5,4 @@
.layui-form-item .layui-btn-danger{display:none; margin-top:-8px} .layui-form-item .layui-btn-danger{display:none; margin-top:-8px}
.layui-form-item:hover .layui-btn-danger{display:inline-block;} .layui-form-item:hover .layui-btn-danger{display:inline-block;}
.select-1,.select-2{display:none;} .select-1,.select-2{display:none;}
/* 设置只展示时分,隐藏秒那一列 */
.laydate-time-list {
padding-bottom: 0;
overflow: hidden;
}
.laydate-time-list > li {
width: 50% !important;
}
.laydate-time-list ol li {
width: 100% !important;
padding-left: 0 !important;
text-align: center !important;
}
</style> </style>

View File

@ -10,40 +10,34 @@
<table class="layui-table layui-table-form"> <table class="layui-table layui-table-form">
<tr> <tr>
<td class="layui-td-gray-2">外出地点<font>*</font></td> <td class="layui-td-gray-2">外出地点<font>*</font></td>
<td colspan="5"><input type="text" name="address" value="" autocomplete="off" placeholder="请输入外出地点" lay-verify="required" lay-reqText="请输入外出地点" class="layui-input"></td> <td colspan="3"><input type="text" name="address" value="" autocomplete="off" placeholder="请输入外出地点" lay-verify="required" lay-reqText="请输入外出地点" class="layui-input"></td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td> <td>
<input type="hidden" name="duration" value=""> <input type="hidden" name="duration" value="">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">外出时长</td> <td class="layui-td-gray">外出时长</td>
<td colspan="2" id="hours">-</td> <td id="hours">-</td>
<td class="layui-td-gray">外出天数</td> <td class="layui-td-gray">外出天数</td>
<td colspan="2" id="days">-</td> <td id="days">-</td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">外出事由<font>*</font></td> <td class="layui-td-gray">外出事由<font>*</font></td>
<td colspan="5"> <td colspan="3">
<textarea name="content" placeholder="请输入外出事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入外出事由"></textarea> <textarea name="content" placeholder="请输入外出事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入外出事由"></textarea>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td> <td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td>
<td colspan="5" style="line-height:inherit"> <td colspan="3" style="line-height:inherit">
<div class="layui-row" id="fileList"> <div class="layui-row" id="fileList">
<input type="hidden" data-type="file" name="file_ids" value=""> <input type="hidden" data-type="file" name="file_ids" value="">
</div> </div>
@ -54,40 +48,34 @@
<table class="layui-table layui-table-form"> <table class="layui-table layui-table-form">
<tr> <tr>
<td class="layui-td-gray-2">外出地点<font>*</font></td> <td class="layui-td-gray-2">外出地点<font>*</font></td>
<td colspan="5"><input type="text" name="address" value="{$detail.address}" autocomplete="off" placeholder="请输入外出地点" lay-verify="required" lay-reqText="请输入外出地点" class="layui-input"></td> <td colspan="3"><input type="text" name="address" value="{$detail.address}" autocomplete="off" placeholder="请输入外出地点" lay-verify="required" lay-reqText="请输入外出地点" class="layui-input"></td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.start_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="{$detail.start_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.start_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td> <td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.end_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input type="hidden" name="duration" value="">
</td> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="{$detail.end_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
<td>
<input type="hidden" name="duration" value="{$detail.duration}">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.end_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">外出时长</td> <td class="layui-td-gray">外出时长</td>
<td colspan="2" id="hours">共{$detail.duration}工时</td> <td id="hours">共{$detail.duration}工时</td>
<td class="layui-td-gray">外出天数</td> <td class="layui-td-gray">外出天数</td>
<td colspan="2" id="days">共{$detail.days}天,{$detail.hours}小时</td> <td id="days">共{$detail.days}天,{$detail.hours}小时</td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">外出事由<font>*</font></td> <td class="layui-td-gray">外出事由<font>*</font></td>
<td colspan="5"> <td colspan="3">
<textarea name="content" placeholder="请输入外出事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入外出事由">{$detail.content}</textarea> <textarea name="content" placeholder="请输入外出事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入外出事由">{$detail.content}</textarea>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td> <td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div></td>
<td colspan="5" style="line-height:inherit"> <td colspan="3" style="line-height:inherit">
<div class="layui-row" id="fileList"> <div class="layui-row" id="fileList">
<input type="hidden" name="file_ids" data-type="file" value="{$detail.file_ids}"> <input type="hidden" name="file_ids" data-type="file" value="{$detail.file_ids}">
{notempty name="$detail.file_ids"} {notempty name="$detail.file_ids"}
@ -111,67 +99,46 @@
/** /**
* 工时计算 * 工时计算
*/ */
function leaveTime() { const WORKDAY_HOURS = 8;
var data_1 = $('#start_time_a').val(); const START_HOUR = 9;
var data_1_1 = $('#start_time_b').val(); const END_HOUR = 18;
var data_2 = $('#end_time_a').val(); const START_BREAK_HOUR = 12;
var data_2_1 = $('#end_time_b').val(); const END_BREAK_HOUR = 13;
if(data_1=='' || data_1_1=='' || data_2=='' || data_2_1==''){ const WEEKEND_DAYS = [0, 6];
return 0;
function isWeekend(day) {
return WEEKEND_DAYS.includes(day);
} }
var start_date = data_1+' '+data_1_1; function calculateWorkHours() {
var end_date = data_2+' '+data_2_1; var startDate = new Date($('#start_time').val());
var start = new Date(start_date.replace(/-/g,'/')); var endDate = new Date($('#end_time').val());
var end = new Date(end_date.replace(/-/g,'/'));
var startHour = start.getHours();
var startMin = start.getMinutes();
var endHour = end.getHours();
var endMin = end.getMinutes();
var startDate = start.setHours(0, 0, 0); const start = startDate.getTime();
var endDate = end.setHours(0, 0, 0); const end = endDate.getTime();
if(endDate<startDate){ const startDay = startDate.getDay();
return 0; const endDay = endDate.getDay();
}
var dayNum = parseInt(Math.abs(endDate - startDate) / 1000 / 60 / 60 / 24);
var hour = 0; let totalHours = 0;
if (startDate == endDate) {
var date = new Date(startDate); for (let time = start; time < end; time += 3600000 /* 1 hour in milliseconds */) {
var week = date.getDay(); const date = new Date(time);
if (week != 0 && week != 6) { const dayOfWeek = date.getDay();
hour= (endHour-startHour)*10-startMin/6+endMin/6; const hour = date.getHours();
if (startHour <= 12 && endHour>12) {
hour= hour-15; if (!isWeekend(dayOfWeek)) {
} if (dayOfWeek === startDay && hour < START_HOUR) {
} continue;
} else { } else if (dayOfWeek === endDay && hour >= END_HOUR) {
for (var i = 0; i <= dayNum; i++) { break;
var DateTime = startDate + 60 * 60 * 24 * 1000*i } else if (hour >= START_HOUR && hour < END_HOUR) {
var date = new Date(DateTime); if (hour < START_BREAK_HOUR || hour >= END_BREAK_HOUR) {
var week = date.getDay(); totalHours += 1;
if (week != 0 && week != 6) {
if (DateTime == startDate) {
hour+= (18-startHour)*10-(startMin/6);
if (startHour <= 12) {
hour= hour-15;
}
} else if (DateTime > startDate && DateTime < endDate) {
hour += 75;
} else if (DateTime == endDate){
hour+= (endHour-9)*10+endMin/6;
if (endHour > 12) {
hour= hour-15;
} }
} }
} }
} }
} return totalHours;
if(hour<0){
hour=0;
}
return hour;
} }
const moduleInit = ['tool','employeepicker','oaTool']; const moduleInit = ['tool','employeepicker','oaTool'];
@ -194,61 +161,22 @@ const moduleInit = ['tool','employeepicker','oaTool'];
laydate.render({ laydate.render({
elem: this, elem: this,
trigger: 'click', trigger: 'click',
fullPanel:true,
type:'datetime',
done:function(){ done:function(){
var hours = leaveTime(); var hours = calculateWorkHours();
if(hours == 0){ if(hours == 0){
$('#hours,#days').html('-'); $('#hours,#days').html('-');
} }
else{ else{
$('#hours').html('共'+hours/10+'小时'); $('#hours').html('共'+hours+'小时');
var days = 0; var days = 0;
if(hours>75){ if(hours>=8){
days = parseInt(hours/75); days = parseInt(hours/8);
} }
$('#days').html('共'+days+'天,'+(hours%75)/10+'小时'); $('#days').html('共'+days+'天,'+(hours%8)+'小时');
} }
$('[name="duration"]').val(hours/10); $('[name="duration"]').val(hours);
}
});
});
//选择具体时间
lay('.select-datetime').each(function () {
laydate.render({
elem: this,
trigger: 'click',
type: 'time',
format: 'HH:mm',
btns: ['clear', 'confirm'],
ready: function (date) {
var dom = $(".laydate-time-list").children("li");
for (var i = 0; i < dom.length; i++) {
if (i == 2 || i == 5) {
$(dom[i]).remove();
} else if(i==1||i==4) {
var li = $(dom[i]).children("ol").children("li")
for (var j = 0; j < li.length; j++) {
if ($(li[j]).text() != 00 && $(li[j]).text()!=30) {
$(li[j]).remove();
}
}
}
}
},
done:function(){
var hours = leaveTime();
if(hours == 0){
$('#hours,#days').html('-');
}
else{
$('#hours').html('共'+hours/10+'小时');
var days = 0;
if(hours>=75){
days = parseInt(hours/75);
}
$('#days').html('共'+days+'天,'+(hours%75)/10+'小时');
}
$('[name="duration"]').val(hours/10);
} }
}); });
}); });

View File

@ -11,29 +11,23 @@
<tr> <tr>
<td class="layui-td-gray">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td> <td>
<input type="hidden" name="duration" value=""> <input type="hidden" name="duration" value="">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">用车时长</td> <td class="layui-td-gray">用车时长</td>
<td colspan="5" id="duration">-</td> <td colspan="3" id="duration">-</td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray-2">用车目的地<font>*</font></td> <td class="layui-td-gray-2">用车目的地<font>*</font></td>
<td colspan="2"><input type="text" name="address" value="" autocomplete="off" placeholder="请输入用车目的地" lay-verify="required" lay-reqText="请输入用车目的地" class="layui-input"></td> <td><input type="text" name="address" value="" autocomplete="off" placeholder="请输入用车目的地" lay-verify="required" lay-reqText="请输入用车目的地" class="layui-input"></td>
<td class="layui-td-gray">车辆选择<font>*</font></td> <td class="layui-td-gray">车辆选择<font>*</font></td>
<td colspan="2"> <td>
<select name="detail_type" lay-verify="required" lay-reqText="请选择"> <select name="detail_type" lay-verify="required" lay-reqText="请选择">
<option value="">--请选择--</option> <option value="">--请选择--</option>
{volist name=":oa_car_cate()" id="vo"} {volist name=":oa_car_cate()" id="vo"}
@ -44,7 +38,7 @@
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">用车事由<font>*</font></td> <td class="layui-td-gray">用车事由<font>*</font></td>
<td colspan="5"> <td colspan="3">
<textarea name="content" placeholder="请输入用车事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入用车事由"></textarea> <textarea name="content" placeholder="请输入用车事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入用车事由"></textarea>
</td> </td>
</tr> </tr>
@ -54,29 +48,23 @@
<tr> <tr>
<td class="layui-td-gray">开始时间<font>*</font></td> <td class="layui-td-gray">开始时间<font>*</font></td>
<td> <td>
<input id="start_time_a" name="start_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.start_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="{$detail.start_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td>
<input id="start_time_b" name="start_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.start_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
<td class="layui-td-gray">结束时间<font>*</font></td> <td class="layui-td-gray">结束时间<font>*</font></td>
<td> <td>
<input id="end_time_a" name="end_time_a" autocomplete="off" class="layui-input select-time" value="{$detail.end_time_a}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间"> <input type="hidden" name="duration" value="">
</td> <input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="{$detail.end_time|date='Y-m-d H:i:s'}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
<td>
<input type="hidden" name="duration" value="{$detail.duration}">
<input id="end_time_b" name="end_time_b" autocomplete="off" class="layui-input select-datetime" value="{$detail.end_time_b}" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">用车时长</td> <td class="layui-td-gray">用车时长</td>
<td colspan="5" id="duration">共{$detail.duration}小时</td> <td colspan="3" id="duration">共{$detail.duration}小时</td>
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray-2">用车目的地<font>*</font></td> <td class="layui-td-gray-2">用车目的地<font>*</font></td>
<td colspan="2"><input type="text" name="address" value="{$detail.address}" autocomplete="off" placeholder="请输入用车目的地" lay-verify="required" lay-reqText="请输入用车目的地" class="layui-input"></td> <td><input type="text" name="address" value="{$detail.address}" autocomplete="off" placeholder="请输入用车目的地" lay-verify="required" lay-reqText="请输入用车目的地" class="layui-input"></td>
<td class="layui-td-gray">车辆选择<font>*</font></td> <td class="layui-td-gray">车辆选择<font>*</font></td>
<td colspan="2"> <td>
<select name="detail_type" lay-verify="required" lay-reqText="请选择"> <select name="detail_type" lay-verify="required" lay-reqText="请选择">
<option value="">--请选择--</option> <option value="">--请选择--</option>
{volist name=":oa_car_cate()" id="vo"} {volist name=":oa_car_cate()" id="vo"}
@ -87,7 +75,7 @@
</tr> </tr>
<tr> <tr>
<td class="layui-td-gray">用车事由<font>*</font></td> <td class="layui-td-gray">用车事由<font>*</font></td>
<td colspan="5"> <td colspan="3">
<textarea name="content" placeholder="请输入用车理由" class="layui-textarea" lay-verify="required" lay-reqText="请输入用车理由">{$detail.content}</textarea> <textarea name="content" placeholder="请输入用车理由" class="layui-textarea" lay-verify="required" lay-reqText="请输入用车理由">{$detail.content}</textarea>
</td> </td>
</tr> </tr>
@ -105,16 +93,11 @@
* 工时计算 * 工时计算
*/ */
function leaveTime() { function leaveTime() {
var data_1 = $('#start_time_a').val(); var start_date = $('#start_time').val();
var data_1_1 = $('#start_time_b').val(); var end_date = $('#end_time').val();
var data_2 = $('#end_time_a').val(); if(start_date=='' || end_date==''){
var data_2_1 = $('#end_time_b').val();
if(data_1=='' || data_1_1=='' || data_2=='' || data_2_1==''){
return 0; return 0;
} }
var start_date = data_1+' '+data_1_1;
var end_date = data_2+' '+data_2_1;
var start = new Date(start_date.replace(/-/g,'/')); var start = new Date(start_date.replace(/-/g,'/'));
var end = new Date(end_date.replace(/-/g,'/')); var end = new Date(end_date.replace(/-/g,'/'));
var diff=end.getTime() - start.getTime();//时间差的毫秒数 var diff=end.getTime() - start.getTime();//时间差的毫秒数
@ -133,47 +116,14 @@ const moduleInit = ['tool','employeepicker'];
if (typeof (flowStep) == "function") { if (typeof (flowStep) == "function") {
flowStep(); flowStep();
} }
//日期时间范围 //日期时间范围
lay('.select-time').each(function () { lay('.select-time').each(function () {
laydate.render({ laydate.render({
elem: this, elem: this,
trigger: 'click', trigger: 'click',
done:function(){ fullPanel:true,
var hours = leaveTime(); type:'datetime',
if(hours == 0){
$('#duration').html('-');
}
else{
$('#duration').html('共'+hours+'小时');
}
$('[name="duration"]').val(hours);
}
});
});
//选择具体时间
lay('.select-datetime').each(function () {
laydate.render({
elem: this,
trigger: 'click',
type: 'time',
format: 'HH:mm',
btns: ['clear', 'confirm'],
ready: function (date) {
var dom = $(".laydate-time-list").children("li");
for (var i = 0; i < dom.length; i++) {
if (i == 2 || i == 5) {
$(dom[i]).remove();
} else if(i==1||i==4) {
var li = $(dom[i]).children("ol").children("li")
for (var j = 0; j < li.length; j++) {
if ($(li[j]).text() != 00 && $(li[j]).text()!=30) {
$(li[j]).remove();
}
}
}
}
},
done:function(){ done:function(){
var hours = leaveTime(); var hours = leaveTime();
if(hours == 0){ if(hours == 0){

View File

@ -311,7 +311,8 @@ layui.define([], function (exports) {
layui.laydate.render({ layui.laydate.render({
elem: that, elem: that,
show: true, show: true,
type: type type: type,
fullPanel: true
}); });
return false; return false;
}); });