Files
EasySoft-ZenTaoPMS/module/project/js/common.ui.js
T

112 lines
2.9 KiB
JavaScript

/**
* 计算两个时间的天数。
* Compute delta of two days.
*
* @param string date1
* @param string date2
* @access public
* @return int
*/
function computeDaysDelta(date1, date2)
{
date1 = convertStringToDate(date1);
date2 = convertStringToDate(date2);
delta = (date2 - date1) / (1000 * 60 * 60 * 24) + 1;
if(isNaN(delta)) return;
weekEnds = 0;
for(i = 0; i < delta; i++)
{
if((weekend == 2 && date1.getDay() == 6) || date1.getDay() == 0) weekEnds ++;
date1 = date1.valueOf();
date1 += 1000 * 60 * 60 * 24;
date1 = new Date(date1);
}
return delta - weekEnds;
}
/**
* 计算可用工作日天数。
* Compute work days.
*
* @param string currentID
* @access public
* @return void
*/
function computeWorkDays(currentID)
{
isBactchEdit = false;
if(currentID)
{
index = currentID.replace('begins[', '');
index = index.replace('ends[', '');
index = index.replace(']', '');
if(!isNaN(index)) isBactchEdit = true;
}
if(isBactchEdit)
{
beginDate = $('#begins\\[' + index + '\\]').val();
endDate = $('#ends\\[' + index + '\\]').val();
}
else
{
beginDate = $('#begin').val();
endDate = $('#end').val();
var begin = new Date(beginDate.replace(/-/g,"/"));
var end = new Date(endDate.replace(/-/g,"/"));
var time = end.getTime() - begin.getTime();
var days = parseInt(time / (1000 * 60 * 60 * 24)) + 1;
if(days != $("input:radio[name='delta']:checked").val()) $("input:radio[name='delta']:checked").attr('checked', false);
if(endDate == longTime) $("#delta999").prop('checked', true);
}
if(beginDate && endDate)
{
if(isBactchEdit) $('#dayses\\[' + index + '\\]').val(computeDaysDelta(beginDate, endDate));
if(!isBactchEdit) $('#days').val(computeDaysDelta(beginDate, endDate));
}
else if($('input[checked="true"]').val())
{
computeEndDate();
}
outOfDateTip(isBactchEdit ? index : 0);
}
/**
* 计算并设置计划完成时间。
* Compute the end date for project.
*
* @param int delta
* @access public
* @return void
*/
function computeEndDate(delta)
{
beginDate = $('#begin').val();
if(!beginDate) return;
delta = parseInt(delta);
if(delta == 999)
{
$('#end').val(longTime).trigger('mousedown');
$('#daysBox').addClass('hidden');
$('#days').val(0).trigger('mousedown');
outOfDateTip();
return false;
}
$('#daysBox').removeClass('hidden');
beginDate = convertStringToDate(beginDate);
if((delta == 7 || delta == 14) && (beginDate.getDay() == 1))
{
delta = (weekend == 2) ? (delta - 2) : (delta - 1);
}
endDate = $.formatDate(beginDate.addDays(delta - 1), 'yyyy-MM-dd');
$('#end').val(endDate).datetimepicker('update').trigger('mousedown');
computeWorkDays();
$('#days').trigger('mousedown');
}