mirror of https://gitee.com/y_project/RuoYi.git
新增表格示例(虚拟滚动)
parent
f31e6bd1bb
commit
61c2e96aaa
|
@ -390,6 +390,15 @@ public class DemoTableController extends BaseController
|
|||
return prefix + "/dynamicColumns";
|
||||
}
|
||||
|
||||
/**
|
||||
* 表格虚拟滚动
|
||||
*/
|
||||
@GetMapping("/virtualScroll")
|
||||
public String virtualScroll()
|
||||
{
|
||||
return prefix + "/virtualScroll";
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义视图分页
|
||||
*/
|
||||
|
|
|
@ -48,7 +48,7 @@ var table = {
|
|||
paginationLoop: false,
|
||||
pageSize: 10,
|
||||
pageNumber: 1,
|
||||
pageList: [10, 25, 50],
|
||||
pageList: [10, 25, 50, 100],
|
||||
toolbar: "toolbar",
|
||||
loadingFontSize: 13,
|
||||
striped: false,
|
||||
|
@ -103,6 +103,7 @@ var table = {
|
|||
showFooter: options.showFooter, // 是否显示表尾
|
||||
iconSize: 'outline', // 图标大小:undefined默认的按钮尺寸 xs超小按钮sm小按钮lg大按钮
|
||||
toolbar: '#' + options.toolbar, // 指定工作栏
|
||||
virtualScroll: options.virtualScroll, // 是否启动虚拟滚动(大量数据纯展示时使用)
|
||||
loadingFontSize: options.loadingFontSize, // 自定义加载文本的字体大小
|
||||
sidePagination: options.sidePagination, // server启用服务端分页client客户端分页
|
||||
search: options.search, // 是否显示搜索框功能
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<head>
|
||||
<th:block th:include="include :: header('表格虚拟滚动')" />
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="container-div">
|
||||
<div class="btn-group-sm" id="toolbar" role="group">
|
||||
<a class="btn btn-success" onclick="loadRows()">
|
||||
<i class="fa fa-plus"></i> 加载10000行数据
|
||||
</a>
|
||||
<a class="btn btn-info" onclick="appendRows()">
|
||||
<i class="fa fa-edit"></i> 追加10000行数据
|
||||
</a>
|
||||
<span id="total" class="badge badge-success"></span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script>
|
||||
var total = 0
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
data: getData(20),
|
||||
height: 400,
|
||||
sidePagination: "client",
|
||||
pagination: false,
|
||||
showSearch: false,
|
||||
virtualScroll: true,
|
||||
columns: [{
|
||||
field : 'userId',
|
||||
title : '用户ID'
|
||||
},
|
||||
{
|
||||
field : 'userCode',
|
||||
title : '用户编号'
|
||||
},
|
||||
{
|
||||
field : 'userName',
|
||||
title : '用户姓名'
|
||||
},
|
||||
{
|
||||
field : 'userPhone',
|
||||
title : '用户手机'
|
||||
},
|
||||
{
|
||||
field : 'userEmail',
|
||||
title : '用户邮箱'
|
||||
},
|
||||
{
|
||||
field : 'userBalance',
|
||||
title : '用户余额'
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
function getData(number, isAppend) {
|
||||
if (!isAppend) {
|
||||
total = 0
|
||||
}
|
||||
var data = []
|
||||
for (var i = total; i < total + number; i++) {
|
||||
var randomId = 100 + ~~ (Math.random() * 100);
|
||||
data.push({
|
||||
userId: i + 1,
|
||||
userCode: 2000000 + randomId,
|
||||
userName: '测试' + randomId,
|
||||
userPhone: '1588888888',
|
||||
userEmail: 'ry1@qq.com',
|
||||
userBalance: 10 + randomId,
|
||||
})
|
||||
}
|
||||
if (isAppend) {
|
||||
total += number
|
||||
} else {
|
||||
total = number
|
||||
}
|
||||
$('#total').text(total);
|
||||
return data;
|
||||
}
|
||||
|
||||
function loadRows() {
|
||||
$('#bootstrap-table').bootstrapTable('load', getData(10000))
|
||||
}
|
||||
|
||||
function appendRows() {
|
||||
$('#bootstrap-table').bootstrapTable('append', getData(10000, true))
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -147,6 +147,7 @@
|
|||
<li><a class="menuItem" th:href="@{/demo/table/refresh}">表格自动刷新</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/print}">表格打印配置</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">表格动态列</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/virtualScroll}">表格虚拟滚动</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/customView}">自定义视图分页</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/asynTree}">异步加载表格树</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
|
||||
|
|
|
@ -127,6 +127,7 @@
|
|||
<li><a class="menuItem" th:href="@{/demo/table/refresh}">表格自动刷新</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/print}">表格打印配置</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">表格动态列</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/virtualScroll}">表格虚拟滚动</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/customView}">自定义视图分页</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/asynTree}">异步加载表格树</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.io.ByteArrayInputStream;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.servlet.Filter;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
@ -17,7 +18,6 @@ import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
|
|||
import org.apache.shiro.web.mgt.CookieRememberMeManager;
|
||||
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
|
||||
import org.apache.shiro.web.servlet.SimpleCookie;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
@ -132,9 +132,6 @@ public class ShiroConfig
|
|||
@Value("${shiro.rememberMe.enabled: false}")
|
||||
private boolean rememberMe;
|
||||
|
||||
@Autowired
|
||||
private PermitAllUrlProperties permitAllUrl;
|
||||
|
||||
/**
|
||||
* 缓存管理器 使用Ehcache实现
|
||||
*/
|
||||
|
@ -294,7 +291,11 @@ public class ShiroConfig
|
|||
filterChainDefinitionMap.put("/ruoyi/**", "anon");
|
||||
filterChainDefinitionMap.put("/captcha/captchaImage**", "anon");
|
||||
// 匿名访问不鉴权注解列表
|
||||
permitAllUrl.getUrls().forEach(url -> filterChainDefinitionMap.put(url, "anon"));
|
||||
List<String> permitAllUrl = SpringUtils.getBean(PermitAllUrlProperties.class).getUrls();
|
||||
if (StringUtils.isNotEmpty(permitAllUrl))
|
||||
{
|
||||
permitAllUrl.forEach(url -> filterChainDefinitionMap.put(url, "anon"));
|
||||
}
|
||||
// 退出 logout地址,shiro去清除session
|
||||
filterChainDefinitionMap.put("/logout", "logout");
|
||||
// 不需要拦截的访问
|
||||
|
|
Loading…
Reference in New Issue