通用后台管理系统管理员模块的增删改查

原创2018-11-23 08:31:25123
摘要:总结:管理员的列表的渲染与输出:通过控制器完成对数据表的读取,并利用layui的表格将管理员信息进行循环输出,因管理员成员数并不多,可以不添加分页。管理员添加操作时需注意,用户名作为唯一登录条件,用户名不能重名,所以在添加操作前需读取数据表,查询该用户名是否存在。管理员的编辑页面与添加页面基本相同,所以可以将添加页面作为编辑页面使用,但需注意ID的传递以及是编辑还是添加的条件的判断,ID传递中会有

总结:

  1. 管理员的列表的渲染与输出:通过控制器完成对数据表的读取,并利用layui的表格将管理员信息进行循环输出,因管理员成员数并不多,可以不添加分页。

  2. 管理员添加操作时需注意,用户名作为唯一登录条件,用户名不能重名,所以在添加操作前需读取数据表,查询该用户名是否存在。

  3. 管理员的编辑页面与添加页面基本相同,所以可以将添加页面作为编辑页面使用,但需注意ID的传递以及是编辑还是添加的条件的判断,ID传递中会有空值存在,注意类型转换。

  4. 代码如下:

  5. 控制器代码:

  6. <?php
    namespace app\admins\controller;
    use think\Controller;
    use Util\SysDb;
    
    class Admin extends Base{
    	public function index(){
    		// 加载管理员列表
    		$data['lists'] = $this->db->table('admins')->order('id desc')->lists();
    		return $this->fetch('',$data);
    	}
    	// 添加管理员
    	public function add(){
    		$id = (int)input('get.id');//作为编辑用的管理员ID
    		$data['item'] = $this->db->table('admins')->where(array('id'=>$id))->item();
    
    		return $this->fetch('',$data);
    	}
    	// 保存管理员
    	public function save(){
    		$id = (int)input('post.id');
    		$data['username'] = trim(input('post.username'));
    		$data['gid'] = (int)input('post.gid');
    		$data['truename'] = trim(input('post.truename'));
    		$data['status'] = (int)input('post.status');
    		$password = input('post.password');
    
    		if(!$data['username']){
    			exit(json_encode(array('code'=>1,'msg'=>'用户名不能为空')));
    		}
    		if(!$data['gid']){
    			exit(json_encode(array('code'=>1,'msg'=>'角色不能为空')));
    		}
    		if(!$data['truename']){
    			exit(json_encode(array('code'=>1,'msg'=>'姓名不能为空')));
    		}
    
    		if($id==0 && !$password){
    			exit(json_encode(array('code'=>1,'msg'=>'请输入密码')));
    		}
    		if($password){
    			$data['password'] = md5($data['username'].$password);
    		}
    		
    		$res = true;
    		if($id == 0){
    			$item = $this->db->table('admins')->where(array('username'=>$data['username']))->item();
    			if($item){
    				exit(json_encode(array('code'=>1,'msg'=>'该用户已经存在')));
    			}
    			$data['add_time'] = time();
    			$res = $this->db->table('admins')->insert($data);
    		}else{
    			$res = $this->db->table('admins')->where(array('id'=>$id))->update($data);
    		}
    		if($res){
    			exit(json_encode(array('code'=>0,'msg'=>'保存成功')));
    		}else{
    			exit(json_encode(array('code'=>1,'msg'=>'保存失败')));
    		}
    		
    	}
    	// 删除管理员
    	public function delete(){
    		$id = (int)input('post.id');
    		$res = $this->db->table('admins')->where(array('id'=>$id))->delete();
    		if(!$res){
    			exit(json_encode(array('code'=>1,'msg'=>'删除失败')));
    		}
    		exit(json_encode(array('code'=>0,'msg'=>'删除成功')));
    	}
    }

    7.管理员index.html代码:

  7. <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    	<link rel="stylesheet" type="text/css" href="/static/plugins/layui/css/layui.css">
    	<script type="text/javascript" src="/static/plugins/layui/layui.js"></script>
    	<style type="text/css">
    		.header span{background: #009688;margin-left: 30px;padding: 10px;color: #ffffff;}
    		.header button{float: right;margin-top: -5px;}
    		.header div{border-bottom: solid 2px #009688;margin-top: 8px;}
    	</style>
    </head>
    <body style="padding: 10px;">
    	<div class="header">
    		<span>管理员列表</span>
    		<button class="layui-btn layui-btn-sm" onclick="add()">添加</button>
    		<div></div>
    	</div>
    	<table class="layui-table">
    		<thead>
    			<tr>
    				<th>ID</th>
    				<th>用户名</th>
    				<th>真实姓名</th>
    				<th>角色</th>
    				<th>状态</th>
    				<th>添加时间</th>
    				<th>操作</th>
    			</tr>
    		</thead>
    		<tbody>
    			{volist name='$lists' id="vo"}
    			<tr>
    				<td>{$vo.id}</td>
    				<td>{$vo.username}</td>
    				<td>{$vo.truename}</td>
    				<td>{$vo.gid}</td>
    				<td>{$vo.status==0?'正常':'<span style="color: red;">禁用</span>'}</td>
    				<td>{:date('Y-m-d H:i:s',$vo.add_time)}</td>
    				<td>
    					<button class="layui-btn layui-btn-xs" onclick="add({$vo.id})">编辑</button>
    					<button class="layui-btn layui-btn-danger layui-btn-xs" onclick="del({$vo.id})">删除</button>
    				</td>
    			</tr>
    			{/volist}
    		</tbody>
    	</table>
    </body>
    </html>
    <script type="text/javascript">
    	layui.use(['layer'],function(){
    		layer = layui.layer;
    		$ = layui.jquery;
    	});
    
    	// 添加
    	function add(id){
    		layer.open({
    			type:2,
    			title:id>0?'编辑管理员':'添加管理员',
    			shade:0.3,
    			area:['480px','420px'],
    			content:'/index.php/admins/admin/add?id='+id
    		});
    	}
    
    	// 删除
    	function del(id){
    		layer.confirm('确定要删除吗?',{
    			icon:3,
    			btn:['确定','取消']
    		},function(){
    			$.post('/index.php/admins/admin/delete',{'id':id},function(res){
    				if(res.code>0){
    					layer.alert(res.msg,{'icon':2});
    				}else{
    					layer.msg(res.msg,{'icon':1});
    					setTimeout(function(){window.location.reload();},1000);
    				}
    			},'json');
    		});
    	}
    </script>

    8.管理员add.html代码:

  8. <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    	<link rel="stylesheet" type="text/css" href="/static/plugins/layui/css/layui.css">
    	<script type="text/javascript" src="/static/plugins/layui/layui.js"></script>
    </head>
    <body style="padding: 10px;">
    	<form class="layui-form">
    		<input type="hidden" name="id" value="{$item.id}">
    		<div class="layui-form-item">
    			<label class="layui-form-label">用户名</label>
    			<div class="layui-input-inline">
    				<input type="text" class="layui-input" name="username" value="{$item.username}" <?=$item['id']>0?'readonly':''?>>
    			</div>
    		</div>
    
    		<div class="layui-form-item">
    			<label class="layui-form-label">角色</label>
    			<div class="layui-input-inline">
    				<select name="gid">
    					<option value="1">系统管理员</option>
    					<option value="2">开发人员</option>
    				</select>
    			</div>
    		</div>
    
    		<div class="layui-form-item">
    			<label class="layui-form-label">密码</label>
    			<div class="layui-input-inline">
    				<input type="password" class="layui-input" name="password">
    			</div>
    		</div>
    
    		<div class="layui-form-item">
    			<label class="layui-form-label">姓名</label>
    			<div class="layui-input-inline">
    				<input type="text" class="layui-input" name="truename" value="{$item.truename}">
    			</div>
    		</div>
    
    		<div class="layui-form-item">
    			<label class="layui-form-label">状态</label>
    			<div class="layui-input-inline">
    				<input type="checkbox" name="status" lay-skin="primary" title="禁用" value="1" {$item.status?'checked':''}>
    			</div>
    		</div>
    	</form>
    	<div class="layui-form-item">
    		<div class="layui-input-block">
    			<button class="layui-btn" onclick="save()">保存</button>
    		</div>
    	</div>
    </body>
    </html>
    <script type="text/javascript">
    	layui.use(['layer','form'],function(){
    		var form = layui.form;
    		layer = layui.layer;
    		$ = layui.jquery;
    	});
    	function save(){
    		var id = parseInt($('input[name="id"]').val());
    		var username = $.trim($('input[name="username"]').val());
    		var pwd = $.trim($('input[name="password"]').val());
    		var truename = $.trim($('input[name="truename"]').val());
    		var gid = $('select[name="gid"]').val();
    
    		if(username==''){
    			layer.alert('请输入用户名',{'icon':2});
    			return;
    		}
    		if(isNaN(id) && pwd==''){
    			layer.alert('请输入密码',{'icon':2});
    			return;
    		}
    		if(truename==''){
    			layer.alert('请输入真实姓名',{'icon':2});
    			return;
    		}
    
    		$.post('/index.php/admins/admin/save',$('form').serialize(),function(res){
    			if(res.code>0){
    				layer.alert(res.msg,{'icon':2});
    			}else{
    				layer.msg(res.msg,{'icon':1});
    
    				setTimeout(function(){parent.window.location.reload();},1000);
    			}
    		},'json');
    	}
    </script>

批改老师:韦小宝批改时间:2018-11-23 09:00:36
老师总结:不错!一如既往写的都很认真!继续加油吧!!!

发布手记

热门词条