Merge branch 'sprint/master_zhouxudong_18083' into 'master'

Sprint/master zhouxudong 18083

See merge request easycorp/zentaopms!2653
This commit is contained in:
孙广明
2022-03-31 03:06:37 +00:00
5 changed files with 39 additions and 15 deletions
+1 -1
View File
@@ -562,7 +562,7 @@ class task extends control
if($this->post->names)
{
$allChanges = $this->task->batchUpdate();
if(dao::isError()) return print(js::error(dao::getError()));
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
if(!empty($allChanges))
{
+2
View File
@@ -246,6 +246,8 @@ $lang->task->error->finishedDateEmpty = '"Finished Date" should not be empty.';
$lang->task->error->finishedDateSmall = '"Finished Date" should be > "Real Started"';
$lang->task->error->alreadyConsumed = 'The currently selected parent task has been consumed.';
$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';
/* Report. */
$lang->task->report = new stdclass();
+2
View File
@@ -246,6 +246,8 @@ $lang->task->error->finishedDateEmpty = '实际完成不能为空';
$lang->task->error->finishedDateSmall = '实际完成不能小于实际开始';
$lang->task->error->alreadyConsumed = '当前选中的父任务已有消耗。';
$lang->task->error->date = '日期不能大于今天';
$lang->task->error->leftEmptyAB = '任务状态为%s时,预计剩余不能为0';
$lang->task->error->leftEmpty = 'Task#%s任务状态为%s时,剩余不能为0';
/* Report. */
$lang->task->report = new stdclass();
+33 -13
View File
@@ -998,6 +998,12 @@ class taskModel extends model
$requiredFields = str_replace(',estimate,', ',', $requiredFields);
}
if(strpos(',doing,pause,', $task->status) && empty($teams) && empty($task->left))
{
dao::$errors[] = sprintf($this->lang->task->error->leftEmptyAB, $this->lang->task->statusList[$task->status]);
return false;
}
$requiredFields = trim($requiredFields, ',');
$this->dao->update(TABLE_TASK)->data($task)
@@ -1008,7 +1014,6 @@ class taskModel extends model
->checkIF($task->estimate != false, 'estimate', 'float')
->checkIF($task->left != false, 'left', 'float')
->checkIF($task->consumed != false, 'consumed', 'float')
->checkIF($task->status != 'wait' and empty($teams) and $task->left == 0 and $task->status != 'cancel' and $task->status != 'closed', 'status', 'equal', 'done')
->batchCheckIF($task->status == 'wait' or $task->status == 'doing', 'finishedBy, finishedDate,canceledBy, canceledDate, closedBy, closedDate, closedReason', 'empty')
@@ -1113,7 +1118,6 @@ class taskModel extends model
{
if(isset($data->modules[$taskID]) and ($data->modules[$taskID] == 'ditto')) $data->modules[$taskID] = isset($prev['module']) ? $prev['module'] : 0;
if($data->types[$taskID] == 'ditto') $data->types[$taskID] = isset($prev['type']) ? $prev['type'] : '';
if($data->statuses[$taskID] == 'ditto') $data->statuses[$taskID] = isset($prev['status']) ? $prev['status'] : '';
if($data->assignedTos[$taskID] == 'ditto') $data->assignedTos[$taskID] = isset($prev['assignedTo']) ? $prev['assignedTo'] : '';
if($data->pris[$taskID] == 'ditto') $data->pris[$taskID] = isset($prev['pri']) ? $prev['pri'] : 0;
if($data->finishedBys[$taskID] == 'ditto') $data->finishedBys[$taskID] = isset($prev['finishedBy']) ? $prev['finishedBy'] : '';
@@ -1124,7 +1128,6 @@ class taskModel extends model
$prev['module'] = $data->modules[$taskID];
$prev['type'] = $data->types[$taskID];
$prev['status'] = $data->statuses[$taskID];
$prev['assignedTo'] = $data->assignedTos[$taskID];
$prev['pri'] = $data->pris[$taskID];
$prev['finishedBy'] = $data->finishedBys[$taskID];
@@ -1145,7 +1148,7 @@ class taskModel extends model
$task->name = $data->names[$taskID];
$task->module = isset($data->modules[$taskID]) ? $data->modules[$taskID] : 0;
$task->type = $data->types[$taskID];
$task->status = $data->statuses[$taskID];
$task->status = isset($data->statuses[$taskID]) ? $data->statuses[$taskID] : $oldTask->status;
$task->assignedTo = $task->status == 'closed' ? 'closed' : $data->assignedTos[$taskID];
$task->pri = $data->pris[$taskID];
$task->estimate = isset($data->estimates[$taskID]) ? $data->estimates[$taskID] : $oldTask->estimate;
@@ -1180,11 +1183,12 @@ class taskModel extends model
if($message) return print(js::alert($message));
}
if($data->consumeds[$taskID])
if(isset($data->consumeds[$taskID]))
{
if($data->consumeds[$taskID] < 0)
{
echo js::alert(sprintf($this->lang->task->error->consumed, $taskID));
dao::$errors[] = sprintf($this->lang->task->error->consumed, $taskID);
return false;
}
else
{
@@ -1256,9 +1260,19 @@ class taskModel extends model
/* Check field not empty. */
foreach($tasks as $taskID => $task)
{
if($task->status == 'done' and $task->consumed == false) return print(js::error('task#' . $taskID . sprintf($this->lang->error->notempty, $this->lang->task->consumedThisTime)));
if($task->status == 'cancel') continue;
if(!empty($task->deadline) and $task->estStarted > $task->deadline) return print(js::error('task#' . $taskID . $this->lang->task->error->deadlineSmall));
if($task->status == 'done' and $task->consumed == false)
{
dao::$errors[] = 'Task#' . $taskID . sprintf($this->lang->error->notempty, $this->lang->task->consumedThisTime);
return false;
}
if(!empty($task->deadline) and $task->estStarted > $task->deadline)
{
dao::$errors[] = 'Task#' . $taskID . $this->lang->task->error->deadlineSmall;
return false;
}
foreach(explode(',', $this->config->task->edit->requiredFields) as $field)
{
$field = trim($field);
@@ -1275,6 +1289,12 @@ class taskModel extends model
foreach($tasks as $taskID => $task)
{
if(strpos(',doing,pause,', $task->status) && empty($teams) && $task->parent >= 0 && empty($task->left))
{
dao::$errors[] = sprintf($this->lang->task->error->leftEmpty, $taskID, $this->lang->task->statusList[$task->status]);
return false;
}
$oldTask = $oldTasks[$taskID];
$this->dao->update(TABLE_TASK)->data($task)
->autoCheck()
@@ -1282,7 +1302,6 @@ class taskModel extends model
->checkIF($task->estimate != false, 'estimate', 'float')
->checkIF($task->consumed != false, 'consumed', 'float')
->checkIF($task->left != false, 'left', 'float')
->checkIF($task->parent > 0 and $task->left == 0 and $task->status != 'cancel' and $task->status != 'closed' and $task->status != 'wait' and $task->consumed != 0, 'status', 'equal', 'done')
->batchCheckIF($task->status == 'wait' or $task->status == 'doing', 'finishedBy, finishedDate,canceledBy, canceledDate, closedBy, closedDate, closedReason', 'empty')
@@ -1294,6 +1313,11 @@ class taskModel extends model
->batchCheckIF($task->closedReason == 'cancel', 'finishedBy, finishedDate', 'empty')
->where('id')->eq((int)$taskID)
->exec();
if(dao::isError())
{
dao::$errors[] = 'Task#' . $taskID . dao::getError(true);
return false;
}
if($task->status == 'done' and $task->closedReason) $this->dao->update(TABLE_TASK)->set('status')->eq('closed')->where('id')->eq($taskID)->exec();
@@ -1324,10 +1348,6 @@ class taskModel extends model
if($task->status != $oldTask->status) $this->loadModel('kanban')->updateLane($oldTask->execution, 'task', $oldTask->id);
$allChanges[$taskID] = common::createChanges($oldTask, $task);
}
else
{
return print(js::error('task#' . $taskID . dao::getError(true)));
}
}
if(!dao::isError()) $this->loadModel('score')->create('ajax', 'batchEdit');
return $allChanges;
+1 -1
View File
@@ -127,7 +127,7 @@ js::set('dittoNotice', $dittoNotice);
<td class='text-left<?php echo zget($visibleFields, 'module', ' hidden')?>' style='overflow:visible'><?php echo html::select("modules[$taskID]", $modules, $tasks[$taskID]->module, "class='form-control chosen'")?></td>
<td class='text-left<?php echo zget($visibleFields, 'assignedTo', ' hidden')?>' style='overflow:visible'><?php echo html::select("assignedTos[$taskID]", $taskMembers, $tasks[$taskID]->assignedTo, "class='form-control chosen' {$disableAssignedTo}");?></td>
<td><?php echo html::select("types[$taskID]", $typeList, $tasks[$taskID]->type, "class='form-control'");?></td>
<td <?php echo zget($visibleFields, 'status', "class='hidden'")?>><?php echo html::select("statuses[$taskID]", $statusList, $tasks[$taskID]->status, "class='form-control'");?></td>
<td <?php echo zget($visibleFields, 'status', "class='hidden'")?>><?php echo html::select("statuses[$taskID]", $statusList, $tasks[$taskID]->status, "class='form-control' {$disableHour}");?></td>
<td <?php echo zget($visibleFields, 'estStarted', "class='hidden'")?>><?php echo html::input("estStarteds[$taskID]", helper::isZeroDate($tasks[$taskID]->estStarted) ? '' : $tasks[$taskID]->estStarted, "class='form-control text-center form-date'");?></td>
<td <?php echo zget($visibleFields, 'deadline', "class='hidden'")?>><?php echo html::input("deadlines[$taskID]", helper::isZeroDate($tasks[$taskID]->deadline) ? '' : $tasks[$taskID]->deadline, "class='form-control text-center form-date'");?></td>
<td <?php echo zget($visibleFields, 'pri', "class='hidden'")?>><?php echo html::select("pris[$taskID]", $priList, $tasks[$taskID]->pri, "class='form-control'");?></td>