springBoot+layui+jquery+layui弹窗 下拉框
layui 的增删改查 。。。 废话不多说上代码
由于时间原因 暂时只实现了查询的后台完整代码
其他的会之后贴出来 其实与查询相似 有需要的可以等我贴出 也可以照着查询仿写
先展现效果
前台代码
前台代码
1 body> 2 3 <div class="demoTable" style="margin-top: 50px"> 4 <div class="layui-inline"> 5 <form class="layui-form"> 6 <div class="layui-form-item" 7 style="margin-bottom: 0px; margin-top: 3px"> 8 <select name="demoReload" lay-filter="demoReload" id="demoReload"> 9 <option value="">请选择类型</option> 10 </select> 11 </div> 12 13 <div class="layui-form-item layui-form-pane " pane 14 style="width: 735px;margin-top:3px""> 15 <label class="layui-form-label"> 请选择范围</label> 16 <div class="layui-input-block" style="width: 700px;"> 17 <input type="text" id="startTime" class="layui-input" 18 placeholder="开始时间" style="width: 300px; display:inline;" /> <input 19 type="text" id="endTime" class="layui-input" placeholder="结束时间" 20 style="margin-left:20px; width: 300px; display:inline;" /> 21 </div> 22 </div> 23 24 25 </form> 26 </div> 27 <button class="layui-btn" data-type="reload">搜索</button> 28 <button class="layui-btn" data-type="click">添加</button> 29 </div> 30 31 <table class="layui-hide" id="LAY_table_user" lay-filter="user"></table> 32 33 <div class="layui-row" id="test" style="display: none;"> 34 <div class="layui-col-md10" style="margin-top:30px"> 35 <form class="layui-form" id="endit" lay-filter="example"> 36 <div class="layui-form-item" id="recordno"> 37 <label class="layui-form-label">记录编号:</label> 38 <div class="layui-input-block"> 39 <input type="text" name="recordno" id="recordno" 40 class="layui-input"> 41 </div> 42 </div> 43 <div class="layui-form-item"> 44 <label class="layui-form-label">变动金额:</label> 45 <div class="layui-input-block"> 46 <input type="text" name="recordmoney" class="layui-input"> 47 </div> 48 </div> 49 <div class="layui-form-item"> 50 <label class="layui-form-label">类型:</label> 51 <div class="layui-input-block"> 52 <select name="ecordremar" lay-filter="ecordremar" id="ecordremar"> 53 <option value="">请选择</option> 54 </select> 55 </div> 56 </div> 57 58 <div class="layui-inline" style="width:335px"> 59 <label class="layui-form-label">日期选择</label> 60 <div class="layui-input-block"> 61 <input name="recordtime" id="date1" autocomplete="off" 62 class="layui-input" type="text"> 63 </div> 64 </div> 65 </form> 66 </div> 67 </div> 68 69 70 71 72 <script type="text/html" id="barDemo"> 73 <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">添加</a> 74 <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a> 75 <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> 76 </script> 77 <!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 --> 78 <script type="text/javascript" 79 src="views/js/layui-v2.3.0/layui/layui.js" charset="utf-8"></script> 80 <script> 81 82 var form='';//定义全局变量 83 layui.use(['form','laydate'],function(){ 84 form = layui.form, 85 laydate = layui.layuidate; 86 form.render();//更新渲染表单 87 }); 88 89 90 layui.use('table', function(){ 91 var table = layui.table; 92 //方法级渲染 93 table.render({ 94 elem: '#LAY_table_user' 95 ,url: '/AAATest/index' 96 ,cols: [[ 97 {field:'recordno', title: '记录编号', width:200,fixed: true} 98 ,{field:'recordtime', title: '记录时间', width:260} 99 ,{field:'recordmoney', title: '变动金额', width:300} 100 ,{field:'ecordremar', title: '类型', width:300} 101 ,{fixed: 'right', width:300, align:'center', toolbar: '#barDemo'} 102 103 ]], 104 /*数据回调*/ 105 done : function(res, curr, count){ 106 $.each(res.type,function(index,item){ 107 $('#demoReload').append(new Option(item.tradeName,item.tradeld));// 下拉菜单里添加元素 108 $('#ecordremar').append(new Option(item.tradeName,item.tradeld));// 下拉菜单里添加元素 109 }); 110 111 form.render();//下拉菜单渲染 把内容加载进去 112 113 114 } 115 ,id: 'testReload' 116 ,page: true 117 ,height:300 118 ,limit:5 119 }); 120 121 var $ = layui.$, active = { 122 reload: function(){ 123 var demoReload = $('#demoReload'); 124 //执行重载 125 table.reload('testReload', { 126 page: { 127 curr: 1 //重新从第 1 页开始 128 } 129 ,where: { 130 key: { 131 /** 132 *参数传递 133 */ 134 id: demoReload.val(),//类型参数 135 statime:$('#startTime').val(),//开始时间 136 endTime:$('#endTime').val()//结束时间 137 } 138 } 139 }); 140 } 141 142 }; 143 144 table.on('tool(user)', function(obj){ 145 var data = obj.data; 146 if(obj.event === 'detail'){ 147 148 //表单初始赋值 149 $("input").val(""); 150 $("#recordno").attr("style","display:none;");//隐藏div 151 form.render(); 152 layer.open({ 153 title:"添加" 154 ,type:1 155 ,moveOut:true 156 ,content:$("#test") 157 ,offset:['2%','40%'] 158 ,area:['400px','450px'] 159 ,btn:['提交','取消'], 160 yes:function(index,layero){ 161 //发送请求 162 } 163 164 }) 165 166 167 168 /* layer.msg('ID:'+ data.id + ' 的查看操作'); */ 169 } else if(obj.event === 'del'){ 170 layer.confirm('真的删除行么', function(index){ 171 //这里发送请求 172 }); 173 } else if(obj.event === 'edit'){ 174 layer.open({ 175 title:"修改" 176 ,type:1 177 ,moveOut:true 178 ,content:$("#test") 179 ,offset:['2%','40%'] 180 ,area:['400px','450px'] 181 ,btn:['提交','取消'], 182 yes:function(index,layero){ 183 //发送请求 184 } 185 186 }) 187 188 //表单初始赋值 189 form.val('example',data); 190 $("#recordno").attr("style","display:block;");//隐藏div 191 $("#recordno").attr('readonly','readonly'); 192 //渲染表单 193 //时间范围 194 layui.use('laydate',function(){ 195 var laydate = layui.laydate; 196 laydate.render({ 197 elem:'#date1', 198 type:'datetime' 199 }); 200 }); 201 form.render(); 202 } 203 }); 204 205 206 207 $('.demoTable .layui-btn').on('click', function(){ 208 209 var type = $(this).data('type'); 210 if(type=='click'){ 211 //表单初始赋值 212 $("input").val(""); 213 form.render(); 214 layer.open({ 215 title:"添加" 216 ,type:1 217 ,moveOut:true 218 ,content:$("#test") 219 ,offset:['2%','40%'] 220 ,area:['400px','450px'] 221 ,btn:['提交','取消'], 222 yes:function(index,layero){ 223 //发送请求 224 } 225 226 }) 227 228 } 229 active[type] ? active[type].call(this) : ''; 230 $('#demoReload').empty(); 231 $('#demoReload').append(new Option("请选择",'')); 232 form.render("select");//下拉菜单渲染 把内容加载进去 233 }); 234 }); 235 236 layui.use('laydate', function(){ 237 var laydate = layui.laydate; 238 239 //常规用法 240 laydate.render({ 241 elem: '#startTime', 242 type:'datetime' 243 }); 244 245 //常规用法 246 laydate.render({ 247 elem: '#endTime', 248 type:'datetime' 249 }); 250 251 }); 252 253 254 </script> 255 256 </html>
-------------------------------后台java 代码---声明后台使用SSM框架 springBoot----------------------------------
工程结构
1.分页实体类
1 package com.csn.vo; 2 3 4 import java.util.Map; 5 6 import org.apache.ibatis.type.Alias; 7 8 import lombok.ToString; 9 10 /*** 11 * 开启分页 12 * @author 23997 13 * @date 2018-7-3 下午8:34:50 14 * 15 */ 16 @Alias("PageInfo") 17 @ToString 18 public class PageInfo { 19 private int limit=10;//默认每页显示条数据 20 private int page=1;//默认从第一页显示 21 private int currentIndex; 22 private Map<String,Object> key ;//类型编号 23 public PageInfo() { 24 } 25 public int getLimit() { 26 return limit; 27 } 28 public void setLimit(int limit) { 29 this.limit = limit; 30 } 31 public int getPage() { 32 return page; 33 } 34 public void setPage(int page) { 35 this.page = page; 36 } 37 public int getCurrentIndex() { 38 return (page-1)*limit; 39 } 40 public void setCurrentIndex(int currentIndex) { 41 this.currentIndex = currentIndex; 42 } 43 public Map<String, Object> getKey() { 44 return key; 45 } 46 public void setKey(Map<String, Object> key) { 47 this.key = key; 48 } 49 } 50 51 2。返回结果实体类 52 53 package com.csn.vo; 54 import lombok.Data; 55 import lombok.ToString; 56 import org.apache.ibatis.type.Alias; 57 @Alias("ResultModel") 58 @Data 59 @ToString 60 public class ResultModel { 61 private int resultState=1;//默认返回状态为正确 62 private String message;//返回提示语 63 private Object obj;////返回结果 64 } 65 66 3,mapper 层接口 67 68 package com.csn.mapper; 69 import java.util.List; 70 import java.util.Map; 71 import com.csn.vo.PageInfo; 72 73 /*** 74 *易支付crud 75 * @author 23997 76 * @date 2018-7-3 下午8:27:49 77 * 78 */ 79 public interface IYfbankMapper { 80 81 /*** 82 * 查询数据展示首页 83 * @return 84 */ 85 List<Map> index(PageInfo page); 86 /*** 87 * 获取类型 88 * @return 89 */ 90 List<Map> getTradeType(); 91 /*** 92 * 获取总数 93 * @param page 94 * @return 95 */ 96 Map getCount(PageInfo page); 97 98 99 100 } 101 102 4.mybaties.xml sql实现 103 104 <?xml version="1.0" encoding="UTF-8" ?> 105 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 106 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 107 <mapper namespace="com.csn.mapper.IYfbankMapper"> 108 <sql id="s"> 109 <where> 110 <if test="key!=null"> 111 <if test="key.id!=null"> 112 and t.tradeld =#{key.id} 113 </if> 114 </if> 115 </where> 116 </sql> 117 <select id="index" resultType="map"> 118 select t.recordno,t.recordtime,t.recordmoney 119 ,t.ecordremar,t.tradeld,ty.tradeName 120 from tradeRecord t 121 left join tradeType ty 122 on t.tradeld=ty.tradeld 123 <include refid="s"/> 124 order by t.recordno desc limit #{currentIndex},#{limit}; 125 </select> 126 127 <select id="getCount" resultType="map"> 128 select count(t.recordno) count from tradeRecord t 129 <include refid="s"/> 130 </select> 131 <select id="getTradeType" resultType="map"> 132 select tradeld,tradeName from tradeType 133 </select> 134 135 </mapper> 136 137 5.封装了BaseService通用的返回类 138 139 package com.csn.service; 140 141 import com.csn.vo.ResultModel; 142 143 public class BaseService { 144 public ResultModel returnSuccess(String message){ 145 ResultModel rm = new ResultModel(); 146 rm.setMessage(message); 147 return rm; 148 } 149 public ResultModel returnSuccess(Object obj){ 150 ResultModel rm = new ResultModel(); 151 rm.setObj(obj); 152 return rm; 153 } 154 155 public ResultModel returnSuccess(String message,Object obj){ 156 ResultModel rm = new ResultModel(); 157 rm.setMessage(message); 158 rm.setObj(obj); 159 return rm; 160 } 161 162 public ResultModel returnError(String message){ 163 ResultModel rm = new ResultModel(); 164 rm.setMessage(message); 165 rm.setResultState(1); 166 return rm; 167 } 168 } 169 170 6.service服务层接口 171 172 package com.csn.service; 173 import java.util.Map; 174 import com.csn.vo.PageInfo; 175 176 /*** 177 * 服务层 178 * @author 23997 179 * @date 2018-7-3 下午9:00:58 180 * 181 */ 182 public interface IYfbankService { 183 /*** 184 * 主页显示 185 * @return 186 */ 187 Map index(PageInfo page); 188 189 } 190 191 7.service服务层实现类 192 193 package com.csn.service.impl; 194 import java.util.HashMap; 195 import java.util.List; 196 import java.util.Map; 197 import org.springframework.beans.factory.annotation.Autowired; 198 import org.springframework.stereotype.Service; 199 import com.csn.mapper.IYfbankMapper; 200 import com.csn.service.BaseService; 201 import com.csn.service.IYfbankService; 202 import com.csn.vo.PageInfo; 203 @Service 204 public class YfbankMapperImpl extends BaseService implements IYfbankService { 205 Map mp = new HashMap<>(); 206 @Autowired 207 private IYfbankMapper bankMapper; 208 @Override 209 public Map index(PageInfo page) { 210 List<Map> index = bankMapper.index(page); 211 if(index.isEmpty()){ 212 //当数据为空时提示用户数据库为空 213 mp.put("data",returnSuccess("对不起,数据为空")); 214 215 } //否则将数据返回 216 217 //mp装入的是layui默认的返回数据格式 218 219 mp.put("data",index); 220 mp.put("msg",1); 221 mp.put("count",bankMapper.getCount(page)); 222 mp.put("code",0); 223 mp.put("type",bankMapper.getTradeType());//这个例外是自己封装的数据类型 224 /* System.out.println(bankMapper.getTradeType());*/ 225 return mp; 226 } 227 228 } 229 8.controller控制层代码 230 package com.csn.controller; 231 import java.util.Map; 232 import org.springframework.beans.factory.annotation.Autowired; 233 import org.springframework.web.bind.annotation.RequestMapping; 234 import org.springframework.web.bind.annotation.RestController; 235 import com.csn.service.IYfbankService; 236 import com.csn.vo.PageInfo; 237 /*** 238 * YfbankMapper控制层 239 * @author 23997 240 * @date 2018-7-3 下午9:25:50 241 * 242 */ 243 @RestController 244 public class YfbankMapperController { 245 @Autowired 246 private IYfbankService YfbankService; 247 //将数据展示在首页 248 @RequestMapping("index") 249 public Map index(PageInfo page){ 250 try { 251 return YfbankService.index(page); 252 } catch (Exception e) { 253 e.printStackTrace(); 254 } 255 return null; 256 } 257 258 } 259 9.启动类 260 261 package com.csn; 262 import org.mybatis.spring.annotation.MapperScan; 263 import org.springframework.boot.SpringApplication; 264 import org.springframework.boot.autoconfigure.SpringBootApplication; 265 @SpringBootApplication 266 @MapperScan("com.csn.mapper") 267 public class App { 268 public static void main(String[] args) { 269 SpringApplication.run(App.class, args); 270 } 271 }