* Code for task #72375.

This commit is contained in:
曹延义
2022-10-19 17:21:35 +08:00
parent 3ce6ca1f4f
commit 1b80975ac1
6 changed files with 150 additions and 47 deletions
+126 -40
View File
@@ -1,56 +1,142 @@
$('#confirmButton').click(function()
$(function()
{
var memberCount = '';
var totalEstimate = 0;
var totalConsumed = oldConsumed;
var totalLeft = 0;
var error = false;
$('select[name^=team]').each(function()
$('#confirmButton').click(function()
{
if($(this).val() == '') return;
memberCount++;
var $tr = $(this).closest('tr');
var account = $(this).find('option:selected').text();
var estimate = parseFloat($tr.find('[name^=teamEstimate]').val());
if(!isNaN(estimate)) totalEstimate += estimate;
if($tr.hasClass('member-wait') && (isNaN(estimate) || estimate <= 0))
var memberCount = '';
var totalEstimate = 0;
var totalConsumed = oldConsumed;
var totalLeft = 0;
var error = false;
$('select[name^=team]').each(function()
{
bootbox.alert(account + ' ' + estimateNotEmpty);
error = true;
if($(this).val() == '') return;
memberCount++;
var $tr = $(this).closest('tr');
var account = $(this).find('option:selected').text();
var estimate = parseFloat($tr.find('[name^=teamEstimate]').val());
if(!isNaN(estimate)) totalEstimate += estimate;
if($tr.hasClass('member-wait') && (isNaN(estimate) || estimate <= 0))
{
bootbox.alert(account + ' ' + estimateNotEmpty);
error = true;
return false;
}
var consumed = parseFloat($tr.find('[name^=teamConsumed]').val());
if(!isNaN(consumed)) totalConsumed += consumed;
var $left = $tr.find('[name^=teamLeft]');
var left = parseFloat($left.val());
if(!isNaN(left)) totalLeft += left;
if(!$left.prop('readonly') && $tr.hasClass('member-wait') && (isNaN(left) || left <= 0))
{
bootbox.alert(account + ' ' + leftNotEmpty);
error = true;
return false;
}
})
if(error) return false;
if(memberCount < 2)
{
bootbox.alert(teamMemberError);
return false;
}
var consumed = parseFloat($tr.find('[name^=teamConsumed]').val());
if(!isNaN(consumed)) totalConsumed += consumed;
$('#left').val(totalLeft);
updateAssignedTo();
var $left = $tr.find('[name^=teamLeft]');
var left = parseFloat($left.val());
if(!isNaN(left)) totalLeft += left;
if(!$left.prop('readonly') && $tr.hasClass('member-wait') && (isNaN(left) || left <= 0))
{
bootbox.alert(account + ' ' + leftNotEmpty);
error = true;
return false;
}
})
$('.close').click();
});
if(error) return false;
if(memberCount < 2)
$('#multiple').on('click', function()
{
bootbox.alert(teamMemberError);
return false;
}
var showTeam = $(this).is(":checked");
$('#assignedTo').val('');
$('#left').val('');
$('#dataPlanGroup').removeClass('required');
$('.multi-append').empty();
$('.teamTemplate select, .teamTemplate input').val('');
$('.teamTemplate input[name^=teamConsumed]').val('0');
$('.teamTemplate select').trigger('chosen:updated');
var trCount = $('#taskTeamEditor tr').length;
var tmpCount = $('#taskTeamEditor select:disabled').length;
$('#left').val(totalLeft);
updateAssignedTo();
var removeNum = tmpCount > 6 ? 1 : (5 - tmpCount);
$('#taskTeamEditor tr.teamTemplate').filter(':gt(' + removeNum + ')').remove();
$('.close').click();
if(showTeam)
{
$('#assignedTo').attr('disabled', true);
$('#left').attr('readonly', true);
$('.team-group').removeClass('hidden');
}
else
{
$('.team-group').addClass('hidden');
$('#assignedTo').removeAttr('disabled');
$('#left').removeAttr('readonly');
$('#dataPlanGroup').addClass('required');
}
$('#assignedTo').trigger('chosen:updated');
});
$('#assignedTo').on('change', setTeamUser);
$('#left').on('input', setTeamUser);
$('#submit').on('click', function()
{
if(isMultiple)
{
var multiple = $('#multiple').is(":checked");
if(!multiple)
{
var assignedTo = $('#assignedTo').val();
if(!assignedTo)
{
bootbox.alert(teamNotEmpty);
return false;
}
}
var estimate = parseInt($('#left').val());
if(isNaN(estimate) || estimate <= 0)
{
bootbox.alert(multiple ? teamLeftEmpty : leftNotEmpty);
return false;
}
$('#assignedTo').val('');
}
});
});
/**
* Set team user form.
*
* @access public
* @return void
*/
function setTeamUser()
{
$('.multi-append').empty();
var assignedTo = $('#assignedTo').val();
var estimate = parseInt($('#left').val());
if(!assignedTo || !estimate) return;
var teamLine = '<input type="hidden" name="team[]" value="' + assignedTo + '">';
teamLine += '<input type="hidden" name="teamSource[]" value="' + assignedTo + '">';
teamLine += '<input type="hidden" name="teamEstimate[]" value="' + estimate + '">';
teamLine += '<input type="hidden" name="teamConsumed[]" value="0">';
teamLine += '<input type="hidden" name="teamLeft[]" value="' + estimate + '">';
$('.multi-append').html(teamLine);
}
/**
* Update assignedTo.
*
+2
View File
@@ -60,6 +60,7 @@ $lang->task->replace = 'Replace';
$lang->task->myEffort = 'My Effort';
$lang->task->allEffort = 'Team Effort';
$lang->task->teamOrder = 'Order';
$lang->task->manageTeam = 'Manage Team';
$lang->task->common = 'Aufgabe';
$lang->task->id = 'ID';
@@ -278,6 +279,7 @@ $lang->task->error->date = 'The date should be <= today.';
$lang->task->error->leftEmptyAB = 'When the task status is %s, "Hours Left" cannot be 0';
$lang->task->error->leftEmpty = 'Task#%sWhen the task status is %s, "Left" cannot be 0';
$lang->task->error->notempty = '%s must be > 0.';
$lang->task->error->teamLeftEmpty = 'Please maintain team hours.';
/* Report. */
$lang->task->report = new stdclass();
+2
View File
@@ -60,6 +60,7 @@ $lang->task->replace = 'Replace';
$lang->task->myEffort = 'My Effort';
$lang->task->allEffort = 'Team Effort';
$lang->task->teamOrder = 'Order';
$lang->task->manageTeam = 'Manage Team';
$lang->task->common = 'Task';
$lang->task->id = 'ID';
@@ -278,6 +279,7 @@ $lang->task->error->date = 'The date should be <= today.';
$lang->task->error->leftEmptyAB = 'When the task status is %s, "Hours Left" cannot be 0';
$lang->task->error->leftEmpty = 'Task#%sWhen the task status is %s, "Left" cannot be 0';
$lang->task->error->notempty = '%s must be > 0.';
$lang->task->error->teamLeftEmpty = 'Please maintain team hours.';
/* Report. */
$lang->task->report = new stdclass();
+2
View File
@@ -60,6 +60,7 @@ $lang->task->replace = 'Replace';
$lang->task->myEffort = 'My Effort';
$lang->task->allEffort = 'Team Effort';
$lang->task->teamOrder = 'Order';
$lang->task->manageTeam = 'Manage Team';
$lang->task->common = 'Tâche';
$lang->task->id = 'ID';
@@ -278,6 +279,7 @@ $lang->task->error->date = 'The date should be <= today.';
$lang->task->error->leftEmptyAB = 'When the task status is %s, "Hours Left" cannot be 0';
$lang->task->error->leftEmpty = 'Task#%sWhen the task status is %s, "Left" cannot be 0';
$lang->task->error->notempty = '%s must be > 0.';
$lang->task->error->teamLeftEmpty = 'Please maintain team hours.';
/* Report. */
$lang->task->report = new stdclass();
+2
View File
@@ -60,6 +60,7 @@ $lang->task->replace = '替换';
$lang->task->myEffort = '我的日志';
$lang->task->allEffort = '团队日志';
$lang->task->teamOrder = '工序';
$lang->task->manageTeam = '维护团队';
$lang->task->common = '任务';
$lang->task->id = '编号';
@@ -278,6 +279,7 @@ $lang->task->error->date = '日期不能大于今天';
$lang->task->error->leftEmptyAB = '任务状态为%s时,预计剩余不能为0';
$lang->task->error->leftEmpty = 'Task#%s任务状态为%s时,剩余不能为0';
$lang->task->error->notempty = '%s必须大于0。';
$lang->task->error->teamLeftEmpty = '请维护团队工时。';
/* Report. */
$lang->task->report = new stdclass();
+16 -7
View File
@@ -17,9 +17,14 @@
<?php js::set('currentUser', $app->user->account);?>
<?php js::set('members', $members);?>
<?php js::set('teamMemberError', $lang->task->error->teamMember);?>
<?php js::set('teamLeftEmpty', $lang->task->error->teamLeftEmpty);?>
<?php js::set('totalLeftError', sprintf($this->lang->task->error->leftEmptyAB, $this->lang->task->statusList[$task->status]));?>
<?php js::set('estimateNotEmpty', sprintf($lang->task->error->notempty, $lang->task->estimate))?>
<?php js::set('leftNotEmpty', sprintf($lang->task->error->notempty, $lang->task->left))?>
<?php js::set('teamNotEmpty', sprintf($lang->error->notempty, $lang->task->assignedTo))?>
<?php $isMultiple = !empty($task->team);?>
<?php js::set('isMultiple', $isMultiple);?>
<?php js::set('taskMode', $task->mode);?>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>
@@ -34,7 +39,6 @@
<form method='post' target='hiddenwin'>
<table class='table table-form'>
<?php $isMultiple = !empty($task->team);?>
<?php if($isMultiple):?>
<tr>
<th class='thWidth'><?php echo $lang->task->mode;?></th>
@@ -45,17 +49,17 @@
<tr>
<th class='thWidth'><?php echo $lang->task->assignedTo;?></th>
<td class='w-p35-f'>
<div class="input-group" id="dataPlanGroup">
<?php echo html::select('assignedTo', $members, $task->finishedBy, "class='form-control chosen'" . ($isMultiple ? ' disabled' : ''));?>
<div class="input-group<?php if($isMultiple) echo ' required';?>" id="dataPlanGroup">
<?php echo html::select('assignedTo', $members, $isMultiple ? '' : $task->finishedBy, "class='form-control chosen'");?>
<?php if($isMultiple):?>
<span class="input-group-btn team-group"><a class="btn br-0" href="#modalTeam" data-toggle="modal"><?php echo $lang->task->team;?></a></span>
<span class="input-group-btn team-group hidden"><a class="btn br-0" href="#modalTeam" data-toggle="modal"><?php echo $lang->task->team;?></a></span>
<?php endif;?>
</div>
</td>
<td>
<?php if($isMultiple):?>
<div class="checkbox-primary c-multipleTask affair">
<input type="checkbox" name="multiple" value="1" id="multiple" checked disabled /><label for="multiple" class="no-margin"><?php echo $lang->task->multiple;?></label>
<input type="checkbox" name="multiple" value="1" id="multiple" /><label for="multiple" class="no-margin"><?php echo $lang->task->manageTeam;?></label>
</div>
<?php endif;?>
</td>
@@ -65,7 +69,7 @@
<th><?php echo $lang->task->left;?></th>
<td>
<div class='input-group'>
<?php echo html::input('left', '', "class='form-control'" . ($isMultiple ? ' readonly' : ''));?>
<?php echo html::input('left', '', "class='form-control'");?>
<span class='input-group-addon'><?php echo $lang->task->hour;?></span>
</div>
</td>
@@ -105,7 +109,12 @@
<?php include __DIR__ . DS . 'taskteam.html.php';?>
</tbody>
<tfoot>
<tr><td colspan='3' class='text-center form-actions'><?php echo html::a('javascript:void(0)', $lang->confirm, '', "id='confirmButton' class='btn btn-primary btn-wide'");?></td></tr>
<tr>
<td colspan='4' class='text-center form-actions'>
<div class='multi-append'></div>
<?php echo html::a('javascript:void(0)', $lang->confirm, '', "id='confirmButton' class='btn btn-primary btn-wide'");?>
</td>
</tr>
</tfoot>
</table>
</div>