调用泛微内部的监听函数,绑定字段。
WfForm.bindDetailFieldChangeEvent("field10775,field10762,field10763", function(id, rowIndex, value) {
var rowArr_dt2 = WfForm.getDetailAllRowIndexStr("detail_2").split(",");
for (var i = 0; i < rowArr_dt2.length; i++) {
var rowIndex = rowArr_dt2[i];
if (rowIndex !== "") {
betweenTimeRange(rowIndex);
}
}
});
function clearCountBreakfastLunchDinner(breakfastCountFieldMark, lunchCountFieldMark, dinnerCountFieldMark) {
WfForm.changeFieldValue(breakfastCountFieldMark, {
value: 0
});
WfForm.changeFieldValue(lunchCountFieldMark, {
value: 0
});
WfForm.changeFieldValue(dinnerCountFieldMark, {
value: 0
});
}
/**根据时间范围获取早中晚餐报销次数
* @param {Object} rowIndex
*/
function betweenTimeRange(rowIndex) {
let fieldMark = "field10775_" + rowIndex; //遍历明细行字段
let fieldvaluechts = WfForm.getFieldValue(fieldMark); //出差天数
let breakfastCountFieldMark = "field10863_" + rowIndex;
let lunchCountFieldMark = "field10864_" + rowIndex;
let dinnerCountFieldMark = "field10865_" + rowIndex;
let begiandate = WfForm.getFieldValue("field10760_" + rowIndex)
let enddate = WfForm.getFieldValue("field10761_" + rowIndex)
let cfsj = WfForm.getFieldValue("field10762_" + rowIndex) + ':00'; //出发时间
let ddsj = WfForm.getFieldValue("field10763_" + rowIndex) + ':00'; //到达时间
let begaintime = new Date(begiandate + " " + cfsj);
let endtime = new Date(enddate + " " + ddsj);
let breakfasttime = new Date(begiandate + " " + '6:00:00');
let lunchtime = new Date(begiandate + " " + '13:00:00');
let dinnertime = new Date(begiandate + " " + '19:00:00');
let endbreakfasttime = new Date(endtime + " " + '6:00:00');
let endlunchtime = new Date(endtime + " " + '13:00:00');
let enddinnertime = new Date(endtime + " " + '19:00:00');
let breakfastCount = 0;
let lunchCount = 0;
let dinnerCount = 0;
if (fieldvaluechts < 1) {
alert("差旅费报销:出差日期迄必需大于等于出差日期起")
} else if (fieldvaluechts == 1) {
if (begaintime <= breakfasttime && endtime >= dinnertime) {
clearCountBreakfastLunchDinner(breakfastCountFieldMark, lunchCountFieldMark, dinnerCountFieldMark);
WfForm.changeFieldValue(breakfastCountFieldMark, {
value: 1
});
WfForm.changeFieldValue(lunchCountFieldMark, {
value: 1
});
WfForm.changeFieldValue(dinnerCountFieldMark, {
value: 1
});
} else if (begaintime <= breakfasttime && endtime < lunchtime) {
clearCountBreakfastLunchDinner(breakfastCountFieldMark, lunchCountFieldMark, dinnerCountFieldMark);
WfForm.changeFieldValue(breakfastCountFieldMark, {
value: 1
});
} else if (begaintime <= breakfasttime && endtime < dinnertime) {
clearCountBreakfastLunchDinner(breakfastCountFieldMark, lunchCountFieldMark, dinnerCountFieldMark);
WfForm.changeFieldValue(breakfastCountFieldMark, {
value: 1
});
WfForm.changeFieldValue(lunchCountFieldMark, {
value: 1
});
} else if (begaintime <= lunchtime && endtime >= dinnertime) {
clearCountBreakfastLunchDinner(breakfastCountFieldMark, lunchCountFieldMark, dinnerCountFieldMark);
WfForm.changeFieldValue(lunchCountFieldMark, {
value: 1
});
WfForm.changeFieldValue(dinnerCountFieldMark, {
value: 1
});
} else if (begaintime <= lunchtime && endtime < dinnertime) {
clearCountBreakfastLunchDinner(breakfastCountFieldMark, lunchCountFieldMark, dinnerCountFieldMark);
WfForm.changeFieldValue(lunchCountFieldMark, {
value: 1
});
} else if (begaintime <= dinnertime && endtime >= dinnertime) {
clearCountBreakfastLunchDinner(breakfastCountFieldMark, lunchCountFieldMark, dinnerCountFieldMark);
WfForm.changeFieldValue(dinnerCountFieldMark, {
value: 1
});
}
} else if (fieldvaluechts == 2) {
if (begaintime <= breakfasttime) {
breakfastCount++;
lunchCount++;
dinnerCount++;
} else if (begaintime <= lunchtime) {
lunchCount++;
dinnerCount++;
} else if (begaintime <= dinnertime) {
dinnerCount++;
}
if (endtime >= enddinnertime) {
breakfastCount++;
lunchCount++;
dinnerCount++;
} else if (endtime >= endlunchtime) {
breakfastCount++;
lunchCount++;
} else if (endtime >= endbreakfasttime) {
breakfastCount++;
}
clearCountBreakfastLunchDinner(breakfastCountFieldMark, lunchCountFieldMark, dinnerCountFieldMark);
WfForm.changeFieldValue(breakfastCountFieldMark, {
value: breakfastCount
});
WfForm.changeFieldValue(lunchCountFieldMark, {
value: lunchCount
});
WfForm.changeFieldValue(dinnerCountFieldMark, {
value: dinnerCount
});
// alert("差旅费报销:计划出差2天")
} else if (fieldvaluechts > 2) {
if (begaintime <= breakfasttime) {
breakfastCount++;
lunchCount++;
dinnerCount++;
} else if (begaintime <= lunchtime) {
lunchCount++;
dinnerCount++;
} else if (begaintime <= dinnertime) {
dinnerCount++;
}
if (endtime >= enddinnertime) {
breakfastCount++;
lunchCount++;
dinnerCount++;
} else if (endtime >= endlunchtime) {
breakfastCount++;
lunchCount++;
} else if (endtime >= endbreakfasttime) {
breakfastCount++;
}
clearCountBreakfastLunchDinner(breakfastCountFieldMark, lunchCountFieldMark, dinnerCountFieldMark);
breakfastCount = breakfastCount + parseInt(fieldvaluechts) - 2;
lunchCount = lunchCount + parseInt(fieldvaluechts) - 2;
dinnerCount = dinnerCount + parseInt(fieldvaluechts) - 2;
WfForm.changeFieldValue(breakfastCountFieldMark, {
value: breakfastCount
});
WfForm.changeFieldValue(lunchCountFieldMark, {
value: lunchCount
});
WfForm.changeFieldValue(dinnerCountFieldMark, {
value: dinnerCount
});
// alert("差旅费报销:计划出差大于2天")
}
}