From eb7f7f2362faf0c5d8f294ae4c09deba710442c4 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 10 Apr 2025 11:23:47 +0800 Subject: [PATCH] * [perf story #72338] Adjust for programplan create for waterfullplus. --- module/programplan/config/form.php | 2 +- module/programplan/js/create.ui.js | 26 ++++++++++++++++++++++++++ module/programplan/ui/create.html.php | 1 + module/programplan/zen.php | 3 ++- 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/module/programplan/config/form.php b/module/programplan/config/form.php index a61e869e24..8967acb087 100644 --- a/module/programplan/config/form.php +++ b/module/programplan/config/form.php @@ -8,12 +8,12 @@ $config->programplan->form->create = array(); $config->programplan->form->create['enabled'] = array('label' => $lang->programplan->enabled, 'type' => 'string', 'control' => array('control' => 'switcher', 'checked' => true), 'options' => $lang->programplan->enabledList); $config->programplan->form->create['id'] = array('label' => '', 'type' => 'int', 'control' => 'text', 'required' => false, 'default' => 0); $config->programplan->form->create['order'] = array('label' => '', 'type' => 'int', 'control' => 'text', 'required' => false, 'default' => 0); -$config->programplan->form->create['type'] = array('label' => $lang->execution->method, 'type' => 'string', 'control' => 'picker', 'required' => true, 'default' => 'stage', 'options' => $lang->execution->typeList); $config->programplan->form->create['name'] = array('label' => $lang->nameAB, 'type' => 'string', 'control' => 'text', 'required' => true, 'default' => '', 'base' => true, 'filter' => 'trim'); $config->programplan->form->create['code'] = array('label' => $lang->code, 'type' => 'string', 'control' => 'text', 'required' => false, 'default' => '', 'filter' => 'trim'); $config->programplan->form->create['PM'] = array('label' => $lang->programplan->PMAB, 'type' => 'string', 'control' => 'picker', 'required' => false, 'default' => '', 'options' => ''); if(!empty($config->setPercent)) $config->programplan->form->create['percent'] = array('label' => $lang->programplan->percent, 'type' => 'float', 'control' => 'text', 'required' => false, 'default' => 0); $config->programplan->form->create['attribute'] = array('label' => $lang->programplan->attribute, 'type' => 'string', 'control' => 'picker', 'required' => false, 'default' => 0, 'options' => $lang->stage->typeList); +$config->programplan->form->create['type'] = array('label' => $lang->execution->method, 'type' => 'string', 'control' => 'picker', 'required' => true, 'default' => 'stage', 'options' => $lang->execution->typeList); $config->programplan->form->create['point'] = array('label' => $lang->programplan->point, 'type' => 'array', 'control' => 'picker', 'required' => false, 'default' => '', 'options' => array(''), 'multiple' => true); $config->programplan->form->create['parallel'] = array('label' => '', 'type' => 'int', 'control' => 'hidden', 'required' => false, 'default' => 0); $config->programplan->form->create['acl'] = array('label' => $lang->programplan->acl, 'type' => 'string', 'control' => 'picker', 'required' => false, 'default' => 'open', 'options' => $lang->execution->aclList); diff --git a/module/programplan/js/create.ui.js b/module/programplan/js/create.ui.js index 04d01d675a..54aeab3fbb 100644 --- a/module/programplan/js/create.ui.js +++ b/module/programplan/js/create.ui.js @@ -83,6 +83,20 @@ window.handleRenderRow = function($row, index, data) if(typeof data != 'undefined' && typeof data.id != 'undefined') $row.find('[data-name="ACTIONS"]').find('[data-type="delete"]').addClass('hidden'); //隐藏已有数据的删除按钮。 if($row.find('input[data-name="milestone"]:checked').length == 0) $row.find('input[data-name="milestone"]').eq(1).prop('checked', true); + if(typeof data != 'undefined' && typeof data.type != 'undefined' && data.type != 'stage') + { + $row.find('input[data-name="percent"]').prop('disabled', true); + $row.find('[data-name="ACTIONS"]').find('[data-type="addSub"]').addClass('disabled').prop('disabled', true); + } + + if(project.model == 'waterfallplus' && level == 0) + { + $row.find('[data-name="type"]').find('.picker-box').on('inited', function(e, info) + { + let $type = info[0]; + $type.render({disabled: true}); + }); + } if(project.model == 'ipd' && planID == '0' && data) { @@ -371,3 +385,15 @@ window.changeAttribute = function(obj) $tr = $nextTr; } }; + +window.changeType = function(obj) +{ + if(project.model != 'waterfallplus') return; + + const type = obj.value; + const $target = $(obj); + + let $row = $target.closest('tr'); + $row.find('input[data-name="percent"]').prop('disabled', type != 'stage'); + $row.find('[data-name="ACTIONS"]').find('[data-type="addSub"]').toggleClass('disabled', type != 'stage').prop('disabled', type != 'stage'); +}; diff --git a/module/programplan/ui/create.html.php b/module/programplan/ui/create.html.php index bf9224d2e5..39d78b99ff 100644 --- a/module/programplan/ui/create.html.php +++ b/module/programplan/ui/create.html.php @@ -318,5 +318,6 @@ formBatchPanel $app->session->projectPlanList ? set::actions(array('submit', array('text' => $lang->cancel, 'url' => $app->session->projectPlanList))) : null, on::change('[name^="enabled"]', 'changeEnabled(e.target)'), on::change('[name^="attribute"]', 'changeAttribute(e.target)'), + on::change('[name^="type"]', 'changeType(e.target)'), ($project->model == 'ipd' && !$planID) ? set::maxRows(count($fnGenerateDefaultData())) : null, ); diff --git a/module/programplan/zen.php b/module/programplan/zen.php index 65845739ef..32e6cb422e 100644 --- a/module/programplan/zen.php +++ b/module/programplan/zen.php @@ -336,7 +336,8 @@ class programplanZen extends programplan if($field) $visibleFields[$field] = ''; } - if($viewData->project->model == 'ipd' && $viewData->executionType == 'stage' && !$viewData->planID) $createRequiredFields = 'enabled,point,' . trim($createRequiredFields, ','); + if($viewData->project->model == 'waterfallplus' && $viewData->executionType == 'stage') $createRequiredFields = 'type,' . trim($createRequiredFields, ','); + if($viewData->project->model == 'ipd' && $viewData->executionType == 'stage' && !$viewData->planID) $createRequiredFields = 'enabled,point,type' . trim($createRequiredFields, ','); foreach(explode(',', $createRequiredFields) as $field) { if($field)