From d2e89be15aeb5e745f68e7174f2fde8c72d9d0cc Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 8 Aug 2024 10:43:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E5=8B=A4-=E5=87=BA=E5=B7=AE=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=EF=BC=8C=E7=BC=96=E8=BE=91=E9=A1=B5=E9=9D=A2=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89jsp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hrmattendance/HrmjucailEvection_e9.jsp | 200 ++++++------------ 1 file changed, 70 insertions(+), 130 deletions(-) diff --git a/workflow/request/hrmattendance/HrmjucailEvection_e9.jsp b/workflow/request/hrmattendance/HrmjucailEvection_e9.jsp index 198c658..46495b1 100644 --- a/workflow/request/hrmattendance/HrmjucailEvection_e9.jsp +++ b/workflow/request/hrmattendance/HrmjucailEvection_e9.jsp @@ -71,145 +71,64 @@ //出差类型 var arr_cclx= mobx.toJS(wfform.getFieldValueObj(WfForm.convertFieldNameToId("cclx")).specialobj); var cclx = arr_cclx[0].id; - debugger + var ccr = WfForm.getFieldValue(WfForm.convertFieldNameToId("ccr")); - debugger; + + + //清空明细表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 = { - itemId:cclx, - userId:ccr.split(',')[0], - startDate:ksrq, - endDate:jsrq + mainTableData:JSON.stringify(mainTableData), } - let dateList=undefined; + console.log(param); $.ajax({ - url:"/api/attendance/askforleave/getRestDayInterval", - type:"GET", + url:'/api/attendance/businesstripsapply/generateBusinessTripsList', data:param, - dataType:"json", + type:'GET', + dataType:'json', async:false, success:function(res){ - console.log(res) - if (res.api_status){ - dateList = res.data.data; - } - } - }) - //清空第一明细所有记录 - WfForm.delDetailRow("detail_1", "all"); - //判断出差是否跨天 - let v_overzero = jssj < kssj ? true : false; - //出差人ID数组 - var arr_ids = (WfForm.getFieldValue(WfForm.convertFieldNameToId("ccr"))).split(','); - //出差人名字数组 - var arr_names = (WfForm.getBrowserShowName(WfForm.convertFieldNameToId("ccr"))).split(','); - if (mttsdcc == '1') { - for (let index = 0; index < arr_ids.length; index++) { - //预置明细记录开始日期 - var v_tmpbdate = new Date(ksrq); - //预置明细记录结束日期 - var v_tmpedate = new Date(v_tmpbdate); + 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}; - //首次循环时,明细开始与结束日期均等于主表开始日期,而主表结束日期一定大于等于开始日期,所以至少添加一笔明细 - //当出差为跨天差时,每笔明细的结束日期会加一天 - while(v_tmpedate <= jsrq && v_tmpedate <= jsrq){ - let beginDate = v_tmpbdate.toString(); - let rqlx = ""; - if (dateList != undefined){ - dateList.filter(item => { - if (item.rq == beginDate){ - rqlx = item.rqlx; - } - }); - } - if (rqlx == "1" || rqlx=="2" || rqlx=="3"){ - //明细开始日期加一天 - 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); - continue; - } - //初始化明细记录 - var addObj = {}; - //添加出差人信息 - addObj[WfForm.convertFieldNameToId("ccr", "detail_1")] = {value:arr_ids[index],specialobj:[{id:arr_ids[index],name:arr_names[index]}]}; - //添加出差类型 - addObj[WfForm.convertFieldNameToId("cclx", "detail_1")] = {value:arr_cclx[0].id,specialobj:[{id:arr_cclx[0].id,name:arr_cclx[0].mc}]}; - //添加开始日期字段信息 - addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:v_tmpbdate}; - if (ccsd === '1'){ - //按时间区间出差逻辑 - 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("ccsc", "detail_1")] = {value:v_hours}; + WfForm.addDetailRow("detail_1", addObj); + }) }else{ - //按时间长度出差或者全天、半天出差逻辑, - //此三种情况系统只需要知道员工当天班次上是希望出差的小数数或者是全天还是半天出差即可,与结束日期,开始及结束时间没有关系,所以相应的值均设置为空 - //添加结束日期字段信息 - addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:''}; - //添加开始时间字段信息 - addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:''}; - //添加结束时间字段信息 - addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:''}; - if (ccsd == '0'){ - //全天出差时,全天的标记打开 - addObj[WfForm.convertFieldNameToId("qtcc", "detail_1")] = {value:'1'}; - }else if (ccsd == '2') { - //半天出差时,半天的标记打开 - addObj[WfForm.convertFieldNameToId("btcc", "detail_1")] = {value:'1'}; - }else if (ccsd == '3'){ - //按小数数出差时,将主表上的总出差时长当成每天出差时长进行赋值 - addObj[WfForm.convertFieldNameToId("ccsc", "detail_1")] = {value:ccsc}; - } + WfForm.showMessage(res.data.errorInfo, 2, 5); } - //追加明细记录 - 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{ - var addObj = {}; - - let ccr =WfForm.getFieldValue(WfForm.convertFieldNameToId("ccr")); - let ccrshowName =WfForm.getBrowserShowName(WfForm.convertFieldNameToId("ccr")); - let cclx = WfForm.getFieldValue(WfForm.convertFieldNameToId("cclx")); - let cclxshowName = WfForm.getBrowserShowName(WfForm.convertFieldNameToId("cclx")); - addObj[WfForm.convertFieldNameToId("ccr", "detail_1")] = {value: ccr,specialobj:[{id:ccr,name:ccrshowName}]}; - addObj[WfForm.convertFieldNameToId("cclx", "detail_1")] = {value: cclx,specialobj:[{id:cclx,name:cclxshowName}]}; - addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")] = {value:ksrq}; - addObj[WfForm.convertFieldNameToId("kssj", "detail_1")] = {value:kssj}; - addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")] = {value:jsrq}; - addObj[WfForm.convertFieldNameToId("jssj", "detail_1")] = {value:jssj}; - var v_hours = (new Date(jsrq+" "+jssj).getTime() - new Date(ksrq+" "+kssj).getTime())/(1000 * 60 * 60); - addObj[WfForm.convertFieldNameToId("ccsc", "detail_1")] = {value:v_hours}; - WfForm.addDetailRow("detail_1", addObj); - - } + } + }) //添加完明细后,更新主表的总出差时长栏位信息 - var totalsc = getTotalsc(); + //var totalsc = getTotalsc(); + var totalsc = getMainCcsc(); WfForm.changeFieldValue(WfForm.convertFieldNameToId("ccsc"), {value:totalsc}); //控制明细显示属性 var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(","); @@ -258,6 +177,25 @@ } 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"))); //是否自动产生明细记录标记 @@ -350,7 +288,8 @@ 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 = getTotalsc(); + var totalsc = getMainCcsc(); WfForm.changeFieldValue(WfForm.convertFieldNameToId("ccsc"), {value:totalsc}); autodetail = true; } @@ -365,7 +304,8 @@ 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 = getTotalsc(); + var totalsc = getMainCcsc(); WfForm.changeFieldValue(WfForm.convertFieldNameToId("ccsc"), {value:totalsc}); autodetail = true; } @@ -376,7 +316,8 @@ WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("qjsc", "detail_1"),function(id,rowIndex,value){ if (autodetail){ autodetail = false; - var totalsc = getTotalsc(); + //var totalsc = getTotalsc(); + var totalsc = getMainCcsc(); WfForm.changeFieldValue(WfForm.convertFieldNameToId("qjsc"), {value:totalsc}); autodetail = true; } @@ -397,4 +338,3 @@ -