* Add new block.

This commit is contained in:
Yagami
2020-08-21 10:56:19 +08:00
parent 91f3a21133
commit 9c24b069d6
6 changed files with 104 additions and 5 deletions
+2
View File
@@ -288,3 +288,5 @@ CREATE TABLE `zt_weeklyreport`(
ALTER TABLE `zt_project` ADD `path` varchar(255) NOT NULL AFTER `parent`;
ALTER TABLE `zt_project` ADD `grade` tinyint unsigned NOT NULL AFTER `path`;
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system','custom','','URAndSR','1'),('system','custom','','URSRName','{\"urCommon\":{\"zh-cn\":\"\\u7528\\u6237\\u9700\\u6c42\"},\"srCommon\":{\"zh-cn\":\"\\u8f6f\\u4ef6\\u9700\\u6c42\"}}'),('system','custom','','storyPoint','1');
+23
View File
@@ -699,6 +699,29 @@ class block extends control
->fetchAll();
}
public function printProgramBlock()
{
$this->loadModel('project');
$programs = $this->loadModel('program')->getUserPrograms('all', $this->params->orderBy, $this->params->num);
foreach($programs as $programID => $program)
{
$members = $this->project->getTeamMemberPairs($programID);
$consumed = $this->dao->select('sum(consumed) as consumed')->from(TABLE_TASK)->where('program')->eq($programID)->andWhere('deleted')->eq(0)->andWhere('status')->ne('cancel')->fetch('consumed');
$leftTasks = $this->dao->select('count(*) as leftTasks')->from(TABLE_TASK)->where('program')->eq($programID)->andWhere('deleted')->eq(0)->andWhere('status')->in('wait,doing,pause')->fetch('leftTasks');
$leftStories = $this->dao->select('count(*) as leftStories')->from(TABLE_STORY)->where('program')->eq($programID)->andWhere('deleted')->eq(0)->andWhere('status')->eq('active')->fetch('leftStories');
$leftBugs = $this->dao->select('count(*) as leftBugs')->from(TABLE_BUG)->where('program')->eq($programID)->andWhere('deleted')->eq(0)->andWhere('status')->eq('active')->fetch('leftBugs');
$program->countMembers = count($members) ? count($members) : 0;
$program->consumed = $consumed ? $consumed : 0;
$program->leftTasks = $leftTasks ? $leftTasks : 0;
$program->leftStories = $leftStories ? $leftStories : 0;
$program->leftBugs = $leftBugs ? $leftBugs : 0;
}
$this->view->programs = $programs;
$this->view->users = $this->loadModel('user')->getPairs('noletter');
}
/**
* Print product block.
*
+12 -5
View File
@@ -256,9 +256,16 @@ $lang->block->default['full']['my']['7']['params']['orderBy'] = 'id_desc';
$lang->block->default['full']['my']['7']['params']['num'] = '15';
$lang->block->default['full']['my']['7']['params']['type'] = 'assignedTo';
$lang->block->default['full']['my']['8']['title'] = '项目人力投入';
$lang->block->default['full']['my']['8']['block'] = 'programteam';
$lang->block->default['full']['my']['8']['grid'] = 8;
$lang->block->default['full']['my']['8']['title'] = '项目人力投入';
$lang->block->default['full']['my']['8']['block'] = 'programteam';
$lang->block->default['full']['my']['8']['grid'] = 8;
$lang->block->default['full']['my']['8']['title'] = '项目列表';
$lang->block->default['full']['my']['8']['block'] = 'program';
$lang->block->default['full']['my']['8']['grid'] = 8;
$lang->block->default['full']['my']['8']['params']['orderBy'] = 'id_desc';
$lang->block->default['full']['my']['8']['params']['num'] = '15';
$lang->block->num = '数量';
$lang->block->type = '类型';
@@ -278,15 +285,15 @@ $lang->block->availableBlocks->release = '发布列表';
$lang->block->availableBlocks->build = '版本列表';
$lang->block->availableBlocks->testtask = '测试版本列表';
$lang->block->moduleList['program'] = '项目';
$lang->block->moduleList['product'] = $lang->productCommon;
$lang->block->moduleList['project'] = $lang->projectCommon;
$lang->block->moduleList['qa'] = '测试';
$lang->block->moduleList['todo'] = '待办';
$lang->block->moduleList['program'] = '项目';
$lang->block->modules['program'] = new stdclass();
$lang->block->modules['program']->availableBlocks = new stdclass();
$lang->block->modules['program']->availableBlocks->list = '项目列表';
$lang->block->modules['program']->availableBlocks->scrumoverall = '项目整体情况';
$lang->block->modules['program']->availableBlocks->scrumprogress = '进行中的迭代';
$lang->block->modules['program']->availableBlocks->scrumproject = '迭代总览';
+49
View File
@@ -0,0 +1,49 @@
<?php if(empty($programs)): ?>
<div class='empty-tip'><?php echo $lang->block->emptyTip;?></div>
<?php else:?>
<style>
.block-programs .c-pri {width: 45px;text-align: center;}
.block-programs .c-status {width: 80px;}
</style>
<div class='panel-body has-table scrollbar-hover'>
<table class='table table-borderless table-hover table-fixed table-fixed-head tablesorter block-programs <?php if(!$longBlock) echo 'block-sm';?>'>
<thead>
<tr>
<th class='c-name'><?php echo $lang->program->name;?></th>
<th class='w-100px'> <?php echo $lang->program->PM;?></th>
<th class='w-80px'><?php echo $lang->program->status;?></th>
<?php if($longBlock):?>
<th class='w-80px'><?php echo $lang->program->countMembers;?></th>
<th class='w-80px'><?php echo $lang->task->consumed;?></th>
<th class='w-100px'><?php echo $lang->program->budget;?></th>
<th class='w-80px'><?php echo $lang->program->leftStories;?></th>
<th class='w-80px'><?php echo $lang->program->leftTasks;?></th>
<th class='w-80px'><?php echo $lang->program->leftBugs;?></th>
<?php endif;?>
</tr>
</thead>
<tbody>
<?php foreach($programs as $program):?>
<?php
$viewLink = $this->createLink('program', 'index', "programID={$program->id}");
?>
<tr>
<td title='<?php echo $program->name?>'><?php echo html::a($viewLink, $program->name);?></td>
<td><?php echo zget($users, $program->PM, $program->PM)?></td>
<td class='c-status'>
<span class="status-program status-<?php echo $program->status?>"><?php echo zget($lang->project->statusList, $program->status);?></span>
</td>
<?php if($longBlock):?>
<td><?php echo $program->countMembers;?></td>
<td><?php echo $program->consumed;?></td>
<td><?php echo $program->budget . ' ' . zget($lang->program->unitList, $program->budgetUnit);?></td>
<td><?php echo $program->leftStories;?></td>
<td><?php echo $program->leftTasks;?></td>
<td><?php echo $program->leftBugs;?></td>
<?php endif;?>
</tr>
<?php endforeach;?>
</tbody>
</table>
</div>
<?php endif;?>
+4
View File
@@ -47,6 +47,10 @@ $lang->program->setPlanduration = '设置工期';
$lang->program->privway = '权限控制';
$lang->program->durationEstimation = '工作量估算';
$lang->program->progress = '项目进度';
$lang->program->countMembers = '投入人数';
$lang->program->leftStories = '剩余需求';
$lang->program->leftTasks = '剩余任务';
$lang->program->leftBugs = '剩余Bug';
$lang->program->unitList[''] = '';
$lang->program->unitList['yuan'] = '元';
+14
View File
@@ -41,6 +41,20 @@ class programModel extends model
->fetchPairs();
}
public function getUserPrograms($status = 'all', $orderBy = 'id_desc', $limit = 15)
{
return $this->dao->select('*')->from(TABLE_PROJECT)
->where('iscat')->eq(0)
->andWhere('template')->ne('')
->andWhere('program')->eq(0)
->andWhere('deleted')->eq(0)
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->programs)->fi()
->beginIF($status != 'all')->andWhere('status')->eq($status)->fi()
->orderBy($orderBy)
->limit($limit)
->fetchAll('id');
}
/**
* Show accessDenied response.
*