From e2378b2dded940ac0aff92ba9ef95269988d1d8b Mon Sep 17 00:00:00 2001
From: Yagami <976204163@qq.com>
Date: Tue, 18 Aug 2020 10:38:30 +0800
Subject: [PATCH] * Add risk browse method.
---
config/zentaopms.php | 2 +-
module/risk/config.php | 6 +++
module/risk/control.php | 36 +++++++++++++-
module/risk/lang/zh-cn.php | 49 +++++++++++++++++++
module/risk/model.php | 83 ++++++++++++++++++++++++++++++++
module/risk/view/browse.html.php | 49 ++++++++++++++++++-
module/risk/view/create.html.php | 56 ++++++++++++++++-----
7 files changed, 265 insertions(+), 16 deletions(-)
create mode 100644 module/risk/config.php
create mode 100644 module/risk/model.php
diff --git a/config/zentaopms.php b/config/zentaopms.php
index 174295fd54..7043664e3c 100644
--- a/config/zentaopms.php
+++ b/config/zentaopms.php
@@ -197,7 +197,7 @@ if(!defined('TABLE_LANG')) define('TABLE_LANG', '`' . $config->db->prefix
if(!defined('TABLE_STAGE')) define('TABLE_STAGE', '`' . $config->db->prefix . 'stage`');
if(!defined('TABLE_DESIGN')) define('TABLE_DESIGN', '`' . $config->db->prefix . 'design`');
if(!defined('TABLE_DESIGNSPEC')) define('TABLE_DESIGNSPEC', '`' . $config->db->prefix . 'designspec`');
-if(!defined('TABLE_RISK')) define('TABLE_DESIGN', '`' . $config->db->prefix . 'risk`');
+if(!defined('TABLE_RISK')) define('TABLE_RISK', '`' . $config->db->prefix . 'risk`');
$config->objectTables['product'] = TABLE_PRODUCT;
$config->objectTables['story'] = TABLE_STORY;
diff --git a/module/risk/config.php b/module/risk/config.php
new file mode 100644
index 0000000000..0d291eb4dc
--- /dev/null
+++ b/module/risk/config.php
@@ -0,0 +1,6 @@
+risk->editor = new stdclass();
+$config->risk->editor->create = array('id' => 'prevention,remedy', 'tools' => 'simpleTools');
+
+$config->risk->create = new stdclass();
+$config->risk->create->requiredFields = 'name';
diff --git a/module/risk/control.php b/module/risk/control.php
index 4666fcb6ed..e1738553c7 100644
--- a/module/risk/control.php
+++ b/module/risk/control.php
@@ -1,13 +1,47 @@
app->loadClass('pager', $static = true);
+ if($this->app->getViewType() == 'mhtml') $recPerPage = 10;
+ $pager = pager::init($recTotal, $recPerPage, $pageID);
+
+ $this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->browse;
+ $this->view->position[] = $this->lang->risk->browse;
+ $this->view->risks = $this->risk->getList($orderBy, $pager);
+ $this->view->orderBy = $orderBy;
+ $this->view->pager = $pager;
+ $this->view->users = $this->loadModel('user')->getPairs('noletter');
+
$this->display();
}
public function create()
{
+ if($_POST)
+ {
+ $riskID = $this->risk->create();
+
+ $response['result'] = 'success';
+ $response['message'] = $this->lang->saveSuccess;
+ if(!$riskID)
+ {
+ $response['result'] = 'fail';
+ $response['message'] = dao::getError();
+ $this->send($response);
+ }
+
+ $this->loadModel('action')->create('risk', $riskID, 'Opened');
+ $response['locate'] = inlink('browse');
+ $this->send($response);
+ }
+
+ $this->view->users = $this->loadModel('user')->getPairs();
+ $this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->create;
+ $this->view->position[] = $this->lang->risk->create;
+
$this->display();
}
}
diff --git a/module/risk/lang/zh-cn.php b/module/risk/lang/zh-cn.php
index 01502d9c05..c896269347 100644
--- a/module/risk/lang/zh-cn.php
+++ b/module/risk/lang/zh-cn.php
@@ -5,17 +5,66 @@ $lang->risk->create = '添加风险';
$lang->risk->browse = '浏览列表';
/* Fields */
+$lang->risk->common = '风险';
$lang->risk->source = '来源';
+$lang->risk->id = '编号';
$lang->risk->name = '风险名称';
$lang->risk->category = '类型';
$lang->risk->strategy = '策略';
+$lang->risk->status = '状态';
$lang->risk->impact = '影响程度';
$lang->risk->probability = '发生概率';
$lang->risk->riskindex = '风险系数';
$lang->risk->pri = '优先级';
$lang->risk->prevention = '处理措施';
$lang->risk->remedy = '应急措施';
+$lang->risk->identifiedDate = '识别日期';
$lang->risk->plannedClosedDate = '计划关闭日期';
$lang->risk->assignedTo = '指派给';
$lang->risk->createdBy = '由谁创建';
$lang->risk->createdDate = '创建日期';
+
+$lang->risk->sourceList[''] = '';
+$lang->risk->sourceList['business'] = '业务部门';
+$lang->risk->sourceList['team'] = '项目组';
+$lang->risk->sourceList['logistic'] = '项目保障科室';
+$lang->risk->sourceList['manage'] = '管理层';
+$lang->risk->sourceList['sourcing'] = '供应商-采购';
+$lang->risk->sourceList['outsourcing'] = '供应商-外包';
+$lang->risk->sourceList['customer'] = '外部客户';
+$lang->risk->sourceList['others'] = '其他';
+
+$lang->risk->categoryList[''] = '';
+$lang->risk->categoryList['technical'] = '技术类';
+$lang->risk->categoryList['manage'] = '管理类';
+$lang->risk->categoryList['business'] = '业务类';
+$lang->risk->categoryList['requirement'] = '需求类';
+$lang->risk->categoryList['resource'] = '资源类';
+$lang->risk->categoryList['others'] = '其他';
+
+$lang->risk->impactList[1] = 1;
+$lang->risk->impactList[2] = 2;
+$lang->risk->impactList[3] = 3;
+$lang->risk->impactList[4] = 4;
+$lang->risk->impactList[5] = 5;
+
+$lang->risk->probabilityList[1] = 1;
+$lang->risk->probabilityList[2] = 2;
+$lang->risk->probabilityList[3] = 3;
+$lang->risk->probabilityList[4] = 4;
+$lang->risk->probabilityList[5] = 5;
+
+$lang->risk->priList['high'] = '高';
+$lang->risk->priList['middle'] = '中';
+$lang->risk->priList['low'] = '低';
+
+$lang->risk->statusList['active'] = '开放';
+$lang->risk->statusList['closed'] = '关闭';
+$lang->risk->statusList['hangup'] = '挂起';
+$lang->risk->statusList['canceled'] = '取消';
+
+$lang->risk->strategyList[''] = '';
+$lang->risk->strategyList['avoidance'] = '规避';
+$lang->risk->strategyList['mitigation'] = '缓解';
+$lang->risk->strategyList['transference'] = '转移';
+$lang->risk->strategyList['acceptance'] = '接受';
diff --git a/module/risk/model.php b/module/risk/model.php
new file mode 100644
index 0000000000..3f43816da1
--- /dev/null
+++ b/module/risk/model.php
@@ -0,0 +1,83 @@
+add('program', $this->session->program)
+ ->add('createdBy', $this->app->user->account)
+ ->add('createdDate', helper::today())
+ ->stripTags($this->config->risk->editor->create['id'], $this->config->allowedTags)
+ ->remove('uid')
+ ->get();
+
+ $risk = $this->loadModel('file')->processImgURL($risk, $this->config->risk->editor->create['id'], $this->post->uid);
+ $this->dao->insert(TABLE_RISK)->data($risk)->autoCheck()->batchCheck($this->config->risk->create->requiredFields, 'notempty')->exec();
+
+ if(!dao::isError()) return $this->dao->lastInsertID();
+ return false;
+ }
+
+ public function batchCreate()
+ {
+ $data = fixer::input('post')->get();
+
+ $this->loadModel('action');
+ foreach($data->name as $i => $name)
+ {
+ if(!$name) continue;
+
+ $risk = new stdclass();
+ $risk->name = $name;
+ $risk->percent = $data->percent[$i];
+ $risk->type = $data->type[$i];
+ $risk->createdBy = $this->app->user->account;
+ $risk->createdDate = helper::today();
+
+ $this->dao->insert(TABLE_RISK)->data($risk)->autoCheck()->exec();
+
+ $riskID = $this->dao->lastInsertID();
+ $this->action->create('risk', $riskID, 'Opened');
+ }
+
+ return true;
+ }
+
+ public function update($riskID)
+ {
+ $oldStage = $this->dao->select('*')->from(TABLE_RISK)->where('id')->eq((int)$riskID)->fetch();
+
+ $risk = fixer::input('post')
+ ->add('editedBy', $this->app->user->account)
+ ->add('editedDate', helper::today())
+ ->get();
+
+ $this->dao->update(TABLE_RISK)->data($risk)->autoCheck()->where('id')->eq((int)$riskID)->exec();
+
+ if(!dao::isError()) return common::createChanges($oldStage, $risk);
+ return false;
+ }
+
+ public function getList($orderBy = 'id_desc', $pager = null)
+ {
+ return $this->dao->select('*')->from(TABLE_RISK)
+ ->where('deleted')->eq(0)
+ ->andWhere('program')->eq($this->session->program)
+ ->orderBy($orderBy)
+ ->page($pager)
+ ->fetchAll('id');
+ }
+
+ public function getPairs()
+ {
+ return $this->dao->select('id, name')->from(TABLE_RISK)
+ ->where('deleted')->eq(0)
+ ->andWhere('program')->eq($this->session->program)
+ ->fetchPairs();
+ }
+
+ public function getByID($riskID)
+ {
+ return $this->dao->select('*')->from(TABLE_RISK)->where('id')->eq((int)$riskID)->fetch();
+ }
+}
diff --git a/module/risk/view/browse.html.php b/module/risk/view/browse.html.php
index ea5761647e..6de9fbfbc8 100644
--- a/module/risk/view/browse.html.php
+++ b/module/risk/view/browse.html.php
@@ -9,5 +9,52 @@
" . $lang->risk->create, '', "class='btn btn-primary'");?>
+
+
+
+
+ noData;?>
+
+ createLink('risk', 'create'), " " . $lang->risk->create, '', "class='btn btn-info'");?>
+
+
+
+
+
+ recTotal}&recPerPage={$pager->recPerPage}";?>
+
+
+ | risk->id);?> |
+ risk->name);?> |
+ risk->strategy);?> |
+ risk->status);?> |
+ risk->identifiedDate);?> |
+ risk->riskindex);?> |
+ risk->pri);?> |
+ risk->assignedTo);?> |
+ risk->category);?> |
+ actions;?> |
+
+
+
+
+
+ | id);?> |
+ name;?> |
+ risk->strategyList, $risk->strategy);?> |
+ risk->statusList, $risk->status);?> |
+ identifiedDate;?> |
+ riskindex;?> |
+ risk->priList, $risk->pri)?> |
+ assignedTo);?> |
+ risk->categoryList, $risk->category);?> |
+ |
+
+
+
+
+
+
+
-
diff --git a/module/risk/view/create.html.php b/module/risk/view/create.html.php
index 0f6850953c..112f830e70 100644
--- a/module/risk/view/create.html.php
+++ b/module/risk/view/create.html.php
@@ -1,4 +1,5 @@
+