layui 數據表格 table 操作表格數列

模塊代碼

<!DOCTYPE html>
<html>				
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <title>導航菜單</title>
	<link rel="stylesheet" href="__STATIC__/layui/css/layui.css" media="all">
	<script src="__STATIC__/layui/layui.js"></script> 
	<link rel="stylesheet" href="__ADMIN__/css/index.css" media="all">
	<script type="text/javascript" src="__STATIC__/jquery/1.8.3/jquery.min.js"></script>
	<link rel="stylesheet" href="__ADMIN__/css/font-awesome.css">
	<style>
		
	</style>
</head>
<body style="background-color: #FFFFFF;">
<!-- 你的HTML代碼 -->
<!-- 表格 -->
<div class="layui-fluid">
<!-- 操作列 -->
<div id="m_id">
    <table class="layui-hidden" id="treeTable" lay-filter="treeTable"></table>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-group">
  <button class="layui-btn layui-btn-primary layui-btn-xs" onclick="add(null);"><i class="layui-icon layui-icon-add-1"></i>增加</button>
  <button class="layui-btn layui-btn-primary layui-btn-xs" id="btn-fold" data-id="1"><i class="layui-icon layui-icon-align-left"></i>摺疊/展開</button>
  <button class="layui-btn layui-btn-primary layui-btn-xs" onclick="refresh();"><i class="layui-icon layui-icon-edit"></i>刷新</button>
  <button class="layui-btn layui-btn-primary layui-btn-xs" onclick="delAll();"><i class="layui-icon layui-icon-delete"></i>刪除</button>
  <button class="layui-btn layui-btn-normal layui-btn-xs" onclick="makeMenuJson();"><i class="layui-icon layui-icon-template"></i>生成菜單JSON</button>
</div>
</script>
<script type="text/html" id="auth-state">
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">刪除</a>
</script>
<!-- 這裏的 顯示/隱藏 -->
<script type="text/html" id="switchTpl">
  <input type="checkbox" name="hide" value="{{d.id}}" lay-skin="switch" lay-text="隱藏|顯示" lay-filter="sexDemo" {{ d.hide == 1 ? 'checked' : '' }}>
</script>
<!-- 欄目的詳細網頁是否有BANNER圖片 0有 1沒有  -->
<script type="text/html" id="switchBannerTpl">
  <input type="checkbox" name="hide_banner" value="{{d.id}}" lay-skin="switch" lay-text="Banner沒|Banner有" lay-filter="sexDemo" {{ d.hide_banner == 1 ? 'checked' : '' }}>
</script>
<!--APP導航圖標圖片-->
<script type="text/html" id="titleTpl">
  {{#  if(d.id < 100){ }}
    <a href="/detail/{{d.id}}" class="layui-table-link">{{d.title}}</a>
  {{#  } else { }}
    {{d.title}}(普通用戶)
  {{#  } }}
</script>
<!-- 這裏的 模型 -->
<script type="text/html" id="modelTpl">
  <!--<input type="checkbox" name="hide" value="{{d.id}}" lay-skin="switch" lay-text="隱藏|顯示" lay-filter="sexDemo" {{ d.hide == 1 ? 'checked' : '' }}>-->
  	{{#  if(d.pId == null ){ }}
      <select name="model" lay-ignore data-id="{{d.id}}" class="m_select">
        	<option value="0" {{ d.model == 0 ? 'selected' : '' }}>首頁</option>
	      	<option value="1" {{ d.model == 1 ? 'selected' : '' }}>產品</option>
	        <option value="2" {{ d.model == 2 ? 'selected' : '' }}>文章</option>
	        <option value="3" {{ d.model == 3 ? 'selected' : '' }}>單頁</option>
	        <option value="4" {{ d.model == 4 ? 'selected' : '' }}>bbs</option>
	        <option value="5" {{ d.model == 5 ? 'selected' : '' }}>留言</option>
	        <option value="6" {{ d.model == 6 ? 'selected' : '' }}>招聘</option>

	        <option value="7" {{ d.model == 7 ? 'selected' : '' }}>團隊</option>
	        <option value="8" {{ d.model == 8 ? 'selected' : '' }}>題庫</option>
	        <option value="9" {{ d.model == 9 ? 'selected' : '' }}>簡介</option>
	        <option value="10" {{ d.model == 10 ? 'selected' : '' }}>友情</option>
	        <option value="11" {{ d.model == 11 ? 'selected' : '' }}>組合</option>
	        
	        
	        <!--<option value="0" {{ d.model == 0 ? 'selected' : '' }}>首頁</option>
	        <option value="1" {{ d.model == 1 ? 'selected' : '' }}>直播</option>
	        <option value="7" {{ d.model == 7 ? 'selected' : '' }}>點播</option>
	        <option value="8" {{ d.model == 8 ? 'selected' : '' }}>商城</option>
	        <option value="9" {{ d.model == 9 ? 'selected' : '' }}>團隊</option>
	        <option value="10" {{ d.model == 10 ? 'selected' : '' }}>題庫</option>
	        <option value="11" {{ d.model == 11 ? 'selected' : '' }}>簡介</option>
	        <option value="12" {{ d.model == 12 ? 'selected' : '' }}>組合</option>
	        <option value="13" {{ d.model == 13 ? 'selected' : '' }}>友情</option>
	        <option value="2" {{ d.model == 2 ? 'selected' : '' }}>文章</option>
	        <option value="3" {{ d.model == 3 ? 'selected' : '' }}>單頁</option>
	        <option value="4" {{ d.model == 4 ? 'selected' : '' }}>bbs</option>
	        <option value="5" {{ d.model == 5 ? 'selected' : '' }}>留言</option>
	        <option value="6" {{ d.model == 6 ? 'selected' : '' }}>招聘</option>-->
      </select>
    {{#  } else { }}
    {{#  } }}
</script>
<!-- 位置 -->
<script type="text/html" id="positionTpl">
  {{#  if(d.position == 2){ }}
               <span style="color: #01AAED;"> 底部</span>
  {{#  } else if(d.position == 3) { }}
                <span style="color: #FF5722;">都在</span>
  {{#  } else { }}
                頂部
  {{#  } }}
</script>
<!-- 表格end -->
<script>
    var editObj=null,ptable=null,treeGrid=null,tableId='treeTable',layer=null;
    layui.config({
        base: '__STATIC__/menu/treegrid/'
    }).extend({
        treeGrid:'treeGrid'
    }).use(['jquery','treeGrid','layer', 'table'], function(){
						        var $=layui.jquery;
						        table = layui.table;
						        treeGrid = layui.treeGrid;//很重要
						        form = layui.form;
						        layer=layui.layer;
						        
						        ptable=function(){ 
								       treeGrid.render({
										            id:tableId
										            ,elem: '#'+tableId
										            //,height: '' //固定值
										            ,idField:'id'
										            //,url:'__STATIC__/json/menu.json'
										            ,url:'{:url('menujsondata')}'
										            ,toolbar:'#toolbarDemo'
										            ,cellMinWidth: 100
										            ,treeId:'id'//樹形id字段名稱
										            ,treeUpId:'pId'//樹形父id字段名稱
										            ,treeShowName:'name'//以樹形式顯示的字段
										            ,cols: [[
										                {type:'checkbox'}
										                ,{width:60,title: '增加', align:'center'/*toolbar: '#barDemo'*/
										                    ,templet: function(d){
										                    var html='';
										                    var addBtn='<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="add">添加</a>';
										                    return addBtn;
										                    }
										                }
										                ,{field:'id',width:70, title: 'id'}
										                ,{field:'sort', edit:'text',width:70, title: '排序'}
										                ,{field:'name', edit:'text', title: '名稱'}
										                ,{field:'controller', edit:'text', title: '控制器',width:100, event: 'addController', style:'cursor: pointer;'}
										                ,{field:'url', edit:'text', title: 'pid',width:180, title: '網址'}
										                ,{field:'icon', title: '圖標', event: 'addIcon', style:'cursor: pointer;', width: 60
																      ,templet: function(d){
																        return '<i class="fa fa-'+ d.icon +'" style="font-size: 20px; color: #1E9FFF;"></i>'
																      }
																    }
										                ,{field:'img', title: 'APP圖標', event: 'appIcon', style:'cursor: pointer;', width: 80
																      ,templet: function(d){
																	      	if(d.img){
																	      				return '<img src="/uploads/'+ d.img +'" height="30px"/>'
																	      	}else{
																	      				return ''
																	      	}
																      }
																    }
																		,{field:'position', title: '位置', event: 'addPosition', style:'cursor: pointer;', width: 60, templet: '#positionTpl'}
										                ,{field:'hide', title:'顯/隱', width:85, templet: '#switchTpl', unresize: true}
										                ,{field:'hide_banner', title:'內頁', width:100, templet: '#switchBannerTpl', unresize: true}
										                ,{field:'model', title:'模型', width:80, templet: '#modelTpl', unresize: true}
										                ,{templet: '#auth-state', width: 70, align: 'center', title: '操作'}
										            ]]
										            ,page:false
								        });
						        
						         }; 
						         
						         ptable();

			        //摺疊/展開
			        $(document).on("click","#btn-fold",function(){
			        	  var map=treeGrid.getDataMap(tableId);
			        	  var data_id2 = $(this).attr("data-id") 
			        	  var m;
			        	  if(data_id2 == 1){
			        	  	m = true;;
			        	  	$(this).attr("data-id",2) 
			        	  }else if(data_id2 == 2){
			        	  	m = false;
			        	  	$(this).attr("data-id",1) 
			        	  };
			        	  
		                	// console.log(map)
			        	   $.each(map, function(i) {
			        	   		if(map[i].pId){ 
			        	   			 
			        	   			var a = map[i].pId; 
			 									var o= map[a];   
			        	   			treeGrid.treeNodeOpen(o,m);
			 									
			 									
//			        	   			treeGrid.treeNodeOpen(o,!o.is_open);
			        	   		}
			        	   });
			        });	        
			
			        treeGrid.on('tool('+tableId+')',function (obj) {
			        	 
					            if(obj.event === 'del'){
					            	 console.log(obj)
					            	//刪除行
					                del(obj);
					            }else if(obj.event==="add"){
					            	 //添加行
					                add(obj);
					            }else if(obj.event==="addIcon"){
					            	 //添加圖標
					                addicon(obj);
					            }else if(obj.event==="appIcon"){
					            	 //添加app圖標
					                appicon(obj);
					            }else if(obj.event==="addPosition"){
					            	 //添加位置
					                addPosition(obj);
					            }
			        });
			        
		//更新 顯示/隱藏  操作
					  form.on('switch(sexDemo)', function(obj){
					       //layer.tips(this.value + ' ' + this.name + ':'+ obj.elem.checked, obj.othis);
					       //console.log(this.value + '|' + this.name + ':'+ obj.elem.checked, obj.othis)
					       var id=this.value;
					       var field=this.name;
					       var value = obj.elem.checked;
							       if(value){
							       	  value =1;
							       }else{
							       	  value =0;
							       }
					       //console.log(field);
											//更新後臺數據
													 $.ajax({
																	 type: "post",
																	 url: "{:url('edit')}",
																	 data: {id:id,title:value,field:field,action:'ajax_update'},
																		success:function(data){
																		     layer.msg(data['msg']);
																		},
																		error:function(){
																		  layer.msg('更新失敗!');
																		}
													 });
					  }); 
  
			        
    });
    
 //單個修改
  $(document).on("change",".m_select",function(){
   
//			  console.log($(this).val())
//		    console.log($(this).attr("data-id"))
           var id=$(this).attr("data-id");//
           var value=$(this).val();
		          	
					//更新後臺數據
							 $.ajax({
											 type: "post",
											 url: "{:url('edit')}",
											 data: {id:id,title:value,field:'model',action:'ajax_update'},
												success:function(data){
												     layer.msg(data['msg']);
															setTimeout(function(){
															    ptable()
															},1000);
												},
												error:function(){
												  layer.msg('更新失敗!');
												}
							 });
 
  });  
  
//單個刪除
    function del(obj) {
    	
        var pdata=obj?obj.data:null;
        //alert(pdata.id)
        layer.confirm("你確定刪除數據嗎?如果存在下級節點則一併刪除,此操作不能撤銷!", {icon: 3, title:'提示'},
            function(index){
            	//確定回調
                obj.del();
											//更新後臺數據
													 $.ajax({
																	 type: "post",
																	 url: "{:url('del')}",
																	 data: {id:pdata.id},
																		success:function(data){
																				 if(data[0]==1){
																					    layer.msg(data[1]);
												                     // self.location='{:url('index')}';
																					}else{
																						layer.msg('失敗!'+data[1]);
																						 //table.render({});//重新渲染
																					}
																		},
																		error:function(){
																		  layer.msg('更新失敗!');
																		}
													 });
                layer.close(index);
            },function (index) {
            	//取消回調
               layer.close(index);
            }
        );
    }


    var i=1000;
//添加
    function add(pObj) {
    	
    	  //console.log(pObj)
        var pdata=pObj?pObj.data:null;
        //console.log(pdata);
        var param={};
        param.name='請修改標題';
        //param.id=++i;
        param.pId=pdata?pdata.id:null;
//      treeGrid.addRow(tableId,pdata?pdata.LAY_TABLE_INDEX+1:0,param);
				//更新後臺數據
						 $.ajax({
										 type: "post",
										 url: "{:url('add')}",
										 data: {id:param.id,pid:param.pId,title:param.name,action:'ajax_add'},
										 success: function(data){
										 	
											  layer.msg(data['msg']);
											 //var id=154;
											 if(data['code']==1){
														//param.name='請修改標題';
										        param.id=data['menuid'];
										        //param.pId=pdata?pdata.id:null;
										        treeGrid.addRow(tableId,pdata?pdata.LAY_TABLE_INDEX+1:0,param);
													  //執行重載
													  //ptable()
											 }

											
										},
										error: function(){
												layer.msg('更新失敗!');
										}
						 });
    }

//更新圖標
    function addicon(pibj) {
    	
   	  //console.log(pObj)
        var pdata=pibj?pibj.data:null;
        //console.log(pdata);
        //console.log(pdata.id);
					layer.ready(function(){
						  layer.open({
							type: 2,
							title: '更新圖標',
							maxmin: true,
							area: ['80%', '70%'],
							content: '{:url('add')}?action=ajax_update&field=icon&id='+pdata.id,
							cancel: function(){ //刷新網頁
							      //重新加載表格數據
										//self.location='{:url('index')}';
										ptable()
							  }
						  });
					});
    }
    
//更新APP/小程序圖標
    function appicon(pibj) {
    	
   	  //console.log(pObj)
        var pdata=pibj?pibj.data:null;
        //console.log(pdata);
        //console.log(pdata.id);
					layer.ready(function(){
						  layer.open({
							type: 2,
							title: 'APP/小程序圖標',
							maxmin: true,
							area: ['80%', '70%'],
							content: '{:url('add')}?action=ajax_update&field=img&id='+pdata.id,
							cancel: function(){ //刷新網頁
							      //重新加載表格數據
										//self.location='{:url('index')}';
										ptable()
							  }
						  });
					});
    }
//更新位置
    function addPosition(ppbj) {
    	
   	  //console.log(pObj)
        var pdata=ppbj?ppbj.data:null;
        //console.log(pdata);
        //console.log(pdata.id);
					layer.ready(function(){
						  layer.open({
							type: 2,
							title: '更新位置',
							maxmin: true,
							area: ['80%', '70%'],
							content: '{:url('add')}?action=ajax_update&field=position&id='+pdata.id,
							cancel: function(){ //刷新網頁
							      //重新加載表格數據
										ptable()
							  }
						  });
					});
    }

    function print() {
        console.log(treeGrid.cache[tableId]);
        var loadIndex=layer.msg("對象已打印,按F12,在控制檯查看!", {
            time:3000
            ,offset: 'auto'//頂部
            ,shade: 0
        });
    }
    
 //生成菜單JSON
    function makeMenuJson() { 
    	
					layer.ready(function(){
						  layer.open({
							type: 2,
							title: '生成菜單JSON',
							maxmin: true,
							area: ['40%', '40%'],
							content: '{:url('menujsondata')}?action=make_jsondate',

						  });
					});
//											$.ajax({
//													url:'{:url('del')}',
//													type:"post",
//													data:{id:dataall},
//													async:true,
//													success:function(data){
//													     if(data[0]==1){
//														      layer.msg(data[1]);
//																}else{
//																	layer.msg('失敗!'+data[1]);
//																}
//													},
//													error:function(){
//													  layer.msg('頁面跳轉失敗!');
//													}
//											});

    }
    
 //刷新
    function refresh() { 
        	ptable()
    }
    
//批量刪除
    function delAll() { 
        //alert('1')
							    var checkStatus = treeGrid.checkStatus(tableId)
							    //console.log(JSON.stringify(data))
								  var dataall='';
								  data = checkStatus.data;
							 
								  //循環把所有要刪除的ID整成12,13,545
								  for(var i=0;i<checkStatus.data.length;i++){
										 dataall += data[i].id+",";
									}
									dataall=dataall.substring(0,dataall.length-1)
									//alert(dataall)
									 //layer.alert(dataall);
										 layer.confirm('真的刪除行麼', function(index){
												//obj.del();
												//id= data.id;
														layer.close(index);
															 $.ajax({
																	url:'{:url('del')}',
																	type:"post",
																	data:{id:dataall},
																	async:true,
																	success:function(data){
																	     if(data[0]==1){
																		      layer.msg(data[1]);
																		    //table.reload(treeTable)
									                      //self.location='{:url('index')}';
																				}else{
																					layer.msg('失敗!'+data[1]);
																					 //
																				}
																				//table.reload(treeTable)
																				ptable()
																		
																	},
																	error:function(){
																	  layer.msg('頁面跳轉失敗!');
																	}
															});
								      });
    }
        
//  function openorclose() {
//      var map=treeGrid.getDataMap(tableId);
//      //var o= map['257','259'];
//       
//      
//      treeGrid.treeNodeOpen(o,!o.is_open);
//  }

    function getCheckData() {
        var checkStatus = treeGrid.checkStatus(tableId)
            ,data = checkStatus.data;
        layer.alert(JSON.stringify(data));
    }
    function getCheckLength() {
        var checkStatus = treeGrid.checkStatus(tableId)
            ,data = checkStatus.data;
        layer.msg('選中了:'+ data.length + ' 個');
    }
</script>
</body>
</html>

控制器代碼

<?php
namespace app\admin\controller;
use think\Controller;
use think\Validate;
use think\Db;
use think\db\Where;

class Menu extends Common{
		
	/**
	 * 欄目列表
	 */
    public function index(){

//		$res = Db::name('menu')->where('level',1)->order('sort desc')->select(); 
//		menujson(0,'ok',$res); 	
		
        return $this->fetch();
    }
	/**
	 * 導航菜單JSON數據
	 */
    public function menujsondata(){
    	
    	$action=input('action');
    	$model=input('model');
    	
    	if($action =='js_category'){//其它欄目引用導航菜單數據
    	//其它欄目引用導航菜單數據
    		
    		        $where = new Where;
    		
    		        if($model){//模型  只顯示對應模型的菜單 1=產品  2文章 3單頁 4bbs 5留言 6招聘
    		        	$where['model'] = $model;
    		        }
    		       
		    		$res = Db::name('menu')->field('id as value,title as name,pid')->where($where)->where('deleted',0)->whereNull('pid')->order('sort desc,id desc')->select(); 
		    		foreach
		    		($res as $k => $rs){
   
							 $rs['children']=getMenuData($rs['value'],'menu');
							 $res[$k]= $rs;
		    		}
		    		echo json_encode($res);

    	}elseif($action =='make_jsondate'){//生成菜單JSON文件
    	//生成菜單JSON文件
    	
		    		$res = Db::name('menu')->field('id as value,title as name,pid,controller,position,hide_banner,model,url')->where('deleted',0)->where('hide',0)->whereNull('pid')->order('sort desc,id desc')->select(); 
		    		$count = count($res);
		    		foreach($res as $k => $rs){
   
							 $rs['children']=getMenuData($rs['value'],'menu',1);
							 $res[$k]= $rs;
		    		}
		            $result=array(  
		              'code'=>0,  
		              'msg'=>'成功', 
					  'count'=>$count,  
		              'data'=>$res   
		            ); 
            
					$json_string = json_encode($result);
					
					  //把數據加密
//					  $json_string=ctd3des($json_string);
						 
					$json_url="static/json/menu.json";//文件名稱和路徑
					// 寫入文件
					$rs = file_put_contents($json_url, $json_string);
					if(file_exists($json_url)){//file_exists() 函數檢查文件或目錄是否存在。如果指定的文件或目錄存在則返回 true,否則返回 false。
						echo "生成成功";
					}else{
						echo "生成失敗";
					}
    		
    	}else{
    		//列表數據
				$res = Db::name('menu')->where('deleted',0)->order('sort desc,id desc')->select(); //deleted 0正常 1回收站
				$count = count($res);
				foreach($res as $k => $rs){
						      $data[$k]['id']=$rs['id'];
						      $data[$k]['name']=$rs['title'];
						      
						      //先判斷是否有下級數據  有則加上參數is_open
								      $where1['pid']=$rs['id'];
								      $checkRepeat=checkRepeat('menu',$where1,0);//一種有條件(比如自身修改)的查詢重複
								      if($checkRepeat){
								           $data[$k]['is_open']=false;//true=展開  false=收起 
								      }
								      
						      $data[$k]['sort']=$rs['sort'];//排序
						      $data[$k]['icon']=$rs['icon'];
							  $data[$k]['hide']=$rs['hide'];
							  $data[$k]['url']=$rs['url'];
							  $data[$k]['position']=$rs['position'];
							  $data[$k]['model']=$rs['model'];
							  $data[$k]['hide_banner']=$rs['hide_banner'];
							  $data[$k]['controller']=$rs['controller'];
							  $data[$k]['img']=$rs['img'];
							  $data[$k]['pId']=$rs['pid'];
				}
				json(0,'',$count,$data); 
					
 	    }
	
    }
//	/**
//	 * 生成導航菜單JSON數據
//	 */
//  public function makemenujsondata(){
//
//		       
//		    $res = Db::name('menu')->field('id as value,title as name,pid')->where($where)->where('position','in','1,3')->where('deleted',0)->where('hide',0)->whereNull('pid')->order(['sort'=>'desc'])->select(); 
//		    		foreach($res as $k => $rs){
// 
//							 $rs['children']=getMenuData($rs['value'],'menu');
//							 $res[$k]= $rs;
//		    		}
//
//				
//          $result=array(  
//            'code'=>0,  
//            'msg'=>'成功', 
//			  'count'=>$count,  
//            'data'=>$res   
//          ); 
//          
//					$json_string = json_encode($result);
//					$json_url="static/json/menu.json";//文件名稱和路徑
//					// 寫入文件
//					$rs = file_put_contents($json_url, $json_string);
//					if(file_exists($json_url)){//file_exists() 函數檢查文件或目錄是否存在。如果指定的文件或目錄存在則返回 true,否則返回 false。
//						echo "生成成功";
//					}else{
//						echo "生成失敗";
//					}
//					
//
//  }  
    

    
//public function getList($id) {
//		$select = '';
//		$rs=Db::name('t')->where('id',$id)->find();
//		$select .=$rs['title'];
//		if($rs['pid']!=0){
//			$this->getList($id);
//		}	
//}  
    
    
	/**
	 * 添加導航菜單、保存
	 */
    public function add(){
    	
 			$id=input('id');
 			$this->assign('id',$id);
			$pid=input('pid');
			$title=input('title');
			$action=input('action');
			$this->assign('action',$action);
			$field=input('field');
			$this->assign('field',$field);
			
			if($id){//更新圖標要用
					//列出數據
					$rs=Db::name('menu')->field('id,icon,position,model,level,img')->where('id',$id)->find();
					$this->assign('rs',$rs);
			}
			
			//ajax 更新標題
		 			if($action=="ajax_add"  && $title){
		 				      // echo ($id."|".$pid."|".$title);die;
		 				
		 				   $data_ajax['title']=$title;
		 				   if($pid){
		 				   	   $data_ajax['pid']=$pid;
		 				   	   
		 				   	    $rsm=Db::name('menu')->field('model,level,pid_all')->where('id',$pid)->find();
		 				   	    
		 				   	    //判斷是否超過4級
		 				   	    if($rsm['level']==3){
										$arr['code']=2;
										$arr['msg']="錯誤:只能創建不超四級的欄目";
										$arr['title']=$title;
										$arr['menuid']='';
										return $arr;die;
		 				   	    }
		 				   	    
		 				   	    //記錄上級的所有ID
		 				   	    if($rsm['pid_all']){
		 				   	    	$data_ajax['pid_all']=$rsm['pid_all'].",".$pid;
		 				   	    }else{
		 				   	    	$data_ajax['pid_all']=$pid;
		 				   	    }
		 				   	    
		 				   	    $data_ajax['level']=$rsm['level']+1;
		 				   }
		 				   
						     //$rs=db('menu')->insert($data_ajax);
						     $menuid=db('menu')->insertGetId($data_ajax);
		
							
							if($menuid){
								$arr['code']=1;
								$arr['msg']="添加成功";
								$arr['title']=$title;
								$arr['menuid']=$menuid;
								 //$se="更新成功";
							}else{
								$arr['code']=2;
								$arr['msg']="添加失敗";
								$arr['title']=$title;
								$arr['menuid']='';
							}
							return $arr;die;
		 			}
			
        return $this->fetch();
    }
	
	/**
	 * 編輯導航菜單、保存
	 */
    public function edit(){
    	    $action=input('action');
 			$id=input('id');
 			$field=input('field');

			$title=input('title');
			$icon=input('icon');
			$url=input('url');
			$sort=input('sort');
			$hide=input('hide');
			//$position=input('position');
			//dump($title);die;
			//$spread=input('spread');
			//$controller=input('controller');
			$pid=input('pid');

			
			
			//ajax 更新標題
 			if($action=="ajax_update" && $id){//更新字段值
 				

			 		$field=$field=="name"?"title":$field;//當字段是name是要轉換成數據庫對應的字段title
			 		
//			 		//同步更新對應的控制器controller
//			 		if($field=="model"){
//				 			if($title==1){
//				 				$controller="Live";//直播
//				 			}elseif($title==2){
//				 				$controller="News";//文章
//				 			}elseif($title==3){
//				 				$controller="Web";//單頁
//				 			}elseif($title==4){
//				 				$controller="Bbs";//bbs
//				 			}elseif($title==5){
//				 				$controller="Feedback";//留言、問題反饋
//				 			}elseif($title==6){
//				 				$controller="Job";//招聘
//				 			}elseif($title==7){
//				 				$controller="Video";//點播
//				 			}elseif($title==8){
//				 				$controller="Shop";//商城
//				 			}elseif($title==9){
//				 				$controller="Team";//團隊
//				 			}elseif($title==10){
//				 				$controller="Testpaper";//題庫
//				 			}elseif($title==11){
//				 				$controller="Abouts";//簡介
//				 			}elseif($title==12){
//				 				$controller="Combination";//組合
//				 			}elseif($title==13){
//				 				$controller="Link";//友情鏈接
//				 			}elseif($title==0){
//				 				$controller="Index";//首頁
//				 			}
//					 		if($controller){
//					 			$data['controller']=$controller;
//					 		}
//			 		}

			 		

					//app導航圖標圖片
                    if($field=="img" && $id){
						    //上傳文件 圖片
						    $files = request()->file('image');
						    //dump($files);
						    
							if($files){
								$files_arr=upload($files,'200000','jpg,png,gif');//上傳文件,大小,格式
								   //判斷是否上傳成功
									$info = explode(',',$files_arr);  
									if($info[0]==1){//1=成功
									       //$data['img']=$info[1];
									       $data[$field]=$info[1];
									}elseif($info[0]==2){//失敗
									 	  //$this->error('錯誤:'.$info[1]);die;
											$arr['code']=2;
											$arr['msg']="更新失敗";
											//$arr['title']=$title;
									}
							}
					}else{
						$data[$field]=$title;
					}
			 		

			 		
			 		$rs=Db::name('menu')->where('id', $id)->update($data);
					//$rs=Db::name('menu')->where('id', $id)->update([$field => $title]);
					
							//更新模型,需要同步修改所有下級的模型類型
									if($field=="model"){
										Db::name('menu')->where('FIND_IN_SET(:id,pid_all)',['id' => $id])->update([$field => $title]);
									}
					
					if($rs){
						$arr['code']=1;
						$arr['msg']="更新成功";
						$arr['title']=$title;
						 //$se="更新成功";
					}else{
						$arr['code']=2;
						$arr['msg']="更新失敗";
						$arr['title']=$title;
					}
					
					if($field=="icon" || $field=="position" || $field=="img"){//更新icon圖標、位置、app導航圖標圖片
						return $arr['msg'];die;
					}else{
						return $arr;die;
					}
					
					
 				
 			}

    }


//通用刪除
	public function del(){
		
			$id=input('id');//id
			$dataname="menu";//表名
			$m=input('m');//m 0回收站 1真正刪除
			if(!$id && !$dataname){
				$this->error('錯誤:參數不爲空!');
			}
			if($m){//真正刪除
				$del_info=del($dataname,$id,0,$dataname,'pid',1);
			}else{//回收站
				$del_info=del($dataname,$id,1,$dataname,'pid');
			}
			
			$del_info = explode(',',$del_info);  
			if($del_info[0]==1){//1=成功
				$date=[1,$del_info[1]];
			}elseif($del_info[0]==2){//失敗
				$date=[0,$del_info[1]];
			}
            return $date;
	}
	
//圖標
	public function icon(){
		
		return $this->fetch();
	}
	
//回收站
	public function recycle(){
		
		$action=input('action');
		
		if($action=="jsonData"){//返回回收站數據
				$page=input('page');//頁數
				$limit=input('limit');//一頁多少條記錄
				//$type=input('type');//搜索分類
				$key=input('key');//搜索關鍵詞
				
				$rs = recycle('menu',$limit,$page);//返回數據集

				json(0,'ok',$rs['count'],$rs['data']);
			
		}else{
			return $this->fetch();
		}
		
		
	}
	
//數據恢復
	public function recovery(){
		    $id=input('id');
		    if($id){
		    	
//					$info=updatefield('menu',$id,'deleted',0);
//					$info = explode(',',$info); //轉成數據
//                  return $info;

		    	$dataname="menu";//表名
		    	
		    	  //要恢復數據,先把原數據的標題後面加"_恢復"  例子:sffdsf__恢復
		    	      //先取原標題
			    	    $t_rs=Db::name($dataname)->field('title')->where('id',$id)->find();
			    	    $title_valeu=$t_rs['title']."__恢復".date('Y-m-d H:i:s',time());
			    	    $titleinfo=updatefield($dataname,$id,'title',$title_valeu);
			    	    if($titleinfo){
								$info=updatefield($dataname,$id,'deleted',0);
								$info = explode(',',$info); //轉成數據
			                    return $info;
			    	    }else{
			    	    	
			    	    	   $info[]=2;
			    	    	   $info[]="添加標題恢復後綴出錯!";
			    	    	   return $info;
			    	    }

		   }else{
				   $this->error('錯誤:參數爲空!', 'recycle');
		   	
		   }

	}
	
	


}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章