diff --git a/module/programplan/lang/zh-cn.php b/module/programplan/lang/zh-cn.php index fb9d36953d..f9c975c285 100644 --- a/module/programplan/lang/zh-cn.php +++ b/module/programplan/lang/zh-cn.php @@ -86,6 +86,7 @@ $lang->programplan->error->parentWorkload = '子阶段的工作量之和不能 $lang->programplan->error->parentDuration = '子阶段计划开始、计划完成不能超过父阶段'; $lang->programplan->error->sameName = '阶段名称不能相同!'; $lang->programplan->error->taskDrag = '%s的任务不可以拖动'; +$lang->programplan->error->planDrag = '%s的阶段不可以拖动'; $lang->programplan->ganttBrowseType['gantt'] = '按阶段分组'; diff --git a/module/programplan/view/gantt.html.php b/module/programplan/view/gantt.html.php index de74b9a541..3907dc05ce 100644 --- a/module/programplan/view/gantt.html.php +++ b/module/programplan/view/gantt.html.php @@ -404,9 +404,17 @@ function validateResources(id) flag = true; /* Check status. */ - if(status !== statusLang && type === 'task') + if(status !== statusLang) { - new $.zui.Messager("programplan->error->taskDrag;?>".replace('%s', status), { + if(type == 'task') + { + tipMsg = "programplan->error->taskDrag;?>"; + } + else + { + tipMsg = "programplan->error->planDrag;?>"; + } + new $.zui.Messager(tipMsg.replace('%s', status), { type: 'danger', icon: 'exclamation-sign' }).show(); diff --git a/module/task/model.php b/module/task/model.php index 5ba1677c31..569d986788 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -3907,39 +3907,30 @@ class taskModel extends model $execution = $objectData->execution; $stage = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($execution)->andWhere('project')->eq($project)->fetch(); - if(empty($parent)) + if($parent <= 0) { $parentData = $stage; - $start = $parentData->realBegan ? $parentData->realBegan : $parentData->begin; - $end = $parentData->realEnd ? $parentData->realEnd : $parentData->deadline; + $start = $parentData->begin; + $end = $parentData->end; } else { $parentData = $this->dao->select('*')->from(TABLE_TASK)->where('id')->eq($parent)->fetch(); - $estStart = helper::isZeroDate($parentData->estStarted) ? '' : $parentData->estStarted; - $estEnd = helper::isZeroDate($parentData->deadline) ? '' : $parentData->deadline; - $realBegan = helper::isZeroDate($parentData->realStarted) ? '' : $parentData->realStarted; - $realEnd = helper::isZeroDate($parentData->finishedDate) ? '' : $parentData->finishedDate; - $start = $realBegan ? $realBegan : $estStart; - $end = $realEnd ? $realEnd : $estEnd; - if(empty($start) and $stage) $start = $stage->begin; - if(empty($end) and $stage) $end = $stage->end; - if($start > $end) $end = $start; + $start = helper::isZeroDate($parentData->estStarted) ? '' : $parentData->estStarted; + $end = helper::isZeroDate($parentData->deadline) ? '' : $parentData->deadline; } - if(helper::diffDate($start, $post->start_date) > 0) + if(helper::diffDate($start, $post->start_date) >= 0) { $arg = !empty($parent) ? $this->lang->task->parent : $this->lang->project->stage; return dao::$errors = sprintf($this->lang->task->overTime, $arg, $arg); } - $updateStartArg = !empty($objectData->realStarted) ? 'realStarted' : 'estStarted'; - $updateEndArg = (!empty($objectData->finishedDate) and in_array($objectData->status, array('done', 'closed'))) ? 'finishedDate' : 'deadline'; $this->dao->update(TABLE_TASK) - ->set($updateStartArg)->eq($post->start_date) - ->set($updateEndArg)->eq($post->end_date) + ->set('estStarted')->eq($post->start_date) + ->set('deadline')->eq($post->end_date) ->set('lastEditedBy')->eq($this->app->user->account) ->where('id')->eq($objectID) ->exec(); @@ -3958,25 +3949,19 @@ class taskModel extends model { $parentData = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($parent)->fetch(); } + $start = helper::isZeroDate($parentData->begin) ? '' : $parentData->begin; $end = helper::isZeroDate($parentData->end) ? '' : $parentData->end; - $realBegan = helper::isZeroDate($parentData->realBegan) ? '' : $parentData->realBegan; - $realEnd = helper::isZeroDate($parentData->realEnd) ? '' : $parentData->realEnd; - $startDate = $realBegan ? $realBegan : $start; - $endDate = $realEnd ? $realEnd : $end; - - if(helper::diffDate($startDate, $post->start_date) > 0) + if(helper::diffDate($start, $post->start_date) >= 0) { $arg = !empty($parent) ? $this->lang->programplan->parent : $this->lang->project->common; return dao::$errors = sprintf($this->lang->task->overTime, $arg, $arg); } - $updateStartArg = !empty($objectData->realBegan) ? 'realBegan' : 'begin'; - $updateEndArg = !empty($objectData->realEnd) ? 'realEnd' : 'end'; $this->dao->update(TABLE_PROJECT) - ->set($updateStartArg)->eq($post->start_date) - ->set($updateEndArg)->eq($post->end_date) + ->set('begin')->eq($post->start_date) + ->set('end')->eq($post->end_date) ->set('lastEditedBy')->eq($this->app->user->account) ->where('id')->eq($objectID) ->exec();