新增表格示例(自定义视图分页)
parent
75b7f01723
commit
c11dcc4ee8
|
@ -339,6 +339,15 @@ public class DemoTableController extends BaseController
|
||||||
return prefix + "/dynamicColumns";
|
return prefix + "/dynamicColumns";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义视图分页
|
||||||
|
*/
|
||||||
|
@GetMapping("/customView")
|
||||||
|
public String customView()
|
||||||
|
{
|
||||||
|
return prefix + "/customView";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表格其他操作
|
* 表格其他操作
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
/**
|
||||||
|
* @author zhixin wen <wenzhixin2010@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
const Utils = $.fn.bootstrapTable.utils
|
||||||
|
|
||||||
|
$.extend($.fn.bootstrapTable.defaults, {
|
||||||
|
customView: false,
|
||||||
|
showCustomView: false,
|
||||||
|
showCustomViewButton: false
|
||||||
|
})
|
||||||
|
|
||||||
|
$.extend($.fn.bootstrapTable.defaults.icons, {
|
||||||
|
customView: {
|
||||||
|
bootstrap3: 'glyphicon glyphicon-eye-open',
|
||||||
|
bootstrap5: 'bi-eye',
|
||||||
|
bootstrap4: 'fa fa-eye',
|
||||||
|
semantic: 'fa fa-eye',
|
||||||
|
foundation: 'fa fa-eye',
|
||||||
|
bulma: 'fa fa-eye',
|
||||||
|
materialize: 'remove_red_eye'
|
||||||
|
}[$.fn.bootstrapTable.theme] || 'fa-eye'
|
||||||
|
})
|
||||||
|
|
||||||
|
$.extend($.fn.bootstrapTable.defaults, {
|
||||||
|
onCustomViewPostBody () {
|
||||||
|
return false
|
||||||
|
},
|
||||||
|
onCustomViewPreBody () {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
$.extend($.fn.bootstrapTable.locales, {
|
||||||
|
formatToggleCustomView () {
|
||||||
|
return 'Toggle custom view'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
|
||||||
|
|
||||||
|
$.fn.bootstrapTable.methods.push('toggleCustomView')
|
||||||
|
|
||||||
|
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
|
||||||
|
'custom-view-post-body.bs.table': 'onCustomViewPostBody',
|
||||||
|
'custom-view-pre-body.bs.table': 'onCustomViewPreBody'
|
||||||
|
})
|
||||||
|
|
||||||
|
$.BootstrapTable = class extends $.BootstrapTable {
|
||||||
|
|
||||||
|
init () {
|
||||||
|
this.showCustomView = this.options.showCustomView
|
||||||
|
|
||||||
|
super.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
initToolbar (...args) {
|
||||||
|
if (this.options.customView && this.options.showCustomViewButton) {
|
||||||
|
this.buttons = Object.assign(this.buttons, {
|
||||||
|
customView: {
|
||||||
|
text: this.options.formatToggleCustomView(),
|
||||||
|
icon: this.options.icons.customView,
|
||||||
|
event: this.toggleCustomView,
|
||||||
|
attributes: {
|
||||||
|
'aria-label': this.options.formatToggleCustomView(),
|
||||||
|
title: this.options.formatToggleCustomView()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
super.initToolbar(...args)
|
||||||
|
}
|
||||||
|
|
||||||
|
initBody () {
|
||||||
|
super.initBody()
|
||||||
|
|
||||||
|
if (!this.options.customView) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const $table = this.$el
|
||||||
|
const $customViewContainer = this.$container.find('.fixed-table-custom-view')
|
||||||
|
|
||||||
|
$table.hide()
|
||||||
|
$customViewContainer.hide()
|
||||||
|
if (!this.options.customView || !this.showCustomView) {
|
||||||
|
$table.show()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = this.getData().slice(this.pageFrom - 1, this.pageTo)
|
||||||
|
const value = Utils.calculateObjectValue(this, this.options.customView, [data], '')
|
||||||
|
|
||||||
|
this.trigger('custom-view-pre-body', data, value)
|
||||||
|
if ($customViewContainer.length === 1) {
|
||||||
|
$customViewContainer.show().html(value)
|
||||||
|
} else {
|
||||||
|
this.$tableBody.after(`<div class="fixed-table-custom-view">${value}</div>`)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.trigger('custom-view-post-body', data, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleCustomView () {
|
||||||
|
this.showCustomView = !this.showCustomView
|
||||||
|
this.initBody()
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,122 @@
|
||||||
|
<!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="row">
|
||||||
|
<div class="col-sm-12 select-table table-striped">
|
||||||
|
<table id="bootstrap-table" data-page-size="10"
|
||||||
|
data-show-custom-view="true" data-custom-view="customViewFormatter"
|
||||||
|
data-show-custom-view-button="true">
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<template id="profileTemplate">
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<div class="contact-box">
|
||||||
|
<a href="profile.html">
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<div class="text-center">
|
||||||
|
<img alt="image" class="img-circle m-t-xs img-responsive" src="%IMAGE%">
|
||||||
|
<div class="m-t-xs font-bold">%userName%</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h3><strong>%userCode%</strong></h3>
|
||||||
|
<p><i class="fa fa-jpy"></i> %userBalance%</p>
|
||||||
|
<address>
|
||||||
|
<strong>RuoYi, Inc.</strong><br>
|
||||||
|
E-mail: %userEmail%<br>
|
||||||
|
<abbr title="Phone">Tel:</abbr> %userPhone%
|
||||||
|
</address>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<div th:include="include :: footer"></div>
|
||||||
|
<th:block th:include="include :: bootstrap-table-custom-view-js" />
|
||||||
|
<script th:inline="javascript">
|
||||||
|
var prefix = ctx + "demo/table";
|
||||||
|
var datas = [[${@dict.getType('sys_normal_disable')}]];
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
var options = {
|
||||||
|
url: prefix + "/list",
|
||||||
|
showSearch: false,
|
||||||
|
showRefresh: false,
|
||||||
|
showToggle: false,
|
||||||
|
showColumns: false,
|
||||||
|
showExport: true,
|
||||||
|
columns: [{
|
||||||
|
checkbox: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field : 'userId',
|
||||||
|
title : '用户ID'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field : 'userCode',
|
||||||
|
title : '用户编号'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field : 'userName',
|
||||||
|
title : '用户姓名'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field : 'userPhone',
|
||||||
|
title : '用户手机'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field : 'userEmail',
|
||||||
|
title : '用户邮箱'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field : 'userBalance',
|
||||||
|
title : '用户余额'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'status',
|
||||||
|
title: '用户状态',
|
||||||
|
align: 'center',
|
||||||
|
formatter: function(value, row, index) {
|
||||||
|
return $.table.selectDictLabel(datas, value);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
align: 'center',
|
||||||
|
formatter: function(value, row, index) {
|
||||||
|
var actions = [];
|
||||||
|
actions.push('<a class="btn btn-success btn-xs" href="#"><i class="fa fa-edit"></i>编辑</a> ');
|
||||||
|
actions.push('<a class="btn btn-danger btn-xs" href="#"><i class="fa fa-remove"></i>删除</a>');
|
||||||
|
return actions.join('');
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
$.table.init(options);
|
||||||
|
});
|
||||||
|
|
||||||
|
function customViewFormatter (data) {
|
||||||
|
var template = $('#profileTemplate').html()
|
||||||
|
var view = ''
|
||||||
|
$.each(data, function (i, row) {
|
||||||
|
view += template.replace('%userCode%', row.userCode)
|
||||||
|
.replace('%IMAGE%', "http://demo.ruoyi.vip/img/profile.jpg")
|
||||||
|
.replace('%userName%', row.userName)
|
||||||
|
.replace('%userEmail%', row.userEmail)
|
||||||
|
.replace('%userPhone%', row.userPhone)
|
||||||
|
.replace('%userBalance%', row.userBalance);
|
||||||
|
})
|
||||||
|
|
||||||
|
return `<div class="row mx-0">${view}</div>`
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -217,3 +217,8 @@
|
||||||
<div th:fragment="bootstrap-table-print-js">
|
<div th:fragment="bootstrap-table-print-js">
|
||||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/print/bootstrap-table-print.js?v=20210602}"></script>
|
<script th:src="@{/ajax/libs/bootstrap-table/extensions/print/bootstrap-table-print.js?v=20210602}"></script>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 表格视图分页插件 -->
|
||||||
|
<div th:fragment="bootstrap-table-custom-view-js">
|
||||||
|
<script th:src="@{/ajax/libs/bootstrap-table/extensions/custom-view/bootstrap-table-custom-view.js?v=20210602}"></script>
|
||||||
|
</div>
|
||||||
|
|
|
@ -145,6 +145,7 @@
|
||||||
<li><a class="menuItem" th:href="@{/demo/table/refresh}">表格自动刷新</a></li>
|
<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/print}">表格打印配置</a></li>
|
||||||
<li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">表格动态列</a></li>
|
<li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">表格动态列</a></li>
|
||||||
|
<li><a class="menuItem" th:href="@{/demo/table/customView}">自定义视图分页</a></li>
|
||||||
<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
|
<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -126,6 +126,7 @@
|
||||||
<li><a class="menuItem" th:href="@{/demo/table/refresh}">表格自动刷新</a></li>
|
<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/print}">表格打印配置</a></li>
|
||||||
<li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">表格动态列</a></li>
|
<li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">表格动态列</a></li>
|
||||||
|
<li><a class="menuItem" th:href="@{/demo/table/customView}">自定义视图分页</a></li>
|
||||||
<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
|
<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
Loading…
Reference in New Issue