记spring boot + Layui 数据对接

工作需要开发一个记录收费信息项目,我选择了用 Layui 作为前端框架模板,完成开发后记一下一些比较常用或者踩过的小坑:
①样式文件以及JS文件的引入:

//注意这里引入方式除了平常的 href 和 src ,最好再加上 th:href="@{}",src="@{}" 其中的 @{} 里边必须要以“/”开头,才能正确根据项目路径找到相应的静态资源
<link rel="stylesheet" th:href="@{/layui/css/layui.css}" href="../static/layui/css/layui.css" type="text/css" media="all">

<script th:src="@{/layui/layui.js}" src="../static/layui/layui.js" charset="utf-8"></script>

②初始化使用引入JS:

//form:加载form表单模块,需要使用时加载自己需要的模块,具体看官方文档
//$:加载内部的JS
layui.use(['form', "jquery"], function() {
	var form = layui.form,
			$ = layui.$;
	/**在这里做要处理的逻辑或者和后端交互,前端赋值,方法定义等**/
});

③前端页面间的数据传递:

layui.use(['form', "jquery"], function() {
	var form = layui.form,
			$ = layui.$;
		/**【路径存放】**/
		layui.sessionData('pathConfig', {
			key: 'path',
			value: 'http://localhost:8080/MavenBoot'
		});
		//layui.sessionData的功能不止如此,还能处理更多的数据类型,具体没用到我就不说明了,有兴趣的看文档
		/**【在别的页面可以进行路径获取】**/
		var localhostPath = layui.sessionData('pathConfig');
});

④form表单提交事件:

<form class="layui-form" lay-filter="example">
	<div class="logoHead">
		<h2 style="margin-top: 15px;text-align: center;">用户登录</h2>
	</div>
	<div class="usernameWrapDiv">
		<label>用户名:</label>
	</div>
	<div class="usernameDiv">
		<i class="layui-icon layui-icon-username adminIcon"></i>
		<input class="layui-input adminInput" type="text" name="username" id="name" placeholder="用户名" lay-verify="required">
	</div>
	<div class="usernameWrapDiv">
		<div class="usernameLabel">
			<label>密码:</label>
		</div>
		<div class="passwordDiv">
			<i class="layui-icon layui-icon-password adminIcon"></i>
			<input class="layui-input adminInput" type="password" name="password" id="pasd" placeholder="密码" lay-verify="required">
		</div>
	</div>
	<div class="usernameWrapDiv">
		<div class="submitDiv">
			<button type="submit" class="layui-btn" lay-submit="" lay-filter="login">登录</button>
		</div>
	</div>
</form>
layui.use(['form', "jquery"], function() {
	var form = layui.form,
			$ = layui.$;
	/**监听提交**/
	/**【可以直接拿表单合成的json字符串数据:】参数,updateData 中包含了表单中的数据
		var updateData = JSON.stringify(data.field);
		data: {	
			updateData : updateData ,
		},
	**/
	form.on('submit(login)', function(data) {
		var username = $('#name').val();	//【类似于jQuery通过ID单个输入框赋值、取值】
		var password = $('#pasd').val();
		$.ajax({
			type: "POST",
			url: "http://localhost:8080/MavenBoot/validateUser",	//访问路径
			data: {		//传递参数
				username: username,
				password: password,
			},
			success: function(data) {
				if (data.result === "success") {
					var userData = JSON.stringify(data.user);
					var obj = JSON.parse(userData);
					if ( obj['stop'] !== "1" ){
						layui.sessionData('user',{
							key:"userData" , value:{
							optCode : obj.optCode,
							optName : obj.optName,
							badmin : obj.badmin,
							optPWD : obj.optPWD
					}
						});
						layer.msg("用户登录成功");
						window.location.href = "/MavenBoot/index";	//跳转路径
				}else{
					layer.msg("此账户已被冻结,请联系管理员解封!");
					return false;
				}
			} else if (data.result === "fail"){
				layer.msg("请确认用户名和密码是否正确!");
					return false;
				}
			},
			error: function() {
				layer.msg("用户登录错误");
					return false;
			}
		});
		return false;
	});
});

⑤表格赋值:

//展示数据的表格
<table class="layui-hide" id="LAY_table_charge" lay-filter="user"></table>

//赋值
layui.use(['form', 'table', 'laydate','layer'], function() {
	layui.use(['form', 'table', 'laydate','layer'], function() {
				var form = layui.form,
					laydate = layui.laydate,
					$=layui.$,
					layer = layui.layer,
					table = layui.table;

				var localhostPath = layui.sessionData('pathConfig');	//获得路径
				console.log("【监管数据统计路径】" + localhostPath.path);
				//时间选择器
				laydate.render({	//搜索开始时间
					elem: '#startTime'
				});
				laydate.render({	//搜索结束时间
					elem: '#endTime'
				});
				laydate.render({	//删除开始时间
					elem: '#DelSTime'
				});
				laydate.render({	//删除结束时间
					elem: '#DelETime'
				});

				//表格方法级渲染
				table.render({
					elem: '#LAY_table_charge',
					url: localhostPath.path+'/selectAll',
					toolbar: '#toolbarDemo', //开启头部工具栏,并为其绑定左侧模板
					defaultToolbar: ['filter', 'exports', 'print'],
					cols: [
						[ 
							{field: 'carno' , title: '车牌号'},
							{field: 'wj_usetime' , title: '外检耗时'},
							{field: 'aj_usetime' , title: '安检耗时'},
							{field: 'hj_usetime' , title: '环检耗时'},
							{field: 'usetime' , title: '总耗时'},
							{field: 'result' , title: '检测(1:完成/0:未完成)'},
							{field: 'operator' , title: '开单员'},
						]
					],
					limits: [10,20,50,100,500,1000,5000],
					limit: 10,
					page: true
				});

});

⑥比较常用的页面自定义弹窗或者提示框:layer.open

/*
 如果是页面层
 */
layer.open({
  type: 1, 
  content: '传入任意的文本或html' //这里content是一个普通的String,使用字符串拼接
});
/*
官网例子
*/
layer.open({
        type: 1
        ,title: false //不显示标题栏
        ,closeBtn: false
        ,area: '300px;'
        ,shade: 0.8
        ,id: 'LAY_layuipro' //设定一个id,防止重复弹出
        ,btn: ['火速围观', '残忍拒绝']
        ,btnAlign: 'c'
        ,moveType: 1 //拖拽模式,0或者1
        ,content: '<div style="padding: 50px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">你知道吗?亲!<br>layer ≠ layui<br><br>layer只是作为Layui的一个弹层模块,由于其用户基数较大,所以常常会有人以为layui是layerui<br><br>layer虽然已被 Layui 收编为内置的弹层模块,但仍然会作为一个独立组件全力维护、升级。<br><br>我们此后的征途是星辰大海 ^_^</div>'
        ,success: function(layero){
          var btn = layero.find('.layui-layer-btn');
          btn.find('.layui-layer-btn0').attr({
            href: 'http://www.layui.com/'
            ,target: '_blank'
          });
        }
      });


layer.open({
  type: 2, 
  content: 'http://sentsin.com' //这里content是一个URL,如果你不想让iframe出现滚动条,你还可以content: ['http://sentsin.com', 'no']
}); 

layer.open({
	type: 2,				//iframe举例
	title: '添加用户' ,		//标题栏
	area: ['80%', '85%'],	//弹窗大小
	btn: ['关闭窗口'],		//按钮
	btnAlign: 'c',			//按钮位置
	shade: 0.8,
	id: 'userAdd' ,			//设定一个id,防止重复弹出
	moveType: 0 ,			//拖拽模式,0或者1
	content: localhostPath.path+'/addEmployeePage'	//路径:localhostPath.path从layui.sessionData中拿到
});

//提示框
layer.msg("错误");
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值