From d6b432330e72e950c7b61792a6ec30f7bb67dc78 Mon Sep 17 00:00:00 2001 From: tanghucheng Date: Fri, 10 May 2024 09:55:26 +0800 Subject: [PATCH] * Fix bug #48812. --- module/execution/model.php | 4 ++-- module/programplan/control.php | 8 ++++---- module/programplan/ui/edit.html.php | 12 ++++++------ module/programplan/zen.php | 28 +++++++++++++++++++--------- module/project/control.php | 4 +++- 5 files changed, 34 insertions(+), 22 deletions(-) diff --git a/module/execution/model.php b/module/execution/model.php index f824aa0b0e..593b9db56c 100755 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -1247,8 +1247,8 @@ class executionModel extends model } if(dao::isError()) return; - if($begin < ($project->realBegan ? $project->realBegan : $project->begin)) dao::$errors['begin'] = sprintf($this->lang->execution->errorCommonBegin, $project->begin); - if($end > ($project->realEnd ? $project->realEnd : $project->end)) dao::$errors['end'] = sprintf($this->lang->execution->errorCommonEnd, $project->end); + if($begin < $project->begin) dao::$errors['begin'] = sprintf($this->lang->execution->errorCommonBegin, $project->begin); + if($end > $project->end) dao::$errors['end'] = sprintf($this->lang->execution->errorCommonEnd, $project->end); } /** diff --git a/module/programplan/control.php b/module/programplan/control.php index 02d0287969..71e3234fb3 100644 --- a/module/programplan/control.php +++ b/module/programplan/control.php @@ -159,8 +159,6 @@ class programplan extends control if(!empty($this->config->setCode) && strpos(",{$this->config->execution->edit->requiredFields},", ',code,') !== false) $this->config->programplan->form->edit['code']['required'] = true; $plan = form::data()->get(); - if(empty($plan->realBegan)) $plan->realBegan = null; - if(empty($plan->realEnd)) $plan->realEnd = null; /* 设置计划和真实起始日期间隔时间。 */ /* Set planDuration and realDuration. */ @@ -177,10 +175,10 @@ class programplan extends control if($parentStage->attribute != 'mix') $plan->attribute = $parentStage->attribute; } - $this->programplanZen->prepareEditPlan($planID, $projectID, $plan, isset($parentStage) ? $parentStage : null); + $plan = $this->programplanZen->prepareEditPlan($planID, $projectID, $plan, isset($parentStage) ? $parentStage : null); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); - $changes = $this->programplan->update($planID, $projectID, $plan); + $this->programplan->update($planID, $projectID, $plan); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); $newPlan = $this->programplan->fetchByID($planID); @@ -189,6 +187,8 @@ class programplan extends control $this->programplan->computeProgress($planID, 'edit'); $this->programplan->computeProgress($plan->parent, 'edit', true); } + + if($this->app->rawModule == 'marketresearch') return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->session->marketstageList)); return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'callback' => 'loadCurrentPage', 'closeModal' => true)); } diff --git a/module/programplan/ui/edit.html.php b/module/programplan/ui/edit.html.php index 5f2ea076aa..137e55e372 100644 --- a/module/programplan/ui/edit.html.php +++ b/module/programplan/ui/edit.html.php @@ -74,7 +74,7 @@ formPanel set::value($plan->PM), ) ), - isset($config->setPercent) && $config->setPercent == 1 ? formGroup + isset($config->setPercent) && $config->setPercent == 1 && $project->model != 'research' ? formGroup ( set::label($lang->programplan->percent), set::width('2/3'), @@ -85,7 +85,7 @@ formPanel set::suffixWidth('lg') ) ): null, - formRow + $project->model != 'research' ? formRow ( formGroup ( @@ -115,7 +115,7 @@ formPanel setClass('ghost ml-1') ) ) - ), + ): null, formGroup ( set::label($lang->programplan->planDateRange), @@ -139,7 +139,7 @@ formPanel datepicker(set::name('realEnd'), set::value($plan->realEnd)) ) ), - formGroup + $project->model != 'research' ? formGroup ( set::label($lang->project->acl), set::width('2/3'), @@ -151,8 +151,8 @@ formPanel set::disabled($plan->grade == 2 ? 'disabled' : ''), set::required(true) ) - ), - $plan->setMilestone ? formGroup + ) : null, + $plan->setMilestone && $project->model != 'research' ? formGroup ( set::label($lang->programplan->milestone), set::width('2/3'), diff --git a/module/programplan/zen.php b/module/programplan/zen.php index 7f0f7fc05b..4d6ef21b36 100644 --- a/module/programplan/zen.php +++ b/module/programplan/zen.php @@ -146,14 +146,14 @@ class programplanZen extends programplan * 处理编辑阶段的请求数据。 * Processing edit request data. * - * @param int $planID - * @param int $projectID - * @param object $plan - * @param object|null $parentStage + * @param int $planID + * @param int $projectID + * @param object $plan + * @param object|null $parentStage * @access protected - * @return bool + * @return object|false */ - protected function prepareEditPlan(int $planID, int $projectID, object $plan, object|null $parentStage = null): bool + protected function prepareEditPlan(int $planID, int $projectID, object $plan, object|null $parentStage = null): object|false { if($plan->parent) { @@ -166,9 +166,10 @@ class programplanZen extends programplan if($projectID) $this->loadModel('execution')->checkBeginAndEndDate($projectID, $plan->begin, $plan->end, $plan->parent); if(dao::isError()) return false; + $project = $this->loadModel('project')->getById($projectID); + $oldPlan = $this->programplan->getByID($planID); if(!empty($this->config->setPercent)) { - $oldPlan = $this->programplan->getByID($planID); if($plan->parent > 0) { $childrenTotalPercent = $this->programplan->getTotalPercent($parentStage, true); @@ -186,7 +187,16 @@ class programplanZen extends programplan } } - return !dao::isError(); + /* 如果是调研阶段,设置默认值。*/ + /* If it is research stage, set default value. */ + if($project->model == 'research') + { + $plan->acl = $oldPlan->acl; + $plan->attribute = $oldPlan->attribute; + $plan->milestone = $oldPlan->milestone; + } + + return $plan; } /** @@ -209,7 +219,7 @@ class programplanZen extends programplan $this->view->isCreateTask = $this->programplan->isCreateTask($plan->id); $this->view->plan = $plan; $this->view->project = $this->project->getByID($plan->project); - $this->view->parentStageList = $this->programplan->getParentStageList($this->session->project, $plan->id, $plan->product); + $this->view->parentStageList = $this->programplan->getParentStageList($plan->project, $plan->id, $plan->product); $this->view->enableOptionalAttr = empty($parentStage) || (!empty($parentStage) && $parentStage->attribute == 'mix'); $this->view->isTopStage = $this->programplan->isTopStage($plan->id); $this->view->isLeafStage = $this->programplan->checkLeafStage($plan->id); diff --git a/module/project/control.php b/module/project/control.php index 17b4c73fd4..cdfaa307df 100755 --- a/module/project/control.php +++ b/module/project/control.php @@ -427,7 +427,9 @@ class project extends control if($model == 'waterfall' or $model == 'waterfallplus') { $productID = $this->loadModel('product')->getProductIDByProject($projectID, true); - $this->session->set('projectPlanList', $this->createLink('programplan', 'browse', "projectID=$projectID&productID=$productID&type=lists", '', false, $projectID), 'project'); + $session = $this->createLink('programplan', 'browse', "projectID=$projectID&productID=$productID&type=lists", '', false, $projectID); + if(in_array($this->config->edition, array('max', 'ipd'))) $session = $this->createLink('project', 'execution', "status=undone&projectID=$projectID", '', false); + $this->session->set('projectPlanList', $session, 'project'); return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('programplan', 'create', "projectID=$projectID", '', false, $projectID))); }