* Refactor programplan::edit.

This commit is contained in:
liumengyi
2023-11-16 10:42:02 +08:00
parent ea580be699
commit e2ab161deb
3 changed files with 76 additions and 58 deletions
+43 -21
View File
@@ -8,12 +8,22 @@
function changeParentStage(event)
{
const stageID = parseInt($(event.target).val());
if(stageID == 0) $('#acl').attr('disabled', false);
$('#acl').attr('disabled', true);
$('#acl').attr('disabled', stageID != 0);
$.get($.createLink('programplan', 'ajaxGetAttribute', 'stageID=' + stageID + '&attribute=' + plan.attribute), function(attribute)
$.get($.createLink('programplan', 'ajaxGetStageAttr', 'stageID=' + stageID), function(attribute)
{
$('#attributeType').html(attribute);
var isPicker = $('#attributeType').find('.picker-box').length > 0;
if((attribute.length == 0 || attribute == 'mix') && !isPicker)
{
$('#attributeType').empty().append('<div class="form-group-wrapper picker-box" id="attribute"></div>');
$('#attribute').picker({name: 'attribute', items: stageTypeItems, defaultValue: attribute});
}
if(isPicker && attribute != 'mix' && attribute.length > 0)
{
$('#attributeType').find('[name=attribute]').zui('picker').destroy();
$('#attributeType').find('.picker-box').remove();
$('#attributeType').append('<span>' + stageTypeList[attribute] + '</span>');
}
});
}
@@ -23,31 +33,43 @@ function changeParentStage(event)
*
* @return void
*/
function editStage()
window.editStage = function()
{
if(plan.parent != $('#parent').val() && $('#parent').val() != 0)
var result = true;
var currentParent = $('[name=parent]').val();
if(plan.parent != currentParent && currentParent != 0)
{
var result = true;
$.get($.createLink('programplan', 'ajaxGetStageAttr', 'stageID=' + $('#parent').val()), function(attribute)
result = false;
$.get($.createLink('programplan', 'ajaxGetStageAttr', 'stageID=' + currentParent), function(attribute)
{
if(attribute != 'mix' && plan.attribute != attribute)
{
result = confirm(changeAttrLang.replace('%s', stageTypeList[attribute]));
}
if(attribute != 'mix' && plan.attribute != attribute) zui.Modal.confirm(changeAttrLang.replace('%s', stageTypeList[attribute])).then((res) =>
{
if(res)
{
var $form = $('#editForm');
var formUrl = $form.attr('action');
var formData = new FormData($form[0]);
$.ajaxSubmit({url: formUrl, data: formData});
}
});
});
if(!result) return;
}
var currentAttribute = $('#attribute').val();
var currentParent = $('#parent').val();
var currentAttribute = $('[name=attribute]').val();
var hasChangedAttribute = (currentAttribute && currentAttribute != 'mix' && plan.attribute != currentAttribute);
var hasChangedParent = ((isTopStage && $('#parent').val() != 0) || (!isTopStage && plan.parent != $('#parent').val()));
var hasChangedParent = ((isTopStage && currentParent != 0) || (!isTopStage && plan.parent != currentParent));
if(hasChangedAttribute && !hasChangedParent && !isLeafStage)
{
var result = confirm(changeAttrLang.replace('%s', stageTypeList[currentAttribute]));
if(!result) return;
zui.Modal.confirm(changeAttrLang.replace('%s', stageTypeList[currentAttribute])).then((res) =>
{
if(res)
{
var $form = $('#editForm');
var formUrl = $form.attr('action');
var formData = new FormData($form[0]);
$.ajaxSubmit({url: formUrl, data: formData});
}
});
}
return result;
}
+1 -1
View File
@@ -153,7 +153,7 @@ class programplanTao extends programplanModel
return false;
}
if($projectID) $this->loadModel('execution')->checkBeginAndEndDate($projectID, $plan->begin, $plan->end);
if($projectID) $this->loadModel('execution')->checkBeginAndEndDate($projectID, $plan->begin, $plan->end, $plan->parent);
if(dao::isError()) return false;
$setCode = isset($this->config->setCode) && $this->config->setCode == 1;
+32 -36
View File
@@ -11,9 +11,12 @@ declare(strict_types=1);
*/
namespace zin;
$typeList = $project->model == 'ipd' ? $lang->stage->ipdTypeList : $lang->stage->typeList;
$typeList = $project->model == 'ipd' ? $lang->stage->ipdTypeList : $lang->stage->typeList;
$typeItems = array();
foreach($typeList as $key => $value) $typeItems[] = array('text' => $value, 'value' => $key);
jsVar('plan', $plan);
jsVar('stageTypeList', $typeList);
jsVar('stageTypeItems', $typeItems);
jsVar('changeAttrLang', $lang->programplan->confirmChangeAttr);
jsVar('isTopStage', $isTopStage);
jsVar('isLeafStage', $isLeafStage);
@@ -27,6 +30,8 @@ modalHeader
formPanel
(
set::id('editForm'),
set::ajax(array('beforeSubmit' => jsRaw("editStage"))),
set::submitBtnText($lang->save),
formGroup
(
@@ -49,8 +54,7 @@ formPanel
set::required(true),
input(set::name('name'), set::value($plan->name))
),
isset($config->setCode) && $config->setCode == 1 ?
formGroup
isset($config->setCode) && $config->setCode == 1 ? formGroup
(
set::label($lang->execution->code),
set::width('1/2'),
@@ -91,33 +95,24 @@ formPanel
(
setID('attributeType'),
setClass('flex self-center w-full'),
$enableOptionalAttr ?
select(set(array(
'id' => 'attribute',
'name' => 'attribute',
'items' => $typeList,
'value' => $plan->attribute,
'required' => true
))) : zget($typeList, $plan->attribute)
$enableOptionalAttr ? picker
(
set::id('attribute'),
set::name('attribute'),
set::items($typeList),
set::value($plan->attribute),
set::required(true)
) : zget($typeList, $plan->attribute),
)
),
formGroup
(
btn(set(array(
'icon' => 'help',
'data-toggle' => 'tooltip',
'data-placement' => 'right',
'href' => 'helpTip',
'class' => 'ghost h-8 tooltip-btn'
))),
div
setClass('items-center'),
icon
(
$lang->execution->typeTip,
setClass('w-1/3'),
set(array(
'id' => 'helpTip',
'class' => 'tooltip darker'
))
'help',
toggle::tooltip(array('title' => $lang->execution->typeTip, 'placement' => 'right')),
setClass('ghost ml-1')
)
)
),
@@ -148,7 +143,7 @@ formPanel
(
set::label($lang->project->acl),
set::width('1/2'),
select
picker
(
set::name('acl'),
set::items($lang->execution->aclList),
@@ -157,12 +152,12 @@ formPanel
set::required(true)
)
),
$plan->setMilestone ?
formGroup
$plan->setMilestone ? formGroup
(
set::label($lang->programplan->milestone),
set::width('1/2'),
radioList(
radioList
(
set::name('milestone'),
set::items($lang->programplan->milestoneList),
set::value($plan->milestone),
@@ -174,13 +169,14 @@ formPanel
(
set::label($lang->programplan->output),
set::width('1/2'),
select(set(array(
'name' => 'output[]',
'items' => $documentList,
'value' => $plan->output,
'multiple' => true,
'required' => true
)))
picker
(
set::name('output[]'),
set::items($documentList),
set::value($plan->output),
set::multiple(true),
set::required(true)
)
) : null
);