SpringBoot+Layui
一、Layui数据表格组件
步骤:
进入layui官网下载layui组件
你想要用哪个组件,直接到官网上去拷贝
然后引入你本地下载好的layui(js和css)
![]()
table组件里面的各参数说明
![]()
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>lujiahong</title> <link rel="stylesheet" href="layui/css/layui.css" media="all"> <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 --> <style type="text/css"> /* .layui-table-cell{ text-align: center; height: 200px; white-space: normal; } .layui-table img{ max-width: 300px; } */ </style> </head> <body> <table class="layui-hide" id="test" lay-filter="test"></table> <img src="images\1570365161-shmEFlWfHU.jpg" alt=""> <script type="text/html" id="myImg"> <!-- 图片 --> <img src="/{{d.image}}"/> </script> <script type="text/html" id="switchTpl"> <!-- 这里的 checked 的状态只是演示 --> <input type="checkbox" name="sex" value="{{d.id}}" lay-skin="switch" lay-text="女|男" lay-filter="sexDemo" {{ d.id == 10003 ? 'checked' : '' }}> </script> <script type="text/html" id="checkboxTpl"> <!-- 这里的 checked 的状态只是演示 --> <input type="checkbox" name="lock" value="{{d.id}}" title="锁定" lay-filter="lockDemo" {{ d.id == 10006 ? 'checked' : '' }}> </script> <script type="text/html" id="toolbarDemo"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button> <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button> <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button> </div> </script> <script type="text/html" id="barDemo"> <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a> <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> </script> <script language=”javascript” type=“text/javascript” src=common.js></script> <script src="layui/layui.js" charset="utf-8"></script> <!-- 注意:如果你直接复制所有代码到本地,上述 JS 路径需要改成你本地的 --> <script> //layui.use('talbe',()=>{})采用layui框架中的table组件 layui.use(['table','jquery'], function(){ var table = layui.table; //温馨提示:默认由前端自动合计当前行数据。从 layui 2.5.6 开始: 若接口直接返回了合计行数据,则优先读取接口合计行数据。 //详见:https://www.layui.com/doc/modules/table.html#totalRow table.render({ elem: '#test'//elem表示绑定table标签里面的id ,url:'http://localhost:8080/item/findAll'//接口地址(数据-json格式) ,toolbar: '#toolbarDemo'//绑定工具栏中的id ,title: '商品数据表'//layui导出excel时的表名 ,totalRow: true//是否显示合计数 ,cols: [[ {type: 'checkbox', fixed: 'left'}//checkbox显示类型复选框,left在table最左侧显示 ,{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true, totalRowText: '合计'}//定义列,field是json数据里面对应的字段,title是定义table列名显示的字段,fixed是定义该列显示的位置,sort是定义table开启排序,totalRowText是定义统计整列数据之和的名称 ,{field:'title', title:'商品标题', width:120, edit: 'text'}//width是定义该列的列宽,edit是定义编辑事件-双击该单元数据进行编辑,同样可以在工具栏中绑定事件 ,{field:'sellPoint', title:'商品卖点', width:120, edit: 'text'} ,{field:'price', title:'商品价格', width:120, sort: true, totalRow: true}//totalRow表示定义该列是否做合计统计 ,{field:'num', title:'库存数量', width:120, edit: 'text', sort: true} ,{field:'barcode', title:'商品条形码', width:120, sort: true, totalRow: true} ,{field:'image', title:'商品图片', width:120, templet: function (data) { return "<div><img src="+data.image+" /></div>"; }} ,{field:'detail', title:'商品详情', width:120} ,{field:'status', title:'商品状态', width:120} ,{field:'created', title:'创建时间', width:120,templet: function (data) { return new Date(Date.parse(data.created.replace(/-/g, "/"))).format("yyyy-MM-dd & hh:mm:ss"); }} ,{field:'updated', title:'更新时间', width:120} ,{field:'sex', title:'性别', width:85, templet: '#switchTpl', unresize: true} ,{field:'lock', title:'是否锁定', width:110, templet: '#checkboxTpl', unresize: true} ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}//toolbar表示该列绑定工具条点击事件按钮,对该数据行的操作 ]] ,page: true ,response:{ statusName:'code', //规定返回的状态码字段为code statusCode:200 //规定成功的状态码味200 }, parseData:function(res){ return { "code" : res.code, //解析接口状态 "msg" : res.msg, //解析提示文本 "data" : res.data, //解析数据列表 "count": res.count //解析总条数 } } }); //工具栏事件 //toolbar表示工具条,test是table标签里面的lay-filter对应的值 //obj.config.id即为table标签中的属性id所对应的值:test //table.checkStatus(obj.config.id)有两个值:data和isAll data即为复选框选中的数据、isAll(true、false)表示是否全部选中复选框 table.on('toolbar(test)', function(obj){ var checkStatus = table.checkStatus(obj.config.id); switch(obj.event){ case 'getCheckData': var data = checkStatus.data; layer.alert(JSON.stringify(data)); break; case 'getCheckLength': var data = checkStatus.data; layer.msg('选中了:'+ data.length + ' 个'); break; case 'isAll': layer.msg(checkStatus.isAll ? '全选': '未全选') break; }; }); //监听工具条 //tool表示工具条,test是table标签里面的lay-filter对应的值 //obj表示我们点击事件从table中获取的数据 //layui是layui自带的一个弹框,index即我们选择行的下标 //JSON.stringify(data)是把我们从table中获取的键值对数据转换为json数据格式 table.on('tool(test)', function(obj){ var data = obj.data; if(obj.event === 'del'){ layer.confirm('真的删除行么', function(index){ obj.del(); layer.close(index); }); } else if(obj.event === 'edit'){ layer.alert('编辑行:<br>'+ JSON.stringify(data)) } }); Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" : this.getHours(), //小时 "m+" : this.getMinutes(), //分 "s+" : this.getSeconds(), //秒 "q+" : Math.floor((this.getMonth()+3)/3), //季度 "S" : this.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) { fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); } for(var k in o) { if(new RegExp("("+ k +")").test(fmt)){ fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); } } return fmt; } }); </script> </body> </html>
二、Spring Boot后台数据接口
- 扩展一
view-source 是一种协议,查看源码
在当前网页地址前输入:view-source: 就可以查看当前网页的源码
例如:view-source:https://www.baidu.com/
JS用法 : window.location=“view-source:” + window.location
————————————————
- 扩展二
谷歌浏览器插件
https://www.cnblogs.com/JulianHuang/p/12419604.html
- 扩展三
谷歌浏览器安装json-view插件
分类专栏: 实用开发软件/插件 文章标签: json-view
今天,给大家推荐一款十分好用的Chrome浏览器的插件,叫做json-view
1.介绍:这是一款浏览器解析json的插件,可以更加优雅的展现json格式的数据
2.使用效果
使用前:使用后:
优雅了很多有没有,安装的方式呢,也极其简单。
3.安装方式
首先呢,下载插件
链接:https://pan.baidu.com/s/1TNI2LsPgzPba_v4_1I9C3Q
提取码:hoxr找个地方解压完,这是笔者解压后进入文件夹的文件目录
**开始安装!打开谷歌浏览器,点击右上角的 … 点击设置,点击 拓展程序 **
找到谷歌浏览器的拓展程序,记得开启开发者模式,点击 “加载已解压的拓展程序”
!!记得要点击进去,进到目录里面
这样就安装成功了,是不是很简单的!
原文链接:https://blog.csdn.net/BrotherJinJin/article/details/101126690
三、单体应用和前后端分离下的数据对接
关于跨域cors配置和mybatis-plus配置
1、cors
@Configuration public class CrosConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowCredentials(true) .allowedOriginPatterns("*") .allowedHeaders("*") .allowedMethods("GET","POST","UPDATE","PUT","PATCH") .maxAge(3600L); } }2、mybatis-plus
@Configuration public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> </dependency>关于templet的使用
img
{field:'image', title:'商品图片', width:120, templet: function (data) { return "<div><img src="+data.image+" /></div>"; }}data
java
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date updated;cols
{field:'created', title:'创建时间', width:120,templet: function (data) { return new Date(Date.parse(data.created.replace(/-/g, "/"))).format("yyyy-MM-dd & hh:mm:ss"); }}js
Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" : this.getHours(), //小时 "m+" : this.getMinutes(), //分 "s+" : this.getSeconds(), //秒 "q+" : Math.floor((this.getMonth()+3)/3), //季度 "S" : this.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) { fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); } for(var k in o) { if(new RegExp("("+ k +")").test(fmt)){ fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); } } return fmt; }把页面整合到springboot里面的配置
![]()
四、ECharts数据可视化
echarts下载和教程
echarts使用说明
建立一个html,引入echarts.min.js,直接官网上复制即可
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts</title> <!-- 引入 echarts.js --> <script src="echarts.min.js"></script> </head> <body> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="main" style="width: 600px;height:400px;"></div> <script type="text/javascript"> // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById('main')); // 指定图表的配置项和数据 var option = { title: { text: 'ECharts 入门示例' }, tooltip: {}, legend: { data:['销量'] }, xAxis: { data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"] }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: [5, 20, 36, 10, 10, 20] }] }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); </script> </body> </html>上面的是一个统计图的样表,如果要做一个饼图或者其它图形,直接到示列里面点击想要的图信,复制里面代码即可,图形的不同主要就是区别在option的不同,观察即可明白



