model('organization'); } } /** * 得到组织信息 */ public function getGropById($orgId='',$orgType=''){ if ($orgId){ $base_filter = array('parent_id' => $orgId,'del_mark' => 0); }else{ $base_filter = array('org_level_num' => '1','del_mark' => 0); } if($orgType){ $filter = array_merge($base_filter,array('org_type'=>$orgType)); $aTemp = self::$model->getList('org_id,org_no,org_type,org_name,status,org_level_num', $filter, 0, -1, 'org_id ASC'); }else{ //门店管理页面重新获取$base_filter 显示启用的组织层级和相应的所属门店 if($orgId){ $base_filter = "parent_id=".$orgId; }else{ //页面首次加载 显示最高组织层级 $base_filter = "org_level_num=1"; } $base_filter = $base_filter." and del_mark=0"; $aTemp = self::$model->db->select("select org_id,org_no,org_type,org_name,status,org_level_num from ".DB_PREFIX."organization_organization where ".$base_filter." and (org_type in (2,3) or (org_type=1 and status=1)) order by org_id ASC"); } if (is_array($aTemp)&&count($aTemp) > 0){ foreach($aTemp as $key => $val){ $aTemp[$key]['status']=intval($val['status']); $aTemp[$key]['child_count'] = $this->getChildCount($val['org_id'],$orgType); $aTemp[$key]['step'] = intval($val['org_level_num'])-1; } } return $aTemp; } /** * 获取指定的下级组织数量 */ private function getChildCount($org_id, $org_type=''){ if($org_type){ $filter = array('parent_id' => $org_id,'del_mark' => 0,'org_type'=>$org_type); $cnt = self::$model->count($filter); }else{ //门店管理页面显示启用的组织层级和相应的所属门店 $cnt = self::$model->db->count("select count(*) from ".DB_PREFIX."organization_organization where parent_id=".intval($org_id)." and del_mark=0 and (org_type in (2,3) or (org_type=1 and status=1))"); } return $cnt; } /** * 获取用于组织树选择的组织数据 * @param int $parent_id 父级组织ID,默认为0获取顶级组织 * @return array 组织数据数组 */ public function getOrgForTreeSelect($parent_id = 0) { if (!$parent_id) { $parent_id = 0; } $filter = array( 'parent_id' => $parent_id, 'del_mark' => 0, 'status' => 1 // 只获取启用的组织 ); $orgList = self::$model->getList('org_id,org_name,parent_id', $filter, 0, -1, 'org_id ASC'); $result = []; if (is_array($orgList) && count($orgList) > 0) { foreach ($orgList as $org) { $childCount = $this->getChildCount($org['org_id']); $result[] = array( 'parent_id' => $org['parent_id'], 'org_id' => $org['org_id'], 'org_name' => $org['org_name'], 'child_count' => $childCount ); } } return $result; } function getShowData($orgId) { $this->getAllChildNode($orgId); if($this->_data) { $this->formatChildNode($orgId); } return $this->_data; } /** * 获取所有下级组织 * * @param $orgId intval * @param $org_type 默认1 只取组织层级 当传入其他值时(举例2) 组织和门店都取 * @return Array */ function getAllChildNode($orgId,$org_type="1") { $data = array(); if ($org_type == "1"){ //默认只取组织层级 $filter = array('parent_id' => $orgId, 'org_type'=>1, 'del_mark' =>0); }else{ //组织和门店都取 $filter = array('parent_id' => $orgId, 'del_mark' =>0); } $dataList = self::$model->getList('org_id, org_no, org_name, status, org_level_num, org_type', $filter, 0, -1, 'org_id ASC'); if($dataList) { while($rows = array_shift($dataList)) { $rows['items'] = $this->getAllChildNode($rows['org_id'],$org_type); $rows['child_count'] = count($rows['items']);//下级组织数量 $rows['step'] = intval($rows['org_level_num'])-1; $data[] = $rows; } } return $data; } /** * 格式化html代码展示所有下级组织 * * @param Array $data * @return string */ function getAllChildNodeHtml($data) { if($data) { foreach ($data as $key => $val) { $this->_org_html .= $this->formatHtml($val); //递归 if($val['items']) { $this->getAllChildNodeHtml($val['items']); } } } return $this->_org_html; } function formatHtml($val) { $html = '