This commit is contained in:
zhouxudong
2022-06-29 09:00:33 +00:00
parent 62fc297642
commit 461235a048
10 changed files with 66 additions and 29 deletions

View File

@@ -77,6 +77,21 @@ $(function()
}
}
function debounce(fn,delay)
{
var timer = null;
return function()
{
if(timer) clearTimeout(timer);
timer = setTimeout(fn,delay)
}
}
function updateStatistic()
{
debounce(addStatistic(), 200)
}
$('#productTableList').on('click', '.row-program,.row-line', function(e)
{
if($(e.target).closest('.table-nest-toggle,a').length) return;
@@ -96,7 +111,7 @@ $(function()
{
updatePrarentCheckbox($('#productTableList>tr[data-id="' + parentID + '"]'));
}
addStatistic()
updateStatistic()
});
$('#productListForm').on('checkChange', updateCheckboxes);
@@ -104,7 +119,7 @@ $(function()
$(":checkbox[name^='productIDList']").on('click', function()
{
addStatistic()
updateStatistic()
});
$(".check-all").on('click', function()
@@ -117,6 +132,6 @@ $(function()
{
$(":checkbox[name^='productIDList']").prop('checked', true);
}
addStatistic()
updateStatistic()
});
});

View File

@@ -47,6 +47,7 @@ $lang->program->realDuration = 'RealDuration';
$lang->program->openedVersion = 'OpenedVersion';
$lang->program->lastEditedBy = 'LastEditedBy';
$lang->program->lastEditedDate = 'LastEditedDate';
$lang->program->childProgram = 'Child Program';
/* Actions. */
$lang->program->common = 'Program';
@@ -101,8 +102,8 @@ $lang->program->tips = 'If a parent program is selected, the produ
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->beginLetterParent = 'The start date of the program "%s" should be ≥ the start date of the parent program "%s": %s.';
$lang->program->endGreaterParent = 'The finish date of the program "%s" should be ≤ the finish date of the parent program "%s": %s.';
$lang->program->beginGreateChild = 'The start date of the parent program "%s" should be ≤the minimum start time of the subprogram "%s": %s.';
$lang->program->endLetterChild = 'The finish time of the parent program "%s" should be ≥ the maximum finish time of the subprogram "%s": %s.';
$lang->program->beginGreateChild = 'The start date of the parent program "%s" should be ≤the minimum start time of the %s "%s": %s.';
$lang->program->endLetterChild = 'The finish time of the parent program "%s" should be ≥ the maximum finish time of the %s "%s": %s.';
$lang->program->closeErrorMessage = 'There are subprograms or projects that are not closed';
$lang->program->hasChildren = 'It has child programs or projects. You cannot delete it.';
$lang->program->hasProduct = 'It has products. You cannot delete it.';

View File

@@ -47,6 +47,7 @@ $lang->program->realDuration = 'RealDuration';
$lang->program->openedVersion = 'OpenedVersion';
$lang->program->lastEditedBy = 'LastEditedBy';
$lang->program->lastEditedDate = 'LastEditedDate';
$lang->program->childProgram = 'Child Program';
/* Actions. */
$lang->program->common = 'Program';
@@ -101,8 +102,8 @@ $lang->program->tips = 'If a parent program is selected, the produ
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->beginLetterParent = 'The start date of the program "%s" should be ≥ the start date of the parent program "%s": %s.';
$lang->program->endGreaterParent = 'The finish date of the program "%s" should be ≤ the finish date of the parent program "%s": %s.';
$lang->program->beginGreateChild = 'The start date of the parent program "%s" should be ≤the minimum start time of the subprogram "%s": %s.';
$lang->program->endLetterChild = 'The finish time of the parent program "%s" should be ≥ the maximum finish time of the subprogram "%s": %s.';
$lang->program->beginGreateChild = 'The start date of the parent program "%s" should be ≤the minimum start time of the %s "%s": %s.';
$lang->program->endLetterChild = 'The finish time of the parent program "%s" should be ≥ the maximum finish time of the %s "%s": %s.';
$lang->program->closeErrorMessage = 'There are subprograms or projects that are not closed';
$lang->program->hasChildren = 'The program has a child program or the project exists and can not be deleted.';
$lang->program->hasProduct = 'The program has products exist and can not be deleted.';

View File

@@ -47,6 +47,7 @@ $lang->program->realDuration = 'RealDuration';
$lang->program->openedVersion = 'OpenedVersion';
$lang->program->lastEditedBy = 'LastEditedBy';
$lang->program->lastEditedDate = 'LastEditedDate';
$lang->program->childProgram = 'sous-programme';
/* Actions. */
$lang->program->common = 'Program';
@@ -101,8 +102,8 @@ $lang->program->tips = 'If a parent program is selected, the produ
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->beginLetterParent = 'La date de début du programme "%s" doit être ≥ à la date de début du programme parent "%s" : %s.';
$lang->program->endGreaterParent = 'La date de fin du programme "%s" doit être ≤ à la date de fin du programme parent "%s" : %s.';
$lang->program->beginGreateChild = 'La date de début du programme parent "%s" doit être ≤ à la date de début minimum du sous-programme "%s" : %s.';
$lang->program->endLetterChild = 'Le temps de fin du programme parent "%s" doit être ≥ au temps de fin maximum du sous-programme "%s" : %s.';
$lang->program->beginGreateChild = 'La date de début du programme parent "%s" doit être ≤ à la date de début minimum du %s "%s" : %s.';
$lang->program->endLetterChild = 'Le temps de fin du programme parent "%s" doit être ≥ au temps de fin maximum du %s "%s" : %s.';
$lang->program->closeErrorMessage = 'There are subprograms or projects that are not closed';
$lang->program->hasChildren = 'It has child programs or projects. You cannot delete it.';
$lang->program->hasProduct = 'It has products. You cannot delete it.';

View File

@@ -47,6 +47,7 @@ $lang->program->realDuration = '实际周期天数';
$lang->program->openedVersion = '创建版本';
$lang->program->lastEditedBy = '最后编辑人';
$lang->program->lastEditedDate = '最后编辑日期';
$lang->program->childProgram = '子项目集';
/* Actions. */
$lang->program->common = '项目集';
@@ -101,8 +102,8 @@ $lang->program->tips = '选择了父项目集,则可关联该父
$lang->program->confirmBatchUnlink = "您确定要批量移除这些干系人吗?";
$lang->program->beginLetterParent = '项目集“%s”开始日期应大于等于父项目集“%s”的开始日期%s。';
$lang->program->endGreaterParent = '项目集“%s”完成日期应小于等于父项目集“%s”的完成日期%s。';
$lang->program->beginGreateChild = '父项目集“%s”的开始日期应小于等于子项目集“%s”的最小开始时间%s。';
$lang->program->endLetterChild = '父项目集“%s”的完成时间应大于等于子项目集“%s”的最大完成时间%s。';
$lang->program->beginGreateChild = '父项目集“%s”的开始日期应小于等于%s“%s”的最小开始时间%s。';
$lang->program->endLetterChild = '父项目集“%s”的完成时间应大于等于%s“%s”的最大完成时间%s。';
$lang->program->closeErrorMessage = '存在子项目集或项目为未关闭状态';
$lang->program->hasChildren = '该项目集有子项目集或项目存在,不能删除。';
$lang->program->hasProduct = '该项目集有产品存在,不能删除。';

View File

@@ -772,6 +772,7 @@ class programModel extends model
*/
public function update($programID)
{
$this->app->loadLang('project');
$programID = (int)$programID;
$oldProgram = $this->dao->findById($programID)->from(TABLE_PROGRAM)->fetch();
@@ -799,11 +800,13 @@ class programModel extends model
if($children > 0)
{
$minChildBegin = $this->dao->select('name, min(begin) as minBegin')->from(TABLE_PROGRAM)->where('id')->ne($programID)->andWhere('deleted')->eq(0)->andWhere('path')->like("%,{$programID},%")->fetch();
$maxChildEnd = $this->dao->select('name, max(end) as maxEnd')->from(TABLE_PROGRAM)->where('id')->ne($programID)->andWhere('deleted')->eq(0)->andWhere('path')->like("%,{$programID},%")->andWhere('end')->ne('0000-00-00')->fetch();
$minChildBegin = $this->dao->select('name, type, begin as minBegin')->from(TABLE_PROGRAM)->where('id')->ne($programID)->andWhere('deleted')->eq(0)->andWhere('path')->like("%,{$programID},%")->orderBy('begin_asc')->fetch();
$maxChildEnd = $this->dao->select('name, type, end as maxEnd')->from(TABLE_PROGRAM)->where('id')->ne($programID)->andWhere('deleted')->eq(0)->andWhere('path')->like("%,{$programID},%")->andWhere('end')->ne('0000-00-00')->orderBy('end_desc')->fetch();
if($minChildBegin and $program->begin > $minChildBegin) dao::$errors['begin'] = sprintf($this->lang->program->beginGreateChild, $program->name, $minChildBegin->name, $minChildBegin->minBegin);
if($maxChildEnd and $program->end < $maxChildEnd and $this->post->delta != 999) dao::$errors['end'] = sprintf($this->lang->program->endLetterChild, $program->name, $maxChildEnd->name, $maxChildEnd->maxEnd);
$minChildType = ($minChildBegin->type == 'project') ? $this->lang->project->common : $this->lang->program->childProgram;
$maxChildType = ($maxChildEnd->type == 'project') ? $this->lang->project->common : $this->lang->program->childProgram;
if($minChildBegin and $program->begin > $minChildBegin->minBegin) dao::$errors['begin'] = sprintf($this->lang->program->beginGreateChild, $program->name, $minChildType, $minChildBegin->name, $minChildBegin->minBegin);
if($maxChildEnd and $program->end < $maxChildEnd->maxEnd and $this->post->delta != 999) dao::$errors['end'] = sprintf($this->lang->program->endLetterChild, $program->name, $maxChildType, $maxChildEnd->name, $maxChildEnd->maxEnd);
if(dao::isError()) return false;
}

View File

@@ -65,7 +65,7 @@ $lang->project->budgetGe0 = '『Budget』must be greater than or equal
$lang->project->allProjects = 'All Projects';
/* Fields. */
$lang->project->common = 'Program';
$lang->project->common = 'Project';
$lang->project->id = 'ID';
$lang->project->project = 'Project';
$lang->project->stage = 'Stage';

View File

@@ -65,7 +65,7 @@ $lang->project->budgetGe0 = '『Budget』must be greater than or equal
$lang->project->allProjects = 'All Projects';
/* Fields. */
$lang->project->common = 'Project';
$lang->project->common = 'Projets';
$lang->project->id = 'ID';
$lang->project->project = 'Project';
$lang->project->stage = 'Stage';

View File

@@ -310,18 +310,20 @@ $lang->project->programTitle['end'] = '只显示最后一级项目集';
$lang->project->accessDenied = '您无权访问该项目!';
$lang->project->chooseProgramType = '选择项目管理方式';
$lang->project->cannotCreateChild = '该项目已经有实际的内容,无法直接添加子项目。您可以为当前项目创建一个父项目,然后在新的父项目下面添加子项目。';
$lang->project->hasChildren = '该项目有子项目存在,不能删除。';
$lang->project->confirmDelete = '您确定删除项目“%s”吗';
$lang->project->cannotChangeToCat = "该项目已经有实际的内容,无法修改为父项目";
$lang->project->cannotCancelCat = "该项目下已经有子项目,无法取消父项目标记";
$lang->project->parentBeginEnd = "父项目起止时间:%s ~ %s";
$lang->project->parentBudget = "父项目预算:";
$lang->project->beginLetterParent = "父项目的开始日期:%s开始日期不能小于父项目的开始日期";
$lang->project->endGreaterParent = "父项目的完成日期:%s完成日期不能大于父项目的完成日期";
$lang->project->beginGreateChild = '项目“%s”的开始日期应大于等于项目集“%s”的最小开始日期%s';
$lang->project->endLetterChild = '项目“%s”的完成日期应小于等于项目集“%s”的最大完成日期%s';
$lang->project->childLongTime = "子项目中有长期项目,父项目也应该是长期项目";
$lang->project->confirmUnlinkMember = "您确定从该项目中移除该用户吗?";
$lang->project->hasChildren = '该项目有子项目存在,不能删除。';
$lang->project->confirmDelete = '您确定删除项目“%s”吗';
$lang->project->cannotChangeToCat = "该项目已经有实际的内容,无法修改为父项目";
$lang->project->cannotCancelCat = "该项目下已经有子项目,无法取消父项目标记";
$lang->project->parentBeginEnd = "父项目起止时间:%s ~ %s";
$lang->project->parentBudget = "父项目预算:";
$lang->project->beginLetterParent = "父项目的开始日期:%s开始日期不能小于父项目的开始日期";
$lang->project->endGreaterParent = "父项目的完成日期:%s完成日期不能大于父项目的完成日期";
$lang->project->beginGreateChild = '项目“%s”的开始日期应大于等于项目集“%s”的最小开始日期%s';
$lang->project->endLetterChild = '项目“%s”的完成日期应小于等于项目集“%s”的最大完成日期%s';
$lang->project->begigLetterExecution = '项目“%s”的开始日期应小于等于执行“%s”的最小开始日期%s';
$lang->project->endGreateExecution = '项目“%s”的完成日期应大于等于执行“%s”的最大完成日期%s';
$lang->project->childLongTime = "子项目中有长期项目,父项目也应该是长期项目";
$lang->project->confirmUnlinkMember = "您确定从该项目中移除该用户吗?";
$lang->project->action = new stdclass();
$lang->project->action->managed = '$date, 由 <strong>$actor</strong> 维护。$extra' . "\n";

View File

@@ -1375,6 +1375,19 @@ class projectModel extends model
}
}
$executions = $this->dao->select('*')->from(TABLE_PROJECT)
->where('project')->eq($project->id)
->andWhere('deleted')->eq('0')
->fetch();
if(!empty($executions))
{
$minExecutionBegin = $this->dao->select('name, begin as minBegin')->from(TABLE_PROJECT)->where('project')->eq($project->id)->andWhere('deleted')->eq('0')->orderBy('begin_asc')->fetch();
$maxExecutionEnd = $this->dao->select('name, end as maxEnd')->from(TABLE_PROJECT)->where('project')->eq($project->id)->andWhere('deleted')->eq('0')->orderBy('end_desc')->fetch();
if($minExecutionBegin and $project->begin > $minExecutionBegin->minBegin) dao::$errors['begin'] = sprintf($this->lang->project->begigLetterExecution, $project->name, $minExecutionBegin->name, $minExecutionBegin->minBegin);
if($maxExecutionEnd and $project->end < $maxExecutionEnd->maxEnd) dao::$errors['end'] = sprintf($this->lang->project->endGreateExecution, $project->name, $maxExecutionEnd->name, $maxExecutionEnd->maxEnd);
if(dao::isError()) return false;
}
/* Judge products not empty. */
$linkedProductsCount = 0;
foreach($_POST['products'] as $product)