From 984e782595849f6675154e7858e935676dee985e Mon Sep 17 00:00:00 2001 From: leiyong <1549684884@qq.com> Date: Wed, 14 Oct 2020 10:37:41 +0800 Subject: [PATCH] * Finish task#8117. --- module/dept/model.php | 12 +++++++ module/personnel/config.php | 23 ++++++------ module/personnel/control.php | 43 ++++++++++++++--------- module/personnel/js/accessible.js | 2 ++ module/personnel/model.php | 38 ++++++++++++++++++++ module/personnel/view/accessible.html.php | 33 +++++++++++++---- module/program/model.php | 3 ++ 7 files changed, 119 insertions(+), 35 deletions(-) create mode 100644 module/personnel/js/accessible.js diff --git a/module/dept/model.php b/module/dept/model.php index 82d79b05ab..041dcef4aa 100644 --- a/module/dept/model.php +++ b/module/dept/model.php @@ -25,6 +25,18 @@ class deptModel extends model return $this->dao->findById($deptID)->from(TABLE_DEPT)->fetch(); } + /** + * Get all department names. + * + * @param int $deptID + * @access public + * @return object + */ + public function getDeptPairs($deptID = 0) + { + return $this->dao->select('id,name')->from(TABLE_DEPT)->fetchPairs('id', 'name'); + } + /** * Build the query. * diff --git a/module/personnel/config.php b/module/personnel/config.php index 9c26497ae4..88670b20a3 100644 --- a/module/personnel/config.php +++ b/module/personnel/config.php @@ -1,16 +1,15 @@ personnel->accessible = new stdClass(); -$config->personnel->accessible->search['module'] = 'accessible'; -$config->personnel->accessible->search['fields']['department'] = $lang->personnel->department; -$config->personnel->accessible->search['fields']['realName'] = $lang->personnel->realName; -$config->personnel->accessible->search['fields']['userName'] = $lang->personnel->userName; -$config->personnel->accessible->search['fields']['job'] = $lang->personnel->job; -$config->personnel->accessible->search['fields']['genders'] = $lang->personnel->genders; +$config->personnel->accessible->search['module'] = 'accessible'; +$config->personnel->accessible->search['fields']['realname'] = $lang->personnel->realName; +$config->personnel->accessible->search['fields']['dept'] = $lang->personnel->department; +$config->personnel->accessible->search['fields']['role'] = $lang->personnel->job; +$config->personnel->accessible->search['fields']['account'] = $lang->personnel->userName; +$config->personnel->accessible->search['fields']['gender'] = $lang->personnel->genders; -$config->personnel->accessible->search['params']['department'] = array('operator' => '=', 'control' => 'input', 'values' => ''); -$config->personnel->accessible->search['params']['realName'] = array('operator' => '=', 'control' => 'input', 'values' => ''); -$config->personnel->accessible->search['params']['userName'] = array('operator' => '=', 'control' => 'input', 'values' => ''); -$config->personnel->accessible->search['params']['job'] = array('operator' => '=', 'control' => 'input', 'values' => ''); -$config->personnel->accessible->search['params']['genders'] = array('operator' => '=', 'control' => 'input', 'values' => ''); +$config->personnel->accessible->search['params']['dept'] = array('operator' => '=', 'control' => 'select', 'values' => ''); +$config->personnel->accessible->search['params']['realname'] = array('operator' => '=', 'control' => 'input', 'values' => ''); +$config->personnel->accessible->search['params']['account'] = array('operator' => '=', 'control' => 'input', 'values' => ''); +$config->personnel->accessible->search['params']['role'] = array('operator' => '=', 'control' => 'select', 'values' => ''); +$config->personnel->accessible->search['params']['gender'] = array('operator' => '=', 'control' => 'select', 'values' => ''); diff --git a/module/personnel/control.php b/module/personnel/control.php index 6936d26b83..217ac5006a 100644 --- a/module/personnel/control.php +++ b/module/personnel/control.php @@ -16,16 +16,19 @@ class personnel extends control * * @param int $programID * @param int $deptID - * @param string $orderBy + * @param string $browseType + * @param int $param + * @param int $orderBy * @param int $recTotal * @param int $recPerPage - * @param int $deptID + * @param int $pageID * @access public * @return void */ - public function accessible($programID = 0, $deptID = 0, $browseType='browse', $param = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1) + public function accessible($programID = 0, $deptID = 0, $browseType='browse', $param = 0, $orderBy = 't2.id_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1) { $this->loadModel('program'); + $this->app->loadLang('user'); $this->lang->navGroup->program = 'program'; $this->lang->program->switcherMenu = $this->program->getPGMCommonAction() . $this->program->getPGMSwitcher($programID); $this->program->setPGMViewMenu($programID); @@ -35,24 +38,32 @@ class personnel extends control $pager = pager::init($recTotal, $recPerPage, $pageID); /* Build the search form. */ - $queryID = $browseType == 'browse' ? 0 : (int)$param; - $actionURL = $this->createLink('personnel', 'accessible', "pargramID=$programID&deptID=$deptID¶m=myQueryID&type=bysearch"); + $queryID = $browseType == 'bysearch' ? (int)$param : 0; + $actionURL = $this->createLink('personnel', 'accessible', "pargramID=$programID&deptID=$deptID&browseType=bysearch&quertID=myQueryID"); + $deptList = $this->loadModel('dept')->getDeptPairs($deptID); + $this->config->personnel->accessible->search['params']['dept']['values'] = $deptList; + $this->config->personnel->accessible->search['params']['role']['values'] = $this->lang->user->roleList; + $this->config->personnel->accessible->search['params']['gender']['values'] = $this->lang->user->genderList; $this->personnel->buildSearchForm($queryID, $actionURL); + $personnelList = $this->personnel->getAccessiblePersonnel($programID, $deptID, $browseType, $orderBy, $queryID, $pager); + $this->view->title = $this->lang->personnel->accessible; $this->view->position[] = $this->lang->personnel->accessible; - $this->view->deptID = $deptID; - $this->view->programID = $programID; - $this->view->orderBy = $orderBy; - $this->view->recTotal = $recTotal; - $this->view->recPerPage = $recPerPage; - $this->view->pageID = $pageID; - $this->view->pager = $pager; - $this->view->param = $param; - $this->view->browseType = $browseType; - $this->view->dept = $this->loadModel('dept')->getByID($deptID); - $this->view->deptTree = $this->personnel->getTreeMenu($deptID = 0, array('personnelModel', 'createMemberLink'), $programID); + $this->view->deptID = $deptID; + $this->view->programID = $programID; + $this->view->recTotal = $recTotal; + $this->view->recPerPage = $recPerPage; + $this->view->pageID = $pageID; + $this->view->pager = $pager; + $this->view->param = $param; + $this->view->orderBy = $orderBy; + $this->view->browseType = $browseType; + $this->view->personnelList = $personnelList; + $this->view->dept = $this->dept->getByID($deptID); + $this->view->deptList = $deptList; + $this->view->deptTree = $this->personnel->getTreeMenu($deptID = 0, array('personnelModel', 'createMemberLink'), $programID); $this->display(); } diff --git a/module/personnel/js/accessible.js b/module/personnel/js/accessible.js new file mode 100644 index 0000000000..d49d16d017 --- /dev/null +++ b/module/personnel/js/accessible.js @@ -0,0 +1,2 @@ +$('#dept' + deptID).addClass('active'); +$(".tree .active").parent('li').addClass('active'); diff --git a/module/personnel/model.php b/module/personnel/model.php index 9ef59447ad..b88c99c6ca 100644 --- a/module/personnel/model.php +++ b/module/personnel/model.php @@ -11,6 +11,44 @@ */ class personnelModel extends model { + /** + * Access to program set input staff. + * + * @param int $programID + * @param int $deptID + * @param string $browseType + * @param string $orderBy + * @param int $queryID + * @param object $pager + * @access public + * @return array + */ + public function getAccessiblePersonnel($programID = 0, $deptID = 0, $browseType = 'all', $orderBy = 't2.id_desc', $queryID = 0, $pager) + { + $accessibleQuery = ''; + if($browseType == 'bysearch') + { + $query = $queryID ? $this->loadModel('search')->getQuery($queryID) : ''; + if($query) + { + $this->session->set('accessibleQuery', $query->sql); + $this->session->set('accessibleForm', $query->form); + } + if($this->session->accessibleQuery == false) $this->session->set('accessibleQuery', ' 1=1'); + $accessibleQuery = $this->session->accessibleQuery; + } + + $personnelList = $this->dao->select('t2.id,t2.dept,t2.account,t2.role,t2.realname,t2.gender')->from(TABLE_USERVIEW)->alias('t1') + ->leftJoin(TABLE_USER)->alias('t2')->on('t1.account=t2.account') + ->where('t1.programs')->like(',%' . $programID . ',%') + ->beginIF($deptID > 0)->andWhere('t2.dept')->eq($deptID)->fi() + ->beginIF($browseType == 'bysearch')->andWhere($accessibleQuery)->fi() + ->orderBy($orderBy) + ->page($pager) + ->fetchAll(); + + return $personnelList; + } /** * Access to program set input staff. * diff --git a/module/personnel/view/accessible.html.php b/module/personnel/view/accessible.html.php index ceb6dd0bc3..80859776c5 100644 --- a/module/personnel/view/accessible.html.php +++ b/module/personnel/view/accessible.html.php @@ -31,26 +31,45 @@ js::set('deptID', $deptID);
+ personnel->emptyTip;?> +
+