• Layui之新增修改功能


    一、准备工作

     前端代码布局

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@ include file='/common/header.jsp' %>
    4. html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    5. <html>
    6. <head>
    7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    8. <title>Insert title heretitle>
    9. head>
    10. <body>
    11. <div class="layui-form-item">
    12. <div class="layui-inline">
    13. <label class="layui-form-label">验证手机label>
    14. <div class="layui-input-inline">
    15. <input type="tel" name="phone" lay-verify="required|phone" autocomplete="off" class="layui-input">
    16. div>
    17. div>
    18. <div class="layui-inline">
    19. <div class="layui-input-inline">
    20. <button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交button>
    21. div>
    22. div>
    23. div>
    24. <table class="layui-hide" id="test" lay-filter="test">table>
    25. <script type="text/html" id="toolbarDemo">
    26. <div class="layui-btn-container">
    27. <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据button>
    28. <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目button>
    29. <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选button>
    30. div>
    31. script>
    32. <script type="text/html" id="barDemo">
    33. <a class="layui-btn layui-btn-xs" lay-event="edit">编辑a>
    34. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除a>
    35. script>
    36. <script>
    37. layui.use('table', function(){
    38. var table = layui.table;
    39. table.render({
    40. elem: '#test'
    41. ,url:''
    42. ,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
    43. ,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
    44. title: '提示'
    45. ,layEvent: 'LAYTABLE_TIPS'
    46. ,icon: 'layui-icon-tips'
    47. }]
    48. ,title: '用户数据表'
    49. ,cols: [[
    50. {type: 'checkbox', fixed: 'left'}
    51. ,{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true}
    52. ,{field:'username', title:'用户名', width:120, edit: 'text'}
    53. ,{field:'email', title:'邮箱', width:150, edit: 'text', templet: function(res){
    54. return ''+ res.email +''
    55. }}
    56. ,{field:'sex', title:'性别', width:80, edit: 'text', sort: true}
    57. ,{field:'city', title:'城市', width:100}
    58. ,{field:'sign', title:'签名'}
    59. ,{field:'experience', title:'积分', width:80, sort: true}
    60. ,{field:'ip', title:'IP', width:120}
    61. ,{field:'logins', title:'登入次数', width:100, sort: true}
    62. ,{field:'joinTime', title:'加入时间', width:120}
    63. ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
    64. ]]
    65. ,page: true
    66. });
    67. //头工具栏事件
    68. table.on('toolbar(test)', function(obj){
    69. var checkStatus = table.checkStatus(obj.config.id);
    70. switch(obj.event){
    71. case 'getCheckData':
    72. var data = checkStatus.data;
    73. layer.alert(JSON.stringify(data));
    74. break;
    75. case 'getCheckLength':
    76. var data = checkStatus.data;
    77. layer.msg('选中了:'+ data.length + ' 个');
    78. break;
    79. case 'isAll':
    80. layer.msg(checkStatus.isAll ? '全选': '未全选');
    81. break;
    82. //自定义头工具栏右侧图标 - 提示
    83. case 'LAYTABLE_TIPS':
    84. layer.alert('这是工具栏右侧自定义的一个图标按钮');
    85. break;
    86. };
    87. });
    88. //监听行工具事件
    89. table.on('tool(test)', function(obj){
    90. var data = obj.data;
    91. //console.log(obj)
    92. if(obj.event === 'del'){
    93. layer.confirm('真的删除行么', function(index){
    94. obj.del();
    95. layer.close(index);
    96. });
    97. } else if(obj.event === 'edit'){
    98. layer.prompt({
    99. formType: 2
    100. ,value: data.email
    101. }, function(value, index){
    102. obj.update({
    103. email: value
    104. });
    105. layer.close(index);
    106. });
    107. }
    108. });
    109. });
    110. //Ajax获取
    111. $.post('url', {}, function(str){
    112. layer.open({
    113. type: 1,
    114. content: str //注意,如果str是object,那么需要字符拼接。
    115. });
    116. });
    117. script>
    118. body>
    119. html>

     整体效果图如

     后台代码如dao类

     =============================查询=====================================================================

    package com.zking.dao;

    import java.util.List;
    import java.util.Map;

    import com.zking.entity.User;
    import com.zking.util.BaseDao;
    import com.zking.util.PageBean;
    import com.zking.util.StringUtils;

    public class UserDao extends BaseDao {

        public User login(User user )throws Exception {
            String sql="select * from t_oa_user where loginName='"+user.getLoginName()+"' and pwd='"+user.getPwd()+"'";
            List users= super.executeQuery(sql, User.class,null);
            return  users==null||users.size()==0 ?null:users.get(0);
        }
        public List> list(User user,PageBean pagebean) throws Exception {
            String sql="select *, \r\n" + 
                    "(case  rid \r\n" + 
                    "when 1 then '管理员 ' \r\n" + 
                    "when 2 then '发起者 ' \r\n" + 
                    "when 3 then '审批者  ' \r\n" + 
                    "when 4 then '参与者 ' \r\n" + 
                    "when 5 then '会议室管理员' \r\n" + 
                    "else '其他' end) roleName  \r\n" + 
                    "from t_oa_user  where 1=1";
            String name=user.getName();
            if(StringUtils.isNotBlank(name)) {
                sql+=" and name like '%"+name+"%'";
                
            }
            return super.executeQuery(sql, pagebean);
            
        }
        

     修改、删除增加等功能

        //修改用户
        public int edit(User user) throws Exception {
            String sql="update t_oa_user set name=?,loginName=?,pwd=? where id=?";
            return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd","id"});
            
        }
        
        
        //删除用户

        public int del(User user) throws Exception {
            String sql="delete t_oa_user where id=?";
            return super.executeUpdate(sql, user, new String[] {"id"});
            
        }
       
        
    //增加用户
        public int add(User user) throws Exception {
            String sql="insert into t_oa_user (name,loginName,pwd) values(?,?,?)";
            return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd"});
            
        }
        
        

     UserAction类

    1. package com.zking.web;
    2. import java.util.HashMap;
    3. import java.util.List;
    4. import java.util.Map;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import com.zking.dao.UserDao;
    8. import com.zking.entity.User;
    9. import com.zking.framework.ActionSupport;
    10. import com.zking.framework.ModelDriver;
    11. import com.zking.util.PageBean;
    12. import com.zking.util.R;
    13. import com.zking.util.ResponseUtil;
    14. public class UserAction extends ActionSupport implements ModelDriver<User>{
    15. private User user=new User();
    16. private UserDao userdao=new UserDao();
    17. //写一个方法处理前台的请求
    18. //作用传参数
    19. @Override
    20. public String execute(HttpServletRequest req, HttpServletResponse resp) {
    21. Map<String , Object> map=new HashMap<String, Object>();
    22. if("张三".equals(user.getLoginName())&&"123456".equals(user.getPwd())) {
    23. // 登录成功
    24. map.put("code", 200);
    25. map.put("msg", "成功");
    26. }
    27. else {
    28. // 登录失败!
    29. map.put("code", 0);
    30. map.put("msg", "账户名或者密码有误!");
    31. }
    32. try {
    33. ResponseUtil.writeJson(resp, map);
    34. } catch (Exception e) {
    35. e.printStackTrace();
    36. }
    37. return null;
    38. }
    39. //
    40. // //简化代码
    41. // @Override
    42. // public String execute(HttpServletRequest req, HttpServletResponse resp) {
    43. // Map map = new HashMap();
    44. // if ("张三".equals(u.getUsername()) && "123456".equals(u.getPassword())) {
    45. // try {
    46. // ResponseUtil.writeJson(resp, new R().data("code", 200).data("msg", "成功"));
    47. // } catch (Exception e) {
    48. // e.printStackTrace();
    49. // }
    50. // } else {
    51. // try {
    52. // ResponseUtil.writeJson(resp, new R().data("code", 0).data("msg", "失败"));
    53. // } catch (Exception e) {
    54. // e.printStackTrace();
    55. // }
    56. //
    57. // }
    58. // try {
    59. // ResponseUtil.writeJson(resp, map);
    60. // } catch (Exception e) {
    61. // e.printStackTrace();
    62. // }
    63. // return null;
    64. // }
    65. //
    66. public String login(HttpServletRequest req, HttpServletResponse resp) {
    67. try {
    68. User u=userdao.login(user);
    69. if(u!=null) {
    70. ResponseUtil.writeJson(resp, R.ok(200, "成功"));
    71. }
    72. else {
    73. ResponseUtil.writeJson(resp, R.ok(0, "用户名或者密码错误"));
    74. }
    75. } catch (Exception e) {
    76. e.printStackTrace();
    77. try {
    78. ResponseUtil.writeJson(resp, R.ok(0, "用户名或者密码错误"));
    79. } catch (Exception e2) {
    80. e2.printStackTrace();
    81. }
    82. }
    83. return null;
    84. }
    85. public String list(HttpServletRequest req, HttpServletResponse resp) {
    86. try {
    87. PageBean pagebean=new PageBean();
    88. pagebean.setRequest(req);
    89. List<Map<String, Object>> users=userdao.list(user, pagebean);
    90. ResponseUtil.writeJson(resp, R.ok(0,"用户数据查询成功",pagebean.getTotal()));
    91. } catch (Exception e) {
    92. e.printStackTrace();
    93. try {
    94. ResponseUtil.writeJson(resp, R.ok(0, "用户名或者密码错误"));
    95. } catch (Exception e2) {
    96. e2.printStackTrace();
    97. }
    98. }
    99. return null;
    100. }
    101. public String add(HttpServletRequest req, HttpServletResponse resp) {
    102. try {
    103. int rs=userdao.add(user);
    104. if(rs>0) {
    105. ResponseUtil.writeJson(resp, R.ok(200, "用户主增加成功"));
    106. }
    107. else {
    108. ResponseUtil.writeJson(resp, R.ok(0, "用户数据查询失败"));
    109. }
    110. } catch (Exception e) {
    111. e.printStackTrace();
    112. try {
    113. ResponseUtil.writeJson(resp, R.ok(0, "用户数据查询失败"));
    114. } catch (Exception e2) {
    115. e2.printStackTrace();
    116. }
    117. }
    118. return null;
    119. }
    120. public String del(HttpServletRequest req, HttpServletResponse resp) {
    121. try {
    122. int rs=userdao.del(user);
    123. if(rs>0) {
    124. ResponseUtil.writeJson(resp, R.ok(200, "用户主删除成功"));
    125. }
    126. else {
    127. ResponseUtil.writeJson(resp, R.ok(0, "用户数据删除失败"));
    128. }
    129. } catch (Exception e) {
    130. e.printStackTrace();
    131. try {
    132. ResponseUtil.writeJson(resp, R.ok(0, "用户数据删除失败"));
    133. } catch (Exception e2) {
    134. e2.printStackTrace();
    135. }
    136. }
    137. return null;
    138. }
    139. public String edit(HttpServletRequest req, HttpServletResponse resp) {
    140. try {
    141. int rs=userdao.edit(user);
    142. if(rs>0) {
    143. ResponseUtil.writeJson(resp, R.ok(200, "用户主修改成功"));
    144. }
    145. else {
    146. ResponseUtil.writeJson(resp, R.ok(0, "用户数据修改失败"));
    147. }
    148. } catch (Exception e) {
    149. e.printStackTrace();
    150. try {
    151. ResponseUtil.writeJson(resp, R.ok(0, "用户数据修改失败"));
    152. } catch (Exception e2) {
    153. e2.printStackTrace();
    154. }
    155. }
    156. return null;
    157. }
    158. @Override
    159. public User getModel() {
    160. return user;
    161. }
    162. }

    UserDaoTest测试类

    package com.zking.dao;

    import static org.junit.Assert.*;

    import java.util.List;
    import java.util.Map;

    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;

    import com.zking.entity.User;
    import com.zking.util.PageBean;

    /**
     * @author lucy
     * junit测试类
     *
     */
    public class UserDaoTest {
            private UserDao userdao=new UserDao();
        @Before
        public void setUp() throws Exception {
        }

        @After
        public void tearDown() throws Exception {
        }

        
        @Test
        public void testLogin() {
            fail("Not yet implemented");
        }

        @Test
        public void testList() {//查询
            PageBean pagebean =new PageBean();
            User user=new User();
            try {
                List> list=userdao.list(user, pagebean);
            for (Map map : list) {
                System.out.println(map);
            }
            } catch (Exception e) {
                e.printStackTrace();
            }
            
        }

        @Test
        public void testEdit() {//修改
            User user =new User();
            user.setName("李哈哈");
            user.setLoginName("lhh");
            user.setPwd("123");
            user.setId(17L);
            try {
                userdao.edit(user);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @Test
        public void testDel() {//删除
            User user =new User();
            user.setId(17L);
            try {
                userdao.del(user);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @Test
        public void testAdd() {//增加
            User user =new User();
            user.setName("李哈哈");
            user.setLoginName("lhh");
            user.setPwd("123");
            try {
                userdao.add(user);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        }

     list集合


    二、新增

     userManager.js

    1. /3.对话框
    2. function open(title){
    3. layer.open({
    4. type: 2, //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
    5. title:title,
    6. area: ['660px', '340px'], //宽高
    7. skin: 'layui-layer-rim', //样式类名
    8. content: $("#ctx").val()+'/jsp/system/userEdit.jsp', //书本编辑页面
    9. btn:['保存','关闭','批量新增'],
    10. yes: function(index, layero){
    11. //调用子页面中提供的getData方法,快速获取子页面的form表单数据
    12. let data= $(layero).find("iframe")[0].contentWindow.getData();
    13. console.log(data);
    14. //判断title标题
    15. let methodName="add";
    16. if(title=="编辑")
    17. methodName="edit";
    18. $.post($("#ctx").val()+'/user.action?methodName='+methodName,
    19. data,function(rs){
    20. if(rs.success){
    21. //关闭对话框
    22. layer.closeAll();
    23. //调用查询方法刷新数据
    24. query();
    25. }else{
    26. layer.msg(rs.msg,function(){});
    27. }
    28. },'json');
    29. },
    30. btn2: function(index, layero){
    31. layer.closeAll();
    32. },
    33. btn3: function(index, layero){
    34. layer.msg("批量新增");
    35. return false;//不关闭弹出层
    36. }
    37. });
    38. }

     header.jsp头部导入

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
       






     

        



    前端代码userManager.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@ include file='/common/header.jsp' %>




           



        


          

            
            

              
            

          

          
          

            

              
              
            

          

          
        

        
        

        
        
        
        


    效果图


    三、修改

     useredit.js

    let layer,form,$;
    layui.use(['layer','form','jquery'],function(){
        layer=layui.layer,form=layui.form,$=layui.jquery;
        initData();
    });

    function initData(){
        console.log(parent.row);
        if(null!=parent.row){
             //因为layui.each内部的逻辑问题导致的所以要先深拷贝一份然后再去val
             //parent.row:表格行对象
             form.val('user',$.extend({}, parent.row||{}));
             //$('#name').attr('readonly','readonly');
        }
    }

    function getData(){
        return form.val('user');
    }

    useredit.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ include file="/common/header.jsp"%>





    用户新增




       

           
           

               
               

                   
               

           

           

               
               

                   
               

           

           

               
               

                   
               

           

           

               
               

                   
               

           

       



     

    四、删除

    userManager.js

    //在页面中的

    中必须配置lay-filter="tb_goods"属性才能触发属性!!!
        table.on('tool(tb)', function (obj) {
            row = obj.data;
            if (obj.event == "edit") {
                open("编辑");
            }else if(obj.event == "del"){
                layer.confirm('确认删除吗?', {icon: 3, title:'提示'}, function(index){
                  $.post($("#ctx").val()+'/user.action',{
                      'methodName':'del',
                      'id':row.id
                  },function(rs){
                      if(rs.success){
                           //调用查询方法刷新数据
                           query();
                       }else{
                           layer.msg(rs.msg,function(){});
                       }
                  },'json');
                  layer.close(index);
                });
            }else{

            }
        });
        
    }

     


  • 相关阅读:
    [七夕节]——一款基于canvas绘制五颜六色线条合成一个爱心发光动画特效
    第一篇:参考资料地址
    【Pandas包】-文章汇总
    Docker Compose和Consul
    计算机毕业设计(附源码)python游戏盒子系统
    电容笔有什么用?电容笔十大品牌排行
    Qt编写物联网管理平台36-通信协议
    推荐一个高效测试用例工具:XMind2TestCase..
    SystemVerilog-决策语句-case语句
    ArrayList和CopyOnWriteArrayList
  • 原文地址:https://blog.csdn.net/qq_66924116/article/details/125891623