zTree+PHP

来源:互联网 发布:c java md5加密解密 编辑:程序博客网 时间:2024/04/28 06:46
//管理员刚进入时,还没有选中的。初始化的
//HTML 页面  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用户赋权</title>
<?php  include ("./protected/views/layouts/head.php");?>


<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/chosenRelationChange.js"></script>
<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/businesslinkage_user_Change.js"></script>
<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/chosen/chosen.jquery.js"></script>


<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/zTree/jquery.ztree.core-3.5.js"></script>
<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/zTree/jquery.ztree.excheck-3.5.min.js"></script>


<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/js/chosen/chosen.css" />
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/user/deep.css" />


<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/zTreeStyle.css" />






<script type="text/javascript">
  $(document).ready(function(){
        // 
          window.ff  = {} ;
          $(".ywxChosen").jcheck({type:'change'});
          //


          //
           $(".chosen-select").chosen();
  })
</script>
</head>
  
<body>
<?php
if (Yii::app ()->user->hasFlash ( 'success' )) {

echo Yii::app ()->user->getFlash ( 'success' );
}
?>
    <!--右上角开始-->
<?php  include ("./protected/views/layouts/welcome.php");?></head>
<!--右上角结束-->
<!--top开始-->
<?php  include ("./protected/views/layouts/topMenu.php");?></head>
<!--<div class="contents">-->
<!--left开始-->
<?php  include ("./protected/views/layouts/leftMenu.php");?>
<!--left结束-->
                 <div class="rightContent">
                    <div class="contentInfo">
<!--<div style="width:82%; float:right;">-->
    <form  name= "myform" method = 'post' action = "index.php?r=Userfuquan/empowermentadd">
<!--文件填报右侧-->
<div class="comRightTop">
<table border="0" cellpadding="0" cellspacing="0">
   <tr>
       <td>
         <img src="images/icon_home.jpg" />
       </td>
       <td>
           <span class="home">home</span> >  <span>权限管理> 用户角色管理 > 用户赋权</span>
       </td>
   </tr>
</table>
</div>
<div class="comRightPiliang">
   <a href="index.php?r=role/index/menuid/133">返回列表</a>
<!--   <a href="#" class="comRightPiliang_img"><img src="images/icon_daochu.png"  />批量导入</a>-->
   
   <div class="clear"></div>
</div>
<div class="comRightContents">
      <h2><span></span>用户赋权</h2>
      <!--内容区域-->
     
      <div class="comLineDiv">
<div class="comLineTitle">
<div>部门 :</div>
</div>
<div class="comLineCon">
<select name="File_info[department_id]" style="width: 160px"
class="chosen-select departmentChosen"><option>请选择部门</option>
       <?php foreach((array)$department_list as $group):?>
       <option value="<?php echo $group['department_id']?>"
<?php XPublic::selected($group['department_id'], $model->department_id);?>><?php echo $group['department_name']?></option>
       <?php endforeach;?>
     </select><span class="grayinfo">&nbsp;&nbsp;<span style="color:red;">*</span>&nbsp;选择所属部门,没有?请点击 <a href="?r=Department/add/menuid/112/leftmenuid/120"  target="_blank">创建</a></span>
</div>
<div class="clear"></div>
       </div>
      <div class="comLineDiv">
<div class="comLineTitle">
<div>业务线 :</div>
</div>
<div class="comLineCon">
<select name="File_info[dpt_id]" id="dpt_id" style="width: 160px"
class="chosen-select ywxChosen">
      <option value="">请选择业务线</option>
   </select><span class="grayinfo">&nbsp;&nbsp;<span style="color:red;">*</span>&nbsp;选择所属业务线,没有?请点击 <a href="?r=Product/add/menuid/112/leftmenuid/122"  target="_blank">创建</a></span>
</div>
<div class="clear"></div>
       </div>      
       <div class="comLineDiv">
<div class="comLineTitle">
<div>用户 :</div>
</div>
<div class="comLineCon">
<span class="grayinfo">
                                                    <ul class="deepDataGameList1">
                                                           
                                                    </ul>
                                                </span>
</div>
<div class="clear"></div>
       </div>
       <div class="comLineDiv">
<div class="comLineTitle">
<div>系统菜单 :</div>
</div>
<div class="comLineCon">
                        <div class="zTreeDemoBackground left">
                                <ul id="treeDemo" class="ztree"></ul>
                        </div>
                        <input type="hidden" name="menuTreeJson" id="menuTreeJson">
</div>
<div class="clear"></div>
       </div>
       
      <div class="comLineDiv comLineSubmit"><input  class="comLineSubmitBtn" type="submit" value="填 报" id="SubmitBtn" /></div>
</div>
<!--</div>-->
</form>
                    </div>


</div>
                <div class="top" style="width: 100%; height: 64px; background-color: #CCC; text-align: center; font-size: 12px; line-height: 64px; clear:both;">
Copyright©2005-2015 360.CN All Rights Reserved 360数据中心</div>
</body>
</html>
<SCRIPT type="text/javascript">
<!--
  
                function deepDataGameNormalGame(cs){
    var obj = cs;
    var objSpan = obj.find("span");
  //alert(objSpan.attr("class"));
  if(objSpan.attr("class")=="show"){
    objSpan.fadeOut("fast");objSpan.removeClass("show");
    obj.removeClass("deepDataGameNormalGameCheck");
    obj.find(".zhibiaoHidden").remove();
    obj.find(".zhibiaoIdHidden").remove();
    }
  else {
    objSpan.fadeIn("slow");objSpan.addClass("show");
    obj.addClass("deepDataGameNormalGameCheck");
    var val  =obj.find(".gameName").text();
    var valId = obj.find(".indexid").text();
    var indexInput = '<input class="zhibiaoHidden" type="hidden" name="role[]" value="'+val+'" />';
    var indexIdInput='<input class="zhibiaoIdHidden" type="hidden" name="roleid[]" value="'+valId+'" />';
    obj.append(indexInput);
    obj.append(indexIdInput);
    }
    //
  }
              
// var setting = {
// check: {
// enable: true
// },
// data: {
// simpleData: {
// enable: true
// }
// }
// };
var setting = {
      check: {
        enable: true,
        chkboxType : {"Y": "p", "N": "p"}
      },
      data: {
        simpleData: {
          enable: true
        }
      }
    };
var code;

function showCode(str) {
if (!code) code = $("#code");
code.empty();
code.append("<li>"+str+"</li>");
}

$(document).ready(function(){
                    
                  $.ajax({
       type: "post",
        url: "index.php?r=Userfuquan/zNodesJson",
                dataType:"json",
                    success: function(data){
                      
                      var zNodes=data;
                     // var zNodes ='[{ id:1, pId:0, name:"随意勾选 1", open:true},{ id:11, pId:1, name:"随意勾选 1-1", open:true},{ id:111, pId:11, name:"随意勾选 1-1-1"},{ id:112, pId:11, name:"随意勾选 1-1-2"}]';
                      $.fn.zTree.init($("#treeDemo"), setting, zNodes);
                        }
});
                
                 // 更改tree 获取节点
       $("#treeDemo .chk").live("click",function(){
           var treeObj=$.fn.zTree.getZTreeObj("treeDemo");
            nodes=treeObj.getCheckedNodes(true);
            var nodesJson ='';
            for(var i=0;i<nodes.length;i++){
              if(!nodes[i].pId){
                nodes[i].pId  = 0 ;
              }
              //alert(nodes[i].level);
              nodesJson +='{"menu_id":'+nodes[i].id+',"pid":'+nodes[i].pId+',"level":'+nodes[i].level+'},';
            }
            nodesJson=nodesJson.substring(0,nodesJson.length-1);
            nodesJson = '['+nodesJson+']';
            $("#menuTreeJson").val(nodesJson);
            
       })
                
});
//-->
               
</SCRIPT>




//controllers
       <?php


/*
 * 用户复权
 * 作者:zhaoliang
 * 时间:2015-02-12
 */
class UserfuquanController extends Controller {
public function actionIndex() {

$this->renderPartial ( 'index');
}
        /*
         * 用户复权
         */
        public function actionUserfq(){
            
            $this->renderPartial ( 'userfq');
        }
        public function actionAdd(){
           
             $this->renderPartial ( 'add');
        }
        public function actionEmpowerment(){
                $result=Common::getMenu();
$result ['department_list'] = Metadata_department::get_department ();
$result['role']=Metadata_role::model()->findAll ();
$this->renderPartial ( 'empowerment', $result );
        }
        /*
         * 选择业务线,出来业务线下面所有用户
         */
        public function actionUserchange(){
           $dpt_id =  $_POST['dpt_id'];
           $list = Metadata_user::model()->findAll('dpt_id=:dpt_id', array (':dpt_id' => $dpt_id) );
           echo CJSON::encode(array( 'list'=>$list));
        }
        //角色授权  zhaoliang  2015-02-25
        function actionEmpowermentadd(){
            $roleid = $_REQUEST['roleid'];
            $rolename = $_REQUEST['role'];
            
            $menuTreeJson = $_REQUEST['menuTreeJson'];
            $menuTreeJson = json_decode($menuTreeJson,true);
           // var_dump($roleid);
           
            //事务开始
            $trans = Yii::app()->db->beginTransaction();  
           try{


                    if($roleid!=''){
                        for($a=0;$a<count($roleid);$a++){
                            $count = Userrole_menu::model()->deleteAll('type=:type AND userrole_id=:userrole_id',array(':type'=>0,':userrole_id'=>$roleid[$a]));
                        }
                    }
                    ///循环形成sql
                    $statusArr = array();
                        for ($i=0; $i <count($roleid) ; $i++) {
                                //循化tree
                                for ($j=0; $j <count($menuTreeJson) ; $j++) { 
                                        # code...
                                        $model = new Userrole_menu();                                   
                                        $model->type= 0;
                                        $model->userrole_id=  $roleid[$i];
                                        $model->userrole_name=  $rolename[$i];
                                        $model->menu_id = $menuTreeJson[$j][menu_id];
                                        $model->p_id = $menuTreeJson[$j][pid];
                                        $model->leve = $menuTreeJson[$j][level];
                            $status = $model->save();
                            array_push($statusArr,$status);
                            //$statusArr.
                                }
                        }
                      $trans->commit();  //提交事务
           }catch(Exception $e){
                $trans->rollBack();  //回滚事务
           }


        }
      
        /*
         * 权限树
         */
        public function actionzNodesJson(){
            $result =Menu::model()->findAll(array('select'=>array('id','pid','menuname','level')));
            $zNodes;
            foreach($result as $k =>$v){
                $zNodes[$k]=array('id'=>$v['id'],'pId'=>$v['pid'],'level'=>$v['level'],'name'=>$v['menuname']);
            }
            echo CJSON::encode($zNodes);
        }
}












********************************************************************************************************************************
********************************************************************************************************************************
********************************************************************************************************************************
//数据加载完成只后,反回的数据,有选中的。
//HTML 页面


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>360数据中心-元数据管理平台-更新用户</title>
<?php  include ("./protected/views/layouts/head.php");?>


<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/chosenRelationChange.js"></script>
<script type="text/javascript"
  src="<?php echo Yii::app()->request->baseUrl; ?>/js/chosen/chosen.jquery.js"></script>
<link rel="stylesheet" type="text/css"
  href="<?php echo Yii::app()->request->baseUrl; ?>/js/chosen/chosen.css" />
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/user/deep.css" />
<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/user/useradd.js"></script>
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/zTreeStyle.css" />
<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/zTree/jquery.ztree.core-3.5.js"></script>
<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/zTree/jquery.ztree.excheck-3.5.min.js"></script>
</head>


<body>


<?php


if (Yii::app ()->user->hasFlash ( 'success' )) {
  
  echo Yii::app ()->user->getFlash ( 'success' );
}
//var_dump($user);
?>


    
<!--<div style="width:82%; float:right;">-->
    <form  name= "myform" method = 'post' action = "index.php?r=Userrolemenu/empowermentadd">
       <input type="hidden" name="info[id]" id="hidden_userID" value="<?php echo $userrole_id ?>">
       <input type="hidden" name="info[userroletype]" value="<?php echo $type ; ?>" id= "userroletype">
<div class="comRightContents" style="margin:0px;width:100%">
      <h2><span></span>更新用户</h2>


       <div class="comLineDiv">
                 <div class="comLineTitle">
                   <div>名称 :</div>
                 </div>
                 <div class="comLineCon">
                        <input value="<?php echo $userrole_name ?>" name="info[userrole_name_s]" disabled = " disabled" class="cominput" style="width: 15%">
                        <input type="hidden" name="info[userrole_name]" value="<?php echo $userrole_name; ?>">    
                 </div>
                 <div class="clear"></div>
      </div>


      <div class="comLineDiv">
                 <div class="comLineTitle">
                   <div>类型 :</div>
                 </div>
                 <div class="comLineCon">
                      <input value="<?php echo $ty = $type==0 ? '用户':'角色' ;  ?>" disabled = " disabled" class="cominput" style="width: 15%" >
                 </div>
                 <div class="clear"></div>
      </div>


       <div class="comLineDiv">
<div class="comLineTitle">
<div>系统菜单 :</div>
</div>
<div class="comLineCon">

                        菜单列表
                        <div class="zTreeDemoBackground left">
                                <ul id="treeDemo" class="ztree"></ul>
                        </div>
                        <input type="hidden" name="menuTreeJson" id="menuTreeJson">
</div>
<div class="clear"></div>
       </div>


       <div class="comLineDiv comLineSubmit">
                   <input  class="comLineSubmitBtn" type="submit" value="提 交" id="SubmitBtn" />
      </div>


       <!--comRightContents over-->
</div>


<!--</div>-->
</form>


                <div class="top" style="width: 100%; height: 64px; background-color: #CCC; text-align: center; font-size: 12px; line-height: 64px; clear:both;">
    Copyright©2005-2015 360.CN All Rights Reserved 360数据中心</div>
</body>
</html>
<SCRIPT type="text/javascript">
<!--
                             function deepDataGameNormalGame(cs){
    var obj = cs;
    var objSpan = obj.find("span");
  //alert(objSpan.attr("class"));
  if(objSpan.attr("class")=="show"){
    objSpan.fadeOut("fast");objSpan.removeClass("show");
    obj.removeClass("deepDataGameNormalGameCheck");
    obj.find(".zhibiaoHidden").remove();
    obj.find(".zhibiaoIdHidden").remove();
    }
  else {
    objSpan.fadeIn("slow");objSpan.addClass("show");
    obj.addClass("deepDataGameNormalGameCheck");
    var val  =obj.find(".gameName").text();
    var valId = obj.find(".indexid").text();
    var indexInput = '<input class="zhibiaoHidden" type="hidden" name="role[]" value="'+val+'" />';
    var indexIdInput='<input class="zhibiaoIdHidden" type="hidden" name="roleid[]" value="'+valId+'" />';
    obj.append(indexInput);
    obj.append(indexIdInput);
    }
    //
  }
              
              
// var setting = {
// check: {
// enable: true
// },
// data: {
// simpleData: {
// enable: true
// }
// }
// };
var setting = {
      check: {
        enable: true,
        chkboxType : {"Y": "p", "N": "p"}
      },
      data: {
        simpleData: {
          enable: true
        }
      }
    };
var code;

function showCode(str) {
if (!code) code = $("#code");
code.empty();
code.append("<li>"+str+"</li>");
}

$(document).ready(function(){
                    var user_id=$("#hidden_userID").val();
                   
                   var userroletype = $("#userroletype").val();
                   //alert(userroletype);
          $.ajax({
       type: "post",
        url: "index.php?r=Userrolemenu/zNodesJsonSelect",
                data: {'userid':user_id,'userroletype':userroletype},
                dataType:"json",
                    success: function(data){
                     // alert(data);
                      var zNodes=data;
                      $.fn.zTree.init($("#treeDemo"), setting, zNodes);
                    }
}); 
                
                // 更改tree 获取节点
       $("#treeDemo .chk").live("click",function(){
           var treeObj=$.fn.zTree.getZTreeObj("treeDemo");
            nodes=treeObj.getCheckedNodes(true);
            var nodesJson ='';
            for(var i=0;i<nodes.length;i++){
              if(!nodes[i].pId){
                nodes[i].pId  = 0 ;
              }
              //alert(nodes[i].level);
              nodesJson +='{"menu_id":'+nodes[i].id+',"pid":'+nodes[i].pId+',"level":'+nodes[i].level+'},';
            }
            nodesJson=nodesJson.substring(0,nodesJson.length-1);
            nodesJson = '['+nodesJson+']';
            $("#menuTreeJson").val(nodesJson);
            
       })
});
//-->
               
</SCRIPT>








//controllers


<?php
/*
+-----------------------------------------
|  权限列表controller UserrolemenuController
+-----------------------------------------
|  time 2015-02-25   author wsx
+-----------------------------------------


*/
class UserrolemenuController extends Controller {

/*
* 列表 作者:wsx 2015-02-25
*/
function actionIndex() {
$result=Common::getMenu();//获取菜单
$result ['department_list'] = Metadata_department::get_department ();
//var_dump($result);
$this->renderPartial ( 'index', $result );
}
/*
* 列表 作者:wsx 创建时间:2015-02-25
*/
public function actionList() {
header ( "Content-type: application/json" );
$pageSize = $_REQUEST ['pageSize'];
if (empty ( $pageSize ))
$pageSize = 20 ; // 一页条数
$currentPage = $_REQUEST ['currentPage'];
if (empty ( $currentPage ))
$currentPage = 1; // 当前第几页
$order = $_REQUEST ['order'];
if (empty ( $order ))
$order = "t.id desc";
$criteria = new CDbCriteria (); // new cdbcriteria数据库
$criteria->order = $order; // 排序规则
$criteria->group = 'userrole_name';
$index_name = $_REQUEST ['index_name'];
$userrole_name = $_REQUEST ['userrole_name'];


if (! empty ( $userrole_name ))
$criteria->compare ( 't.userrole_name', $userrole_name );

//var_dump($criteria);
$itemCount = Userrole_menu::model ()->count ( $criteria );
$pager = new CPagination ( $itemCount );
$pager->currentPage = $currentPage - 1;
$pager->pageSize = $pageSize;


$pager->applyLimit ( $criteria );
// $criteria->offset = $pager->currentPage * $pager->pageSize;
$list = Userrole_menu::model ()->findAll ( $criteria ); // 根据条件查询
$_list = $this->convertModelToArray ( $list );


$title_arr = Userrole_menu::attributeLabels (); // 字段说明   
foreach ( $_list as $keys => $vals ) {
// $currentData = $vals->attributes;
foreach ( $title_arr as $k => $v ) {

if (array_key_exists ( $k, $vals )){
$new_currentData [$k] = $vals [$k];
if($k=='type'){
$new_currentData [$k]  = $vals [$k] ==0 ? '用户':'角色';
}
}

}
$_lists [] = $new_currentData;
}
echo CJSON::encode ( array (
'list' => $_lists,
'title' => $title_arr,
'pages' => Array (
"currentPage" => $currentPage,
"pageSize" => $pager->pageSize,
"itemCount" => $itemCount 

) );
}


/*
* 更新 作者:wsx 创建时间:2015-02-25
*/
function actionUpdate($id) {


     $result=Common::getMenu();//获取菜单
              $userrole_id = Metadata_userrole_menu::model()->find('id=:id',array(':id'=>$id));
              $result['type'] =  $userrole_id ['type'];
              $result['userrole_name'] =$userrole_id ['userrole_name']; //$model->attributes;
              $result['userrole_id'] =$userrole_id ['userrole_id'];


$this->renderPartial ( 'update', $result );
}
        //角色授权  zhaoliang  2015-02-25
        function actionEmpowermentadd(){


             $roleid = $_POST['info']['id'];
             $rolename = $_POST['info']['userrole_name'];//info[userrole_name]
             $type = $_POST['info']['userroletype'];


            $menuTreeJson = $_REQUEST['menuTreeJson'];
            $menuTreeJson = json_decode($menuTreeJson,true);
           
            //事务开始
            $trans = Yii::app()->db->beginTransaction();  
           try{


                    if($roleid!=''){
                            $count = Userrole_menu::model()->deleteAll('type=:type AND userrole_id=:userrole_id',array(':type'=>$type,':userrole_id'=>$roleid));
                    }
                    ///循环形成sql
                    $statusArr = array();
                       
                                //循化tree
                                for ($j=0; $j <count($menuTreeJson) ; $j++) { 
                                        # code...
                                        $model = new Userrole_menu();                                   
                                        $model->type= $type;
                                        $model->userrole_id=  $roleid;
                                        $model->userrole_name=  $rolename;
                                        $model->menu_id = $menuTreeJson[$j][menu_id];
                                        $model->p_id = $menuTreeJson[$j][pid];
                                        $model->leve = $menuTreeJson[$j][level];
                            $status = $model->save();
                            array_push($statusArr,$status);
                            //$statusArr.
                                }
                       
                      $trans->commit();  //提交事务
                      //$this->success("add");
           }catch(Exception $e){
                $trans->rollBack();  //回滚事务
           }
           
        }


function actionGetrolebydptid($dpt_id){
      header ( "Content-type: application/json" );
               $dpt_id = intval($_REQUEST['dpt_id']);
               if( $dpt_id ){
               $Metadata_role =  new Metadata_role();
               $list =  $Metadata_role::model ()->findAll("dpt_id=:dpt_id",array(":dpt_id"=>$dpt_id));
               $_list = $this->convertModelToArray ( $list );
               $_list = json_encode($_list);
               echo $_list;
               }




        }
        /*
         * 权限树,选中的
         */
        public function actionzNodesJsonSelect(){
          $userID=$_POST['userid'];
          $userroletype=$_POST['userroletype'];
          
          $userrole_menu = Metadata_userrole_menu::model()->findAll("type=:type AND userrole_id=:userrole_id",array(":type"=>$userroletype,":userrole_id"=>$userID));
           $userrole_menu = $this->convertModelToArray( $userrole_menu );
            
            $havaMenuArr = array();
           for ($i=0; $i < count($userrole_menu); $i++) { 
                 array_push($havaMenuArr,$userrole_menu[$i]['menu_id'] );
           }
           
           $result =Menu::model()->findAll(array('select'=>array('id','pid','menuname','level')));//菜单循环
           $zNodes = array();
           $result = $this->convertModelToArray( $result );
           for ($i=0; $i <count($result) ; $i++) { 
               $result[$i]['checked'] = in_array($result[$i]['id'], $havaMenuArr) ? true : false;
                    $result[$i]['open'] = in_array($result[$i]['id'], $havaMenuArr) ? true : false;
               $zNodes[$i]['id'] = $result[$i]['id'];
               $zNodes[$i]['checked'] = $result[$i]['checked'];
                    $zNodes[$i]['open']=$result[$i]['open'];
               $zNodes[$i]['name'] = $result[$i]['menuname'];
               $zNodes[$i]['pId'] = $result[$i]['pid'];
               $zNodes[$i]['level'] = $result[$i]['level'];
           }
          
          $zNodes =  json_encode( $zNodes);
           echo $zNodes;
         
        }





}
0 0