lihai-oa/app/oa/view/approve/add_waichu.html

211 lines
6.8 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">
<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 colspan="3"><input type="text" name="address" value="" autocomplete="off" placeholder="请输入外出地点" lay-verify="required" lay-reqText="请输入外出地点" class="layui-input"></td>
</tr>
<tr>
<td class="layui-td-gray">开始时间<font>*</font></td>
<td>
<input id="start_time" name="start_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
<td class="layui-td-gray">结束时间<font>*</font></td>
<td>
<input id="end_time" name="end_time" autocomplete="off" class="layui-input select-time" value="" readonly lay-verify="required" placeholder="请选择时间" lay-reqText="请选择时间">
</td>
</tr>
<tr>
<td class="layui-td-gray">外出时长</td>
<td><input name="duration" value="" class="layui-input" lay-verify="required|number" placeholder="请完善请外出时长" lay-reqText="请完善请外出时长"></td>
<td class="layui-td-gray">外出天数</td>
<td id="days">-</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>
<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 colspan="3" style="line-height:inherit">
<div class="layui-row" id="fileList">
<input type="hidden" data-type="file" name="file_ids" value="">
</div>
</td>
</tr>
</table>
{else/}
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">外出地点<font>*</font></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>
<td class="layui-td-gray">开始时间<font>*</font></td>
<td>
<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 class="layui-td-gray">结束时间<font>*</font></td>
<td>
<input type="hidden" name="duration" value="">
<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>
</tr>
<tr>
<td class="layui-td-gray">外出时长</td>
<td><input name="duration" value="{$detail.duration}" class="layui-input" lay-verify="required|number" placeholder="请完善请外出时长" lay-reqText="请完善外出时长"></td>
<td class="layui-td-gray">外出天数</td>
<td id="days">共{$detail.days}天,{$detail.hours}小时</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="请输入外出事由">{$detail.content}</textarea>
</td>
</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 colspan="3" style="line-height:inherit">
<div class="layui-row" id="fileList">
<input type="hidden" name="file_ids" data-type="file" value="{$detail.file_ids}">
{notempty name="$detail.file_ids"}
{volist name="$detail.fileArray" id="vo"}
<div class="layui-col-md4" id="uploadImg{$vo.id}">{:file_card($vo)}</div>
{/volist}
{/notempty}
</div>
</td>
</tr>
</table>
{/eq}
{include file="/approve/add_flow" /}
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
/**
* 工时计算
*/
const WORKDAY_HOURS = 8;
const START_HOUR = 9;
const END_HOUR = 18;
const START_BREAK_HOUR = 12;
const END_BREAK_HOUR = 13;
const WEEKEND_DAYS = [0, 6];
function isWeekend(day) {
return WEEKEND_DAYS.includes(day);
}
function calculateWorkHours() {
var startDate = new Date($('#start_time').val());
var endDate = new Date($('#end_time').val());
const start = startDate.getTime();
const end = endDate.getTime();
const startDay = startDate.getDay();
const endDay = endDate.getDay();
let totalHours = 0;
for (let time = start; time < end; time += 3600000 /* 1 hour in milliseconds */) {
const date = new Date(time);
const dayOfWeek = date.getDay();
const hour = date.getHours();
if (!isWeekend(dayOfWeek)) {
if (hour >= START_HOUR && hour < END_HOUR) {
if (hour < START_BREAK_HOUR || hour >= END_BREAK_HOUR) {
console.log(totalHours);
totalHours += 1;
}
}
}
}
return totalHours;
}
function isNumber(str, type) {
var t = type || 0;
var patn = /^[0-9]+$/;
if (t > 0) {
patn = /^\d+(\.\d+)?$/;
}
if (!patn.test(str)){
return false;
}
else{
return true;
}
}
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();
}
//日期时间范围
lay('.select-time').each(function () {
laydate.render({
elem: this,
trigger: 'click',
fullPanel:true,
type:'datetime',
done:function(){
var hours = calculateWorkHours();
if(hours == 0){
$('[name="duration"]').val('');
$('#days').html('-');
}
else{
$('[name="duration"]').val(hours);
var days = 0;
if(hours>=8){
days = parseInt(hours/8);
}
$('#days').html('共'+days+'天,'+(hours%8).toFixed(1)+'小时');
}
}
});
});
$('[name="duration"]').on('input',function(){
let hours = $(this).val();
if(isNumber(hours,1) && hours>0){
var days = 0;
if(hours>=8){
days = parseInt(hours/8);
}
$('#days').html('共'+days+'天,'+((hours%8).toFixed(1))+'小时');
}
else{
$('#days').html('-');
}
})
}
</script>
{/block}
<!-- /脚本 -->