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.

342 lines
16 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>
/**
*
* @param pleavetype 出差方式0全天出差1按时间区间出差2半天3按时间长度出差
*/
function resetAttr(pleavetype) {
switch (pleavetype){
case '1'://按时间区间出差
WfForm.changeFieldValue(WfForm.convertFieldNameToId("scdw"),{ value: '1' });//出差时长单位为小时
//出差开始时间可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 3);
//出差结束时间可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("jssj"), 3);
//出差时间长度不可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc"), 1);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("mttsdcc"), 2);
WfForm.changeFieldValue(WfForm.convertFieldNameToId("mttsdcc"),{ value: '0' });
break;
case '3'://按时间区间出差
WfForm.changeFieldValue(WfForm.convertFieldNameToId("scdw"),{ value: '1' });//出差时长单位为小时
//隐藏出差开始时间所在行(结束时间在同一行,不需要额外设置)
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 5);
//出差时间长度可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc"), 3);
//每天出差时长默认为1小时
WfForm.changeFieldValue(WfForm.convertFieldNameToId("ccsc"),{ value: '1' });
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("mttsdcc"), 1);
WfForm.changeFieldValue(WfForm.convertFieldNameToId("mttsdcc"),{ value: '1' });
break;
default:
WfForm.changeFieldValue(WfForm.convertFieldNameToId("scdw"),{ value: '0' });//出差时长单位为小时
//隐藏出差开始时间所在行(结束时间在同一行,不需要额外设置)
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssj"), 5);
//出差时间长度不可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc"), 1);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("mttsdcc"), 1);
WfForm.changeFieldValue(WfForm.convertFieldNameToId("mttsdcc"),{ value: '1' });
break;
}
}
jQuery().ready(function(){
WfForm.registerCheckEvent(WfForm.OPER_ADDROW+"1", function(callback){
callback(); //允许继续添加行调用callback不调用代表阻断添加
});
});
WfForm.registerAction(WfForm.ACTION_ADDROW+"1", function(index){
//adddetail()
});
/**
* 自动添加出差明细
*/
function adddetail() {
//首先进行必填校验,不通过直接退出
// if(!WfForm.verifyFormRequired(false, true)){ return; }
//获取出差时段类型0全天1指定时间区间2半天3指定时长长度
let ccsd = WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsd"));
//每天同时段出差1:是0
let mttsdcc = WfForm.getFieldValue(WfForm.convertFieldNameToId("mttsdcc"));
//开始日期
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("ccsc"));
//出差类型
var arr_cclx= mobx.toJS(wfform.getFieldValueObj(WfForm.convertFieldNameToId("cclx")).specialobj);
var cclx = arr_cclx[0].id;
var ccr = WfForm.getFieldValue(WfForm.convertFieldNameToId("ccr"));
//清空明细表1所有记录
WfForm.delDetailRow("detail_1", "all");
let mainTableData = {
ccr: WfForm.getFieldValue(WfForm.convertFieldNameToId("ccr")),
ccsc: WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsc")),
ccsd: WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsd")),
cclx: WfForm.getFieldValue(WfForm.convertFieldNameToId("cclx")),
mttsdcc: WfForm.getFieldValue(WfForm.convertFieldNameToId("mttsdcc")),
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/businesstripsapply/generateBusinessTripsList',
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("ccr", "detail_1")] = {value:item.ccr,specialobj:[{id:item.ccr,name:item.ccrName}]};
addObj[WfForm.convertFieldNameToId("cclx", "detail_1")] = {value:item.cclx,specialobj:[{id:item.cclx,name:item.cclxName}]};
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("ccsc", "detail_1")]={value:item.ccsc};
addObj[WfForm.convertFieldNameToId("qtcc", "detail_1")]={value:item.qtcc};
addObj[WfForm.convertFieldNameToId("btcc", "detail_1")]={value:item.btcc};
WfForm.addDetailRow("detail_1", addObj);
})
}else{
WfForm.showMessage(res.data.errorInfo, 2, 5);
}
}
}
})
//添加完明细后,更新主表的总出差时长栏位信息
//var totalsc = getTotalsc();
var totalsc = getMainCcsc();
WfForm.changeFieldValue(WfForm.convertFieldNameToId("ccsc"), {value:totalsc});
//控制明细显示属性
var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
for(var i=0; i<rowArr.length; i++){
var rowIndex = rowArr[i];
if(rowIndex !== ""){
switch(ccsd){
case '1'://按时间区间出差
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc","detail_1")+"_"+rowIndex, 1);//出差时长栏位设置只读
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qtcc","detail_1")+"_"+rowIndex, 1);//全天差栏位设置只读
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("btcc","detail_1")+"_"+rowIndex, 1);//半天差栏位设置只读
break;
case '3'://按时间长度出差
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc","detail_1")+"_"+rowIndex, 3);//出差时长栏位设置必填
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qtcc","detail_1")+"_"+rowIndex, 1);//全天差栏位设置只读
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("btcc","detail_1")+"_"+rowIndex, 1);//半天差栏位设置只读
break;
default://其他全天或者半天出差
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc","detail_1")+"_"+rowIndex, 1);//出差时长栏位设置只读
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("qtcc","detail_1")+"_"+rowIndex, 2);//全天差栏位设置可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("btcc","detail_1")+"_"+rowIndex, 2);//半天差栏位设置可编辑
break;
}
}
}
}
/**
* 计算明细总出差长度
*/
function getTotalsc(){
var ccsd = WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsd"));
var totalsc = 0;
var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
for(var i=0; i<rowArr.length; i++){
var rowIndex = rowArr[i];
if(rowIndex !== ""){
if (ccsd == '3' || ccsd == '1')//累计小时时长
totalsc = Number(totalsc) + Number(WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsc", "detail_1")+"_"+rowIndex));
else{
//累计天数时长
totalsc = Number(totalsc) +
Number(WfForm.getFieldValue(WfForm.convertFieldNameToId("qtcc", "detail_1")+"_"+rowIndex)) +
Number(WfForm.getFieldValue(WfForm.convertFieldNameToId("btcc", "detail_1")+"_"+rowIndex)) * 0.5;
}
}
}
return totalsc;
}
/**
* 获取主表出差长度,取第一条明细中的出差长度作为流程主表出差长度
*/
function getMainCcsc(){
var ccsd = WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsd"));
var totalsc = 0;
var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
var rowIndex = rowArr[0];
if(rowIndex !== ""){
if (ccsd == '3' || ccsd == '1')//累计小时时长
totalsc = Number(WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsc", "detail_1")+"_"+rowIndex));
else{
//累计天数时长
totalsc = Number(WfForm.getFieldValue(WfForm.convertFieldNameToId("qtcc", "detail_1")+"_"+rowIndex)) +
Number(WfForm.getFieldValue(WfForm.convertFieldNameToId("btcc", "detail_1")+"_"+rowIndex)) * 0.5;
}
}
return totalsc;
}
//依据当前出差方式,对页面上的控件显示属性进行调整
// resetAttr(WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsd")));
//是否自动产生明细记录标记
//考虑到影响明细记录的栏位如开始结束日期时间等发生变更时,需要重新生成明细,而出差方式变更时又需要对相应栏位的值做修改,所以添加这个开关,防止重复生成明细记录
var autodetail = true;
//差期类别值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("cclx"),function(obj,id,value){
//关掉自动生成明细记录功能
autodetail = false;
//自动添加出差明细数据
adddetail();
//打开自动生成明细记录功能
autodetail = true;
});
//出差人员值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("ccr"),function(obj,id,value){
//关掉自动生成明细记录功能
autodetail = false;
//自动添加出差明细数据
adddetail();
//打开自动生成明细记录功能
autodetail = true;
});
//出差方式变更时,同样进行页面显示属性的调整
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("ccsd"),function(obj,id,value){
//关掉自动生成明细记录功能
autodetail = false;
//出差方式变更后,修改页面上的控件显示属性
resetAttr(value);
//自动添加出差明细数据
adddetail();
//打开自动生成明细记录功能
autodetail = true;
});
//是否每日重复时间段值变更时,自动生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("mttsdcc"),function(obj,id,value){
//关掉自动生成明细记录功能
autodetail = false;
//自动添加出差明细数据
adddetail();
//打开自动生成明细记录功能
autodetail = true;
});
//开始日期变更后,自动重新生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("ksrq"),function(obj,id,value){
if (autodetail){
autodetail = false;
adddetail();
autodetail = true;
}
});
//结束日期变更后,自动重新生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jsrq"),function(obj,id,value){
if (autodetail){
autodetail = false;
adddetail();
autodetail = true;
}
});
//开始时间变更后,自动重新生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("kssj"),function(obj,id,value){
if (autodetail){
autodetail = false;
adddetail();
autodetail = true;
}
});
//结束时间变更后,自动重新生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("jssj"),function(obj,id,value){
if (autodetail){
autodetail = false;
adddetail();
autodetail = true;
}
});
//出差时长发生变更后,自动重新生成明细
WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("ccsc"),function(obj,id,value){
if (autodetail){
autodetail = false;
adddetail();
autodetail = true;
}
});
//绑定全天差栏位值变更事件
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("qtcc", "detail_1"),function(id,rowIndex,value){
if (autodetail){
autodetail = false;
if (value === '0')
WfForm.changeFieldValue(WfForm.convertFieldNameToId("btcc", "detail_1")+"_"+rowIndex, {value:"1"});
else
WfForm.changeFieldValue(WfForm.convertFieldNameToId("btcc", "detail_1")+"_"+rowIndex, {value:"0"});
//var totalsc = getTotalsc();
var totalsc = getMainCcsc();
WfForm.changeFieldValue(WfForm.convertFieldNameToId("ccsc"), {value:totalsc});
autodetail = true;
}
});
});
//绑定半天差值变更事件
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("btcc", "detail_1"),function(id,rowIndex,value){
if (autodetail){
autodetail = false;
if (value === '0')
WfForm.changeFieldValue(WfForm.convertFieldNameToId("qtcc", "detail_1")+"_"+rowIndex, {value:"1"});
else
WfForm.changeFieldValue(WfForm.convertFieldNameToId("qtcc", "detail_1")+"_"+rowIndex, {value:"0"});
//var totalsc = getTotalsc();
var totalsc = getMainCcsc();
WfForm.changeFieldValue(WfForm.convertFieldNameToId("ccsc"), {value:totalsc});
autodetail = true;
}
});
});
//绑定出差时长栏位值变更事件
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("qjsc", "detail_1"),function(id,rowIndex,value){
if (autodetail){
autodetail = false;
//var totalsc = getTotalsc();
var totalsc = getMainCcsc();
WfForm.changeFieldValue(WfForm.convertFieldNameToId("qjsc"), {value:totalsc});
autodetail = true;
}
});
});
WfForm.registerCheckEvent(WfForm.OPER_SAVE+","+WfForm.OPER_SUBMIT,function(callback){
var d_count = WfForm.getDetailRowCount("detail_1");
if (Number(d_count) === 0){
alert("没有出差明细,不能继续!")
}else{
callback();
}
});
</script>