LBCP.ZHXZ.Leave.jisuantime = function(arg, domain){
var canshu;
var AM_UpHour;
var AM_DownHour;
var PM_UpHour;
var PM_DownHour;
var hour = 60 * 60 * 1000;
var am1;
var am2;
var pm1;
var pm2;
if(domain.workflow.getModuleParam()){
canshu = JSON.parse(domain.workflow.getModuleParam());
if(canshu.sbsj && canshu.sbsj.am1){
am1 = canshu.sbsj.am1;
AM_UpHour = am1 * hour;
}
if(canshu.sbsj && canshu.sbsj.am2){
am2 = canshu.sbsj.am2;
AM_DownHour = am2 * hour;
}
if(canshu.sbsj && canshu.sbsj.pm1){
pm1 = canshu.sbsj.pm1;
PM_UpHour = pm1 * hour;
}
if(canshu.sbsj && canshu.sbsj.pm2){
pm2 = canshu.sbsj.pm2;
PM_DownHour = pm2 * hour;
}
} else{
am1 = 9;
am2 = 12;
pm1 = 14;
pm2 = 18;
AM_UpHour = 9 * hour;
AM_DownHour = 12 * hour;
PM_UpHour = 14 * hour;
PM_DownHour = 18 * hour;
}
var days = 0.0;
var bTimeStr = arg.begintime1 + arg.begintime2;
var eTimeStr = arg.endtime1 + arg.endtime2;
var bDate = new Date(arg.time1);
var eDate = new Date(arg.time2);
var bTime = bTimeStr[0] * 10 * hour + bTimeStr[1] * hour
+ bTimeStr[2] * 60 * 10 * 1000 + bTimeStr[3] * 60 * 1000;
var eTime = eTimeStr[0] * 10 * hour + eTimeStr[1] * hour
+ eTimeStr[2] * 60 * 10 * 1000 + eTimeStr[3] * 60 * 1000;
var half = 0.5;
var allDay = 1.0;
var workh = parseFloat(pm2) - parseFloat(pm1) + parseFloat(am2) - parseFloat(am1);
// 相隔天数
var n = (eDate.getTime() - bDate.getTime()) / (hour * 24);
if (n > 1) {
days = n - 1;
}
// 如果是同一天
if (arg.time1 == arg.time2) {
if (bTime <= eTime) {
if (bTime <= AM_UpHour) {
if (eTime <= AM_DownHour && eTime > AM_UpHour) {
days += (eTime - AM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > AM_DownHour && eTime <= PM_UpHour) {
days += (AM_DownHour - AM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_UpHour && eTime <= PM_DownHour) {
days += (AM_DownHour - AM_UpHour + eTime - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_DownHour) {
days += 1.0;
}
} else if (bTime > AM_UpHour && bTime <= AM_DownHour) {// 大于上午上班时间,小于上午下班时间
if (eTime <= AM_DownHour) {
days += (eTime - bTime) / (60 * 60 * 1000 * workh);
}
if (eTime > AM_DownHour && eTime <= PM_UpHour) {
days += (AM_DownHour - bTime)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_UpHour && eTime <= PM_DownHour) {
days += (AM_DownHour - bTime + eTime - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_DownHour) {
days += (AM_DownHour - bTime + PM_DownHour - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
} else if (bTime > AM_DownHour && bTime <= PM_UpHour) {// 大于上午下班时间,小于下午上班班时间
if (eTime <= PM_DownHour) {
days += (eTime - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_DownHour) {
days += (AM_DownHour - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
} else if (bTime > PM_UpHour && bTime <= PM_DownHour) {// 大于上午下班时间,小于下午上班班时间
if (eTime <= PM_DownHour) {
days += (eTime - bTime) / (60 * 60 * 1000 * workh);
}
if (eTime > PM_DownHour) {
days += (AM_DownHour - bTime)
/ (60 * 60 * 1000 * workh);
}
}
}
}
// 不是同一天
else {
if (bTime <= AM_UpHour) {// 1
if (eTime <= AM_UpHour) {
days += 1;
}
if (eTime > AM_UpHour && eTime <= AM_DownHour) {
days += (1 + (eTime - AM_UpHour)
/ (60 * 60 * 1000 * workh));
}
if (eTime > AM_DownHour && eTime <= PM_UpHour) {
days += (1 + (AM_DownHour - AM_UpHour)
/ (60 * 60 * 1000 * workh));
}
if (eTime > PM_UpHour && eTime <= PM_DownHour) {
days += (1 + (AM_DownHour - AM_UpHour + eTime - PM_UpHour)
/ (60 * 60 * 1000 * workh));
}
if (eTime > PM_DownHour) {
days += 2;
}
} else if (bTime > AM_UpHour && bTime <= AM_DownHour) {
if (eTime <= AM_UpHour) {
days += (AM_DownHour - bTime + PM_DownHour - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > AM_UpHour && eTime <= AM_DownHour) {
days += (AM_DownHour - bTime + PM_DownHour - PM_UpHour
+ eTime - AM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > AM_DownHour && eTime <= PM_UpHour) {
days += (AM_DownHour - bTime + PM_DownHour - PM_UpHour
+ AM_DownHour - AM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_UpHour && eTime <= PM_DownHour) {
days += (AM_DownHour - bTime + PM_DownHour - PM_UpHour
+ eTime - PM_UpHour + AM_DownHour - AM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_DownHour) {
days += (1 + (AM_DownHour - bTime + PM_DownHour - PM_UpHour)
/ (60 * 60 * 1000 * workh));
}
} else if (bTime > AM_DownHour && bTime <= PM_UpHour) {
if (eTime <= AM_UpHour) {
days += (PM_DownHour - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > AM_UpHour && eTime <= AM_DownHour) {
days += (eTime - AM_UpHour + PM_DownHour - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > AM_DownHour && eTime <= PM_UpHour) {
days += (AM_DownHour - AM_UpHour + PM_DownHour - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_UpHour && eTime <= PM_DownHour) {
days += (PM_DownHour - PM_UpHour + AM_DownHour
- AM_UpHour + eTime - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_DownHour) {
days += (1 + (PM_DownHour - PM_UpHour)
/ (60 * 60 * 1000 * workh));
}
} else if (bTime > PM_UpHour && bTime <= PM_DownHour) {
if (eTime <= AM_UpHour) {
days += (PM_DownHour - bTime)
/ (60 * 60 * 1000 * workh);
}
if (eTime > AM_UpHour && eTime <= AM_DownHour) {
days += (eTime - AM_UpHour + PM_DownHour - bTime)
/ (60 * 60 * 1000 * workh);
}
if (eTime > AM_DownHour && eTime <= PM_UpHour) {
days += (AM_DownHour - AM_UpHour + PM_DownHour - bTime)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_UpHour && eTime <= PM_DownHour) {
days += (PM_DownHour - bTime + AM_DownHour - AM_UpHour
+ eTime - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_DownHour) {
days += (1 + (PM_DownHour - bTime)
/ (60 * 60 * 1000 * workh));
}
} else if (bTime > PM_DownHour) {// PM_DownHour - bTime
if (eTime > AM_UpHour && eTime <= AM_DownHour) {
days += (eTime - AM_UpHour) / (60 * 60 * 1000 * workh);
}
if (eTime > AM_DownHour && eTime <= PM_UpHour) {
days += (AM_DownHour - AM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_UpHour && eTime <= PM_DownHour) {
days += (AM_DownHour - AM_UpHour + eTime - PM_UpHour)
/ (60 * 60 * 1000 * workh);
}
if (eTime > PM_DownHour) {
days += 1;
}
}
}
sttime1 = new Date(arg.time1.replace(/-/g, '/'));
sttime2 = new Date(arg.time2.replace(/-/g, '/'));
var aaa = (sttime2 - sttime1)/(60 * 60 * 1000 * 24);
var ab = arg.time1.split("-");
var ae = arg.time2.split("-");
var db = new Date();
db.setUTCFullYear(ab[0], ab[1] - 1, ab[2]);
var de = new Date();
de.setUTCFullYear(ae[0], ae[1] - 1, ae[2]);
var unixDb = db.getTime();
var unixDe = de.getTime();
var i = 0;
var jianum = 0.0;
for (var k = unixDb; k <= unixDe;) {
var date = new Date(parseInt(k));
var year = date.getFullYear();
var month =(date.getMonth() + 1).toString();
var day = (date.getDate()).toString();
if (month.length == 1) {
month = "0" + month;
}
if (day.length == 1) {
day = "0" + day;
}
var dateTime = year + "-" + month + "-" + day;
var result = LEAP.request('loap_isworkday', {datestr:dateTime});
if(result && result.result && result.result[0] == 1){
if(i == 0){
if(bTime <= AM_UpHour){
jianum += 1;
} else if(bTime > AM_UpHour && bTime <= AM_DownHour){
jianum += (PM_DownHour - PM_UpHour + AM_DownHour - bTime)/(60 * 60 * 1000 * workh);
} else if(bTime > AM_DownHour && bTime <= PM_UpHour){
jianum += (PM_DownHour - PM_UpHour)/(60 * 60 * 1000 * workh);
} else if(bTime > PM_UpHour && bTime <= PM_DownHour){
jianum += (PM_DownHour - bTime)/(60 * 60 * 1000 * workh);
} else if(bTime > PM_DownHour){
jianum += 0;
}
} else if(i == aaa){
if(eTime <= AM_UpHour){
jianum += 0;
} else if(eTime > AM_UpHour && eTime <= AM_DownHour){
jianum += (eTime - AM_UpHour)/(60 * 60 * 1000 * workh);
} else if(eTime > AM_DownHour && eTime <= PM_UpHour){
jianum += (AM_DownHour - AM_UpHour)/(60 * 60 * 1000 * workh);
} else if(eTime > PM_UpHour && eTime <= PM_DownHour){
jianum += (AM_DownHour - AM_UpHour + eTime - PM_UpHour)/(60 * 60 * 1000 * workh);
} else if(eTime > PM_DownHour){
jianum += 1;
}
} else{
jianum += 1;
}
}
if(!result || !result.result){
var dt = new Date(dateTime.replace(/-/g, '/'));
if (dt.getDay() == 0 || dt.getDay() == 6){
//0--sunday, 6--saturday
jianum += 1;
}
}
i++;
k = k + 24 * 60 * 60 * 1000;
}
days = days - jianum;
return days;
}
计算请假天数的代码,去掉了假期和下班时间,中间的那个去掉假期的方法可以自己设置,参数arg可以取出请假时间的对象,domain表示this,实际操作可以自己微调,看一下思路就可以。
最新推荐文章于 2021-12-30 14:11:59 发布