You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

221 lines
11 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script>
/**
* 自动添加出差明细
*/
function adddetail() {
//首先进行必填校验,不通过直接退出
//if(!WfForm.verifyFormRequired(false, true)){ return; }
let mainTableData = {
szjg: WfForm.getFieldValue(WfForm.convertFieldNameToId("szjg")),
jbry: WfForm.getFieldValue(WfForm.convertFieldNameToId("jbry")),
jblx: WfForm.getFieldValue(WfForm.convertFieldNameToId("jblx")),
mttsdjb: WfForm.getFieldValue(WfForm.convertFieldNameToId("mttsdjb")),
ksrq: WfForm.getFieldValue(WfForm.convertFieldNameToId("ksrq")),
jsrq: WfForm.getFieldValue(WfForm.convertFieldNameToId("jsrq")),
kssj: WfForm.getFieldValue(WfForm.convertFieldNameToId("kssj")),
jssj: WfForm.getFieldValue(WfForm.convertFieldNameToId("jssj"))
}
let param = {
mainTableData:JSON.stringify(mainTableData),
}
console.log(param);
$.ajax({
url:'/api/attendance/overtimeplan/generateOvertimePlanDetails',
data:param,
type:'GET',
dataType:'json',
async:false,
success:function(res){
if(res.api_status){
if(res.data.status){
WfForm.delDetailRow("detail_1", "all");
let resultData = res.data.data;
resultData.filter(item => {
let addObj = {};
addObj[WfForm.convertFieldNameToId("jbry", "detail_1")] = {value:item.jbry,specialobj:[{id:item.jbry,name:item.jbryName}]};
addObj[WfForm.convertFieldNameToId("jblx", "detail_1")] = {value:item.jblx,specialobj:[{id:item.jblx,name:item.jblxName}]};
addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")]={value:item.ksrq};
addObj[WfForm.convertFieldNameToId("kssj", "detail_1")]={value:item.kssj};
addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")]={value:item.jsrq};
addObj[WfForm.convertFieldNameToId("jssj", "detail_1")]={value:item.jssj};
addObj[WfForm.convertFieldNameToId("gsrq", "detail_1")]={value:item.gsrq};
addObj[WfForm.convertFieldNameToId("jbsc", "detail_1")]={value:Number(item.jbsc)};
WfForm.addDetailRow("detail_1", addObj);
})
}else{
WfForm.showMessage(res.data.errorInfo, 2, 5);
}
}
}
})
//添加完明细后,更新主表的总请假时长栏位信息
var totalsc = getTotalsc();
WfForm.changeFieldValue(WfForm.convertFieldNameToId("jbsc"), {value:totalsc});
}
// function adddetail() {
// //首先进行必填校验,不通过直接退出
// //if(!WfForm.verifyFormRequired(false, true)){ return; }
// //每天同时段出差1:是0
// let mttsdcc = WfForm.getFieldValue(WfForm.convertFieldNameToId("mttsdjb"));
// //开始日期
// var ksrq = new Date(WfForm.getFieldValue(WfForm.convertFieldNameToId("ksrq")));
// //结束日期
// var jsrq = new Date(WfForm.getFieldValue(WfForm.convertFieldNameToId("jsrq")));
// //开始时间
// var kssj = WfForm.getFieldValue(WfForm.convertFieldNameToId("kssj"));
// //结束时间
// let jssj = WfForm.getFieldValue(WfForm.convertFieldNameToId("jssj"));
// //加班时长
// var ccsc = WfForm.getFieldValue(WfForm.convertFieldNameToId("jbsc"));
// //加班类型
// var arr_jblx = mobx.toJS(wfform.getFieldValueObj(WfForm.convertFieldNameToId("jblx")).specialobj);
// //清空第一明细所有记录
// WfForm.delDetailRow("detail_1", "all");
// //判断出差是否跨天
// let v_overzero = jssj < kssj ? true : false;
// //出差人ID数组
// var arr_ids = (WfForm.getFieldValue(WfForm.convertFieldNameToId("jbry"))).split(',');
// //出差人名字数组
// var arr_names = (WfForm.getBrowserShowName(WfForm.convertFieldNameToId("jbry"))).split(',');
// for (let index = 0; index < arr_ids.length; index++) {
// //预置明细记录开始日期
// var v_tmpbdate = new Date(ksrq);
// //预置明细记录结束日期
// var v_tmpedate = new Date(v_tmpbdate);
// if (mttsdcc == '1') {
// //首次循环时,明细开始与结束日期均等于主表开始日期,而主表结束日期一定大于等于开始日期,所以至少添加一笔明细
// //当出差为跨天差时,每笔明细的结束日期会加一天
// while(v_tmpedate <= jsrq && v_tmpedate <= jsrq){
// //初始化明细记录
// var addObj = {};
// //添加出差人信息
// addObj[WfForm.convertFieldNameToId("jbry", "detail_1")] = {value:arr_ids[index],specialobj:[{id:arr_ids[index],name:arr_names[index]}]};
// //添加加班类型信息
// addObj[WfForm.convertFieldNameToId("jblx", "detail_1")] = {value:arr_jblx[0].id,specialobj:[{id:arr_jblx[0].id,name:arr_jblx[0].mc}]};
// //添加开始日期字段信息
// addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:v_tmpbdate};
// addObj[WfForm.convertFieldNameToId("gsrq", "detail_1")] = {value:v_tmpbdate};
// //按时间区间出差逻辑
// if (v_overzero){
// //跨天时,明细记录的结束日期等于开始日期加一天
// v_tmpedate = v_tmpedate.setDate(v_tmpbdate.getDate() + 1);
// v_tmpedate = new Date(v_tmpedate);
// }
// //添加结束日期字段信息
// addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:v_tmpedate};
// //添加开始时间字段信息
// addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:kssj};
// //添加结束时间字段信息
// addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:jssj};
// //todo 调用接口计算开始结束时间区间内的工作时长;
// //暂时先不调用接口,直接使用开始结束时间区间间隔小时数
// var v_hours = (new Date(v_tmpedate+" "+jssj).getTime() - new Date(v_tmpbdate+" "+kssj).getTime())/(1000 * 60 * 60);
// //超过8小时以8小时计
// v_hours = Number(v_hours) > 8 ? 8 : Number(v_hours)
// addObj[WfForm.convertFieldNameToId("jbsc", "detail_1")] = {value:v_hours};
// //追加明细记录
// WfForm.addDetailRow("detail_1", addObj);
// //明细开始日期加一天
// v_tmpbdate = v_tmpbdate.setDate(v_tmpbdate.getDate() + 1);
// v_tmpbdate = new Date(v_tmpbdate);
// //明细结束日期加一天
// v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1);
// v_tmpedate = new Date(v_tmpedate);
// }
// }else{
// //非每天同时段出差方式出差
// //设置第一笔明细结束日期为出差开始日期加一天
// v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1);
// v_tmpedate = new Date(v_tmpedate);
// while (v_tmpedate <= jsrq) {
// var addObj = {};
// addObj[WfForm.convertFieldNameToId("jbry", "detail_1")] = {value:arr_ids[index],specialobj:[{id:arr_ids[index],name:arr_names[index]}]};
// addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:v_tmpbdate};
// addObj[WfForm.convertFieldNameToId("gsrq", "detail_1")] = {value:v_tmpbdate};
// addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:v_tmpedate};
// addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:kssj};
// addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:"00:00"};
// WfForm.addDetailRow("detail_1", addObj);
// v_tmpbdate = new Date(v_tmpedate);
// kssj = '00:00';
// //明细结束日期加一天
// v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1);
// v_tmpedate = new Date(v_tmpedate);
// }
// var addObj = {};
// addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:v_tmpbdate};
// addObj[WfForm.convertFieldNameToId("gsrq", "detail_1")] = {value:v_tmpbdate};
// addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:jsrq};
// addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:kssj};
// addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:jssj};
// //追加明细记录
// WfForm.addDetailRow("detail_1", addObj);
// }
// };
// //添加完明细后,更新主表的总请假时长栏位信息
// var totalsc = getTotalsc();
// WfForm.changeFieldValue(WfForm.convertFieldNameToId("jbsc"), {value:totalsc});
// }
/**
* 计算明细总请假长度
*/
function getTotalsc(){
var totalsc = 0;
var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
for(var i=0; i<rowArr.length; i++){
var rowIndex = rowArr[i];
if(rowIndex !== ""){
totalsc = Number(totalsc) + Number(WfForm.getFieldValue(WfForm.convertFieldNameToId("jbsc", "detail_1")+"_"+rowIndex));
}
}
return totalsc;
}
//加班类型值变更时自动生成明细jblx
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jblx"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
//加班人员值变更时自动生成明细jblx
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jbry"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
//加班开始日期值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("ksrq"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
//加班结束日期值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jsrq"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
//加班开始时间值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("kssj"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
//加班结束时间值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jssj"),function(obj,id,value){
//自动添加出差明细数据
adddetail();
});
</script>