From e23090dea6be77c4abfb8e3d655eadd4affe51a8 Mon Sep 17 00:00:00 2001 From: tanghucheng Date: Mon, 8 Apr 2024 15:34:02 +0800 Subject: [PATCH] * Add point in programplan create task #114643. --- module/programplan/control.php | 1 + module/programplan/js/create.ui.js | 63 +++++++++++++++++---------- module/programplan/lang/de.php | 1 + module/programplan/lang/en.php | 1 + module/programplan/lang/fr.php | 1 + module/programplan/lang/zh-cn.php | 1 + module/programplan/ui/create.html.php | 7 ++- 7 files changed, 50 insertions(+), 25 deletions(-) diff --git a/module/programplan/control.php b/module/programplan/control.php index 0325fc4a2e..5d644d2544 100644 --- a/module/programplan/control.php +++ b/module/programplan/control.php @@ -79,6 +79,7 @@ class programplan extends control */ public function create(int $projectID = 0, int $productID = 0, int $planID = 0, string $executionType = 'stage') { + $this->loadModel('review'); $this->productID = $this->commonAction($projectID, $productID); if($_POST) { diff --git a/module/programplan/js/create.ui.js b/module/programplan/js/create.ui.js index 36706599b0..628cf05dd2 100644 --- a/module/programplan/js/create.ui.js +++ b/module/programplan/js/create.ui.js @@ -10,15 +10,25 @@ window.onRenderRow = function(row, rowIdx, data) $point.find('.picker-box').on('inited', function(e, info) { - let $picker = info[0]; - let options = $picker.options; - let items = [{text: '', value: ''}]; + let $picker = info[0]; + let options = $picker.options; + let items = [{text: '', value: ''}]; for(let point in ipdStagePoint[$attribute]) { - let $value = ipdStagePoint[$attribute][point]; - items.push({text: $value, value: $value}); + let disabled = false + let $value = ipdStagePoint[$attribute][point]; + let hint = $value; + + /* 如果已经评审过,则置灰不能选。*/ + if(reviewedPoints[$value] !== undefined && reviewedPoints[$value].result) + { + disabled = true; + hint = reviewedPointTip; + } + + items.push({text: $value, value: $value, disabled: disabled, hint: hint}); } - options.items = items; + options.items = items; $picker.render(options); }); @@ -42,6 +52,22 @@ window.onRenderRow = function(row, rowIdx, data) /* 需要等该行所有input元素加载完再执行changeEnabled方法 */ window.waitDom("tr[data-index='" + rowIdx + "'] [data-name='PM'] input", function(){changeEnabled(row.find('[data-name=enabled] [name^=enabled]'));}); } + + window.waitDom("div.picker-multi-selection", function() + { + let selection = row.find('div.picker-multi-selection'); + selection.each(function(index, element) { + /* 获取title。*/ + let $title = $(element).attr('title'); + + /* 如果该评审点以提交评审,则不能取消选择。*/ + if(reviewedPoints[$title] !== undefined && reviewedPoints[$title].result) + { + $(element).attr('title', reviewedPointTip); // 修改title + $(element).find(".picker-deselect-btn").remove(); // 禁用点击事件 + } + }); + }); } if(data != undefined) @@ -90,6 +116,12 @@ window.onRenderRow = function(row, rowIdx, data) } }; +window.checkDeselect = function(point, obj) +{ + console.log(point); + console.log(obj.value); +} + window.onChangeExecutionType = function(event) { loadPage($.createLink('programplan', 'create', `projectID=${projectID}&productID=${productID}&planID=${planID}&type=` + $(event.target).val())); @@ -146,16 +178,8 @@ window.waitDom('td[data-name=milestone]', function() window.changeEnabled = function(obj) { - const $target = $(obj); - const $row = $target.closest('tr'); - const tdItems = $row.find('td'); - const stageID = $row.find('input[name^=id]').val(); - const stageAttr = $row.find('input[name^=attribute]').val(); - const defaultVal = { - 'name' : stageID ? plans[stageID].name : attributeList[stageAttr], - 'begin': stageID ? plans[stageID].begin : project.begin, - 'end' : stageID ? plans[stageID].end : project.end - } + const $target = $(obj); + const tdItems = $target.closest('tr').find('td'); if($target.prop('checked')) { @@ -201,11 +225,6 @@ window.changeEnabled = function(obj) if($(tdItems[item]).find('[data-zui-datepicker]').length) { - if($(tdItems[item]).find('input[name^=begin]').length) $(tdItems[item]).find('input[name^=begin]').zui('datePicker').$.setValue(defaultVal.begin); - if($(tdItems[item]).find('input[name^=end]').length) $(tdItems[item]).find('input[name^=end]').zui('datePicker').$.setValue(defaultVal.end); - - $(tdItems[item]).find('[data-zui-datepicker]').zui('datePicker').render(); - itemValue = $(tdItems[item]).find('[data-zui-datepicker]').zui('datePicker').$.value; itemName = $(tdItems[item]).find('input.pick-value').attr('name'); $(tdItems[item]).append(""); @@ -230,8 +249,6 @@ window.changeEnabled = function(obj) } else if($(tdItems[item]).find('input[type=text]').length) { - if($(tdItems[item]).find('input[name^=name]').length) $(tdItems[item]).find('input[name^=name]').val(defaultVal.name); - $(tdItems[item]).find('input[type=text]').attr('readonly', 'readonly'); } else if($(tdItems[item]).data('name') == 'enabled') diff --git a/module/programplan/lang/de.php b/module/programplan/lang/de.php index 8fe9b58adf..d70e6f3704 100644 --- a/module/programplan/lang/de.php +++ b/module/programplan/lang/de.php @@ -80,6 +80,7 @@ $lang->programplan->checkBegin = '『Begin』should be valid date'; $lang->programplan->checkEnd = '『End』should be valid date'; $lang->programplan->methodTip = "You can choose to continue creating stages or {$lang->executionCommon}/Kanban for work in this stage. It's not supported to further split the {$lang->executionCommon}/Kanban."; $lang->programplan->cropStageTip = "Stages that have already started cannot be cropped"; +$lang->programplan->reviewedPointTip = "The review point has been submitted for review and can no longer be operated."; $lang->programplan->milestoneList[1] = 'Yes'; $lang->programplan->milestoneList[0] = 'No'; diff --git a/module/programplan/lang/en.php b/module/programplan/lang/en.php index c11aabdf30..d620f6ffad 100644 --- a/module/programplan/lang/en.php +++ b/module/programplan/lang/en.php @@ -80,6 +80,7 @@ $lang->programplan->checkBegin = '『Begin』should be valid date'; $lang->programplan->checkEnd = '『End』should be valid date'; $lang->programplan->methodTip = "You can choose to continue creating stages or {$lang->executionCommon}/Kanban for work in this stage. It's not supported to further split the {$lang->executionCommon}/Kanban."; $lang->programplan->cropStageTip = "Stages that have already started cannot be cropped"; +$lang->programplan->reviewedPointTip = "The review point has been submitted for review and can no longer be operated."; $lang->programplan->milestoneList[1] = 'Yes'; $lang->programplan->milestoneList[0] = 'No'; diff --git a/module/programplan/lang/fr.php b/module/programplan/lang/fr.php index 8fe9b58adf..d70e6f3704 100644 --- a/module/programplan/lang/fr.php +++ b/module/programplan/lang/fr.php @@ -80,6 +80,7 @@ $lang->programplan->checkBegin = '『Begin』should be valid date'; $lang->programplan->checkEnd = '『End』should be valid date'; $lang->programplan->methodTip = "You can choose to continue creating stages or {$lang->executionCommon}/Kanban for work in this stage. It's not supported to further split the {$lang->executionCommon}/Kanban."; $lang->programplan->cropStageTip = "Stages that have already started cannot be cropped"; +$lang->programplan->reviewedPointTip = "The review point has been submitted for review and can no longer be operated."; $lang->programplan->milestoneList[1] = 'Yes'; $lang->programplan->milestoneList[0] = 'No'; diff --git a/module/programplan/lang/zh-cn.php b/module/programplan/lang/zh-cn.php index 95c8f8a2e6..cdfd82e060 100644 --- a/module/programplan/lang/zh-cn.php +++ b/module/programplan/lang/zh-cn.php @@ -80,6 +80,7 @@ $lang->programplan->checkBegin = '『计划开始』应当为合法的日 $lang->programplan->checkEnd = '『计划完成』应当为合法的日期'; $lang->programplan->methodTip = "您可以在该阶段下选择继续创建阶段或创建{$lang->executionCommon}/看板进行工作。{$lang->executionCommon}/看板不支持继续拆分。"; $lang->programplan->cropStageTip = "已经开始了的阶段不能再裁剪"; +$lang->programplan->reviewedPointTip = "该评审点已提交评审不能再操作"; $lang->programplan->milestoneList[1] = '是'; $lang->programplan->milestoneList[0] = '否'; diff --git a/module/programplan/ui/create.html.php b/module/programplan/ui/create.html.php index 84ccb86ec7..4757845a54 100644 --- a/module/programplan/ui/create.html.php +++ b/module/programplan/ui/create.html.php @@ -14,8 +14,9 @@ namespace zin; include($this->app->getModuleRoot() . 'ai/ui/inputinject.html.php'); -$fields = $this->config->programplan->form->create; -$enabledPoints = isset($enabledPoints) ? $enabledPoints : new stdclass(); +$fields = $this->config->programplan->form->create; +$enabledPoints = isset($enabledPoints) ? $enabledPoints : new stdclass(); +$reviewedPoints = isset($reviewedPoints) ? $reviewedPoints : array(); /* Generate title that is tailored to specific situation. */ $title = $lang->programplan->create; @@ -245,6 +246,8 @@ jsVar('cropStageTip', $lang->programplan->cropStageTip); jsVar('ipdStagePoint', $config->review->ipdReviewPoint); jsVar('attributeList', $project->model == 'ipd' ? $lang->stage->ipdTypeList : $lang->stage->typeList); jsVar('plans', $plans); +jsvar('reviewedPoints', $reviewedPoints); +jsVar('reviewedPointTip', $lang->programplan->reviewedPointTip); featureBar(li (