需求:根据预计开始时间和预计截止日期计算预计工时自动填入上图输入框,一天算作8个工时。
实现:
/**
* 根据预计开始日期和截止日期自动填写预计工时,一天当作8个工时
*/
$(function(){
$('#deadline').change(function(){
var endTime = $(this).val();
var beginTime = $('#estStarted').val();
if (beginTime && endTime ){
beginTime = toDate(beginTime);
endTime = toDate(endTime)
var difDays = (endTime.getTime() - beginTime.getTime())/(1000 * 3600 * 24);
var estimate = difDays*8;
$('#estimate').val(estimate)
}
})
});
/**
* 开始时间或者截止时间变更都需要重新计算预计工时
*/
$(function(){
$('#estStarted').change(function(){
var endTime = $('#deadline').val();
var beginTime = $(this).val();
if (beginTime && endTime ){
beginTime = toDate(beginTime);
endTime = toDate(endTime)
var difDays = (endTime.getTime() - beginTime.getTime())/(1000 * 3600 * 24);
var estimate = difDays*8;
$('#estimate').val(estimate)
}
})
});
/**
* 将"2021-1-04"这种格式的字符串转换成日期格式
* @param s
* @returns {Date}
*/
function toDate(s){
var arr = s.split("-");
var date = new Date(arr[0],parseInt(arr[1]),arr[2]);
return date;
}
拿到两个日期的值,因为是String类型所以需要用toDate(s)方法转成Date类型,再利用Date的getTime()方法进行预计工时的换算。
最后根据禅道的扩展方法,再task模块的ext文件夹下面创建js.create文件夹,再创建一个放入扩展代码的js文件即可。