Browse Source

优化部门加载,开启异步加载,避免部门数据量过多导致页面卡死

v4
chenrui 2 years ago
parent
commit
43a546d7e4
  1. 13
      lib/EmergencyBaseLib/EmergencyCommonEntity/src/main/java/com/zdxt/domain/auth/Dept.java
  2. 9
      lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/controller/DeptController.java
  3. 5
      lib/EmergencyService/zdxtEmergencyAuthService/src/main/resources/mapper/system/DeptMapper.xml
  4. 1090
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/ajax/libs/bootstrap-treetable/bootstrap-table-tree.js
  5. 4
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/ajax/libs/bootstrap-treetable/bootstrap-table-tree.min.js
  6. 69
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/ajax/libs/bootstrap-treetable/bootstrap-treetable.js
  7. 2
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/include.html
  8. 5
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/system/dept/dept.html

13
lib/EmergencyBaseLib/EmergencyCommonEntity/src/main/java/com/zdxt/domain/auth/Dept.java

@ -123,6 +123,11 @@ public class Dept extends BaseDomain {
*/ */
private String creditcode; private String creditcode;
/**
* 测试
*/
private Integer isTreeLeaf = 1;
public String getSystemId() { public String getSystemId() {
return systemId; return systemId;
} }
@ -457,6 +462,14 @@ public class Dept extends BaseDomain {
this.organizationId = organizationId; this.organizationId = organizationId;
} }
public Integer getIsTreeLeaf() {
return isTreeLeaf;
}
public void setIsTreeLeaf(Integer isTreeLeaf) {
this.isTreeLeaf = isTreeLeaf;
}
@Override @Override
public String toString() { public String toString() {
return "Dept{" + return "Dept{" +

9
lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/controller/DeptController.java

@ -65,6 +65,15 @@ public class DeptController extends BaseController {
// List<Dept> deptList = deptService.selectDeptList(dept); // List<Dept> deptList = deptService.selectDeptList(dept);
// return getDataTable(deptList); // return getDataTable(deptList);
// } // }
@RequiresPermissions("system:dept:list")
@PostMapping("/listTreeTable")
@ResponseBody
public TableDataInfo listTreeTable(Dept dept)
{
List<Dept> deptList = deptService.selectDeptList(dept);
return getDataTable(deptList);
}
@RequiresPermissions("system:dept:list") @RequiresPermissions("system:dept:list")
@PostMapping("/list") @PostMapping("/list")
@ResponseBody @ResponseBody

5
lib/EmergencyService/zdxtEmergencyAuthService/src/main/resources/mapper/system/DeptMapper.xml

@ -144,10 +144,7 @@
<select id="selectDeptList" parameterType="Dept" resultMap="DeptResult"> <select id="selectDeptList" parameterType="Dept" resultMap="DeptResult">
<include refid="selectDeptVo"/> <include refid="selectDeptVo"/>
where d.del_flag = '0' where d.del_flag = '0'
<if test='parentId != null and parentId != "" and parentId == "0"'> <if test='parentId != null and parentId != ""'>
AND parent_id = #{parentId} or parent_id is null
</if>
<if test='parentId != null and parentId != "" and parentId != "0"'>
AND parent_id = #{parentId} AND parent_id = #{parentId}
</if> </if>
<if test="deptName != null and deptName != ''"> <if test="deptName != null and deptName != ''">

1090
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/ajax/libs/bootstrap-treetable/bootstrap-table-tree.js

File diff suppressed because it is too large

4
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/ajax/libs/bootstrap-treetable/bootstrap-table-tree.min.js

File diff suppressed because one or more lines are too long

69
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/ajax/libs/bootstrap-treetable/bootstrap-treetable.js

@ -6,6 +6,7 @@
"use strict"; "use strict";
$.fn.bootstrapTreeTable = function(options, param) { $.fn.bootstrapTreeTable = function(options, param) {
debugger
var target = $(this).data('bootstrap.tree.table'); var target = $(this).data('bootstrap.tree.table');
target = target ? target : $(this); target = target ? target : $(this);
// 如果是调用方法 // 如果是调用方法
@ -36,7 +37,7 @@
autoTheadWidth(true); autoTheadWidth(true);
// 缓存target对象 // 缓存target对象
target.data('bootstrap.tree.table', target); target.data('bootstrap.tree.table', target);
} };
// 初始化容器 // 初始化容器
var initContainer = function() { var initContainer = function() {
// 在外层包装一下div,样式用的bootstrap-table的 // 在外层包装一下div,样式用的bootstrap-table的
@ -59,7 +60,7 @@
target.addClass('table-condensed'); target.addClass('table-condensed');
} }
target.html(""); target.html("");
} };
// 初始化工具栏 // 初始化工具栏
var initToolbar = function() { var initToolbar = function() {
var $toolbar = $("<div class='treetable-bars'></div>"); var $toolbar = $("<div class='treetable-bars'></div>");
@ -111,13 +112,13 @@
} }
}); });
} }
} };
// 初始化隐藏列 // 初始化隐藏列
var initHiddenColumns = function(){ var initHiddenColumns = function(){
$.each(target.hiddenColumns, function(i, field) { $.each(target.hiddenColumns, function(i, field) {
target.find("."+field+"_cls").hide(); target.find("."+field+"_cls").hide();
}); });
} };
// 初始化表头 // 初始化表头
var initHeader = function() { var initHeader = function() {
var $thr = $('<tr></tr>'); var $thr = $('<tr></tr>');
@ -139,7 +140,7 @@
var $thead = $('<thead class="treetable-thead"></thead>'); var $thead = $('<thead class="treetable-thead"></thead>');
$thead.append($thr); $thead.append($thr);
target.append($thead); target.append($thead);
} };
// 初始化表体 // 初始化表体
var initBody = function() { var initBody = function() {
var $tbody = $('<tbody class="treetable-tbody"></tbody>'); var $tbody = $('<tbody class="treetable-tbody"></tbody>');
@ -148,7 +149,7 @@
if (options.height) { if (options.height) {
$tbody.css("height", options.height); $tbody.css("height", options.height);
} }
} };
// 初始化数据服务 // 初始化数据服务
var initServer = function(parms) { var initServer = function(parms) {
// 加载数据前先清空 // 加载数据前先清空
@ -156,7 +157,7 @@
target.data_obj = {}; target.data_obj = {};
var $tbody = target.find("tbody"); var $tbody = target.find("tbody");
// 添加加载loading // 添加加载loading
var $loading = '<tr><td colspan="' + options.columns.length + '"><div style="display: block;text-align: center;">正在努力地加载数据中,请稍候……</div></td></tr>' var $loading = '<tr><td colspan="' + options.columns.length + '"><div style="display: block;text-align: center;">正在努力地加载数据中,请稍候……</div></td></tr>';
$tbody.html($loading); $tbody.html($loading);
if (options.url) { if (options.url) {
$.ajax({ $.ajax({
@ -170,21 +171,21 @@
calculateObjectValue(options, options.onLoadSuccess, [data], data); calculateObjectValue(options, options.onLoadSuccess, [data], data);
}, },
error: function(xhr, textStatus) { error: function(xhr, textStatus) {
var _errorMsg = '<tr><td colspan="' + options.columns.length + '"><div style="display: block;text-align: center;">' + xhr.responseText + '</div></td></tr>' var _errorMsg = '<tr><td colspan="' + options.columns.length + '"><div style="display: block;text-align: center;">' + xhr.responseText + '</div></td></tr>';
$tbody.html(_errorMsg); $tbody.html(_errorMsg);
}, },
}); });
} else { } else {
renderTable(options.data); renderTable(options.data);
} }
} };
// 加载完数据后渲染表格 // 加载完数据后渲染表格
var renderTable = function(data) { var renderTable = function(data) {
var $tbody = target.find("tbody"); var $tbody = target.find("tbody");
// 先清空 // 先清空
$tbody.html(""); $tbody.html("");
if (!data || data.length <= 0) { if (!data || data.length <= 0) {
var _empty = '<tr><td colspan="' + options.columns.length + '"><div style="display: block;text-align: center;">没有找到匹配的记录</div></td></tr>' var _empty = '<tr><td colspan="' + options.columns.length + '"><div style="display: block;text-align: center;">没有找到匹配的记录</div></td></tr>';
$tbody.html(_empty); $tbody.html(_empty);
return; return;
} }
@ -195,7 +196,7 @@
// 开始绘制 // 开始绘制
if (rootNode) { if (rootNode) {
$.each(rootNode, function(i, item) { $.each(rootNode, function(i, item) {
var _child_row_id = "row_id_" + i var _child_row_id = "row_id_" + i;
recursionNode(item, 1, _child_row_id, "row_root"); recursionNode(item, 1, _child_row_id, "row_root");
}); });
} }
@ -212,13 +213,13 @@
initHiddenColumns(); initHiddenColumns();
// 动态设置表头宽度 // 动态设置表头宽度
autoTheadWidth() autoTheadWidth()
} };
// 动态设置表头宽度 // 动态设置表头宽度
var autoTheadWidth = function(initFlag) { var autoTheadWidth = function(initFlag) {
if(options.height>0){ if(options.height>0){
var $thead = target.find("thead"); var $thead = target.find("thead");
var $tbody = target.find("tbody"); var $tbody = target.find("tbody");
var borderWidth = parseInt(target.css("border-left-width")) + parseInt(target.css("border-right-width")) var borderWidth = parseInt(target.css("border-left-width")) + parseInt(target.css("border-right-width"));
$thead.css("width", $tbody.children(":first").width()); $thead.css("width", $tbody.children(":first").width());
if(initFlag){ if(initFlag){
@ -238,7 +239,7 @@
} }
} }
} };
// 缓存并格式化数据 // 缓存并格式化数据
var formatData = function(data) { var formatData = function(data) {
var _root = options.rootIdValue ? options.rootIdValue : null; var _root = options.rootIdValue ? options.rootIdValue : null;
@ -277,7 +278,7 @@
} }
target.data_obj["id_" + item[options.code]] = item; target.data_obj["id_" + item[options.code]] = item;
}); });
} };
// 递归获取子节点并且设置子节点 // 递归获取子节点并且设置子节点
var recursionNode = function(parentNode, lv, row_id, p_id) { var recursionNode = function(parentNode, lv, row_id, p_id) {
var $tbody = target.find("tbody"); var $tbody = target.find("tbody");
@ -286,7 +287,7 @@
$tbody.append($tr); $tbody.append($tr);
if (_ls) { if (_ls) {
$.each(_ls, function(i, item) { $.each(_ls, function(i, item) {
var _child_row_id = row_id + "_" + i var _child_row_id = row_id + "_" + i;
recursionNode(item, (lv + 1), _child_row_id, row_id) recursionNode(item, (lv + 1), _child_row_id, row_id)
}); });
} }
@ -372,19 +373,19 @@
} }
}); });
return $tr; return $tr;
} };
// 检索信息按钮点击事件 // 检索信息按钮点击事件
var registerSearchBtnClickEvent = function(btn) { var registerSearchBtnClickEvent = function(btn) {
$(btn).off('click').on('click', function () { $(btn).off('click').on('click', function () {
$(".search-collapse").slideToggle(); $(".search-collapse").slideToggle();
}); });
} };
// 注册刷新按钮点击事件 // 注册刷新按钮点击事件
var registerRefreshBtnClickEvent = function(btn) { var registerRefreshBtnClickEvent = function(btn) {
$(btn).off('click').on('click', function () { $(btn).off('click').on('click', function () {
target.refresh(); target.refresh();
}); });
} };
// 注册列选项事件 // 注册列选项事件
var registerColumnClickEvent = function() { var registerColumnClickEvent = function() {
$(".bootstrap-tree-table .treetable-bars .columns label input").off('click').on('click', function () { $(".bootstrap-tree-table .treetable-bars .columns label input").off('click').on('click', function () {
@ -395,7 +396,7 @@
target.hideColumn($(this).val()); target.hideColumn($(this).val());
} }
}); });
} };
// 注册行点击选中事件 // 注册行点击选中事件
var registerRowClickEvent = function() { var registerRowClickEvent = function() {
target.find("tbody").find("tr").unbind(); target.find("tbody").find("tr").unbind();
@ -426,7 +427,7 @@
} }
} }
}); });
} };
// 注册小图标点击事件--展开缩起 // 注册小图标点击事件--展开缩起
var registerExpanderEvent = function() { var registerExpanderEvent = function() {
target.find("tbody").find("tr").find(".treetable-expander").unbind(); target.find("tbody").find("tr").find(".treetable-expander").unbind();
@ -460,14 +461,14 @@
} }
} }
}); });
} };
// 刷新数据 // 刷新数据
target.refresh = function(parms) { target.refresh = function(parms) {
if(parms){ if(parms){
target.lastAjaxParams=parms; target.lastAjaxParams=parms;
} }
initServer(target.lastAjaxParams); initServer(target.lastAjaxParams);
} };
// 添加数据刷新表格 // 添加数据刷新表格
target.appendData = function(data) { target.appendData = function(data) {
// 下边的操作主要是为了查询时让一些没有根节点的节点显示 // 下边的操作主要是为了查询时让一些没有根节点的节点显示
@ -485,7 +486,7 @@
if (_p_data) { if (_p_data) {
p_id = _p_data.row_id; p_id = _p_data.row_id;
if (row_id == "") { if (row_id == "") {
var _tmp = 0 var _tmp = 0;
if (_c_list && _c_list.length > 0) { if (_c_list && _c_list.length > 0) {
_tmp = _c_list.length; _tmp = _c_list.length;
} }
@ -537,14 +538,14 @@
registerExpanderEvent(); registerExpanderEvent();
registerRowClickEvent(); registerRowClickEvent();
initHiddenColumns(); initHiddenColumns();
} };
// 展开/折叠指定的行 // 展开/折叠指定的行
target.toggleRow=function(id) { target.toggleRow=function(id) {
var _rowData = target.data_obj["id_" + id]; var _rowData = target.data_obj["id_" + id];
var $row_expander = $("#"+_rowData.row_id).find(".treetable-expander"); var $row_expander = $("#"+_rowData.row_id).find(".treetable-expander");
$row_expander.trigger("click"); $row_expander.trigger("click");
} };
// 展开指定的行 // 展开指定的行
target.expandRow=function(id) { target.expandRow=function(id) {
var _rowData = target.data_obj["id_" + id]; var _rowData = target.data_obj["id_" + id];
@ -553,7 +554,7 @@
if (_isCollapsed) { if (_isCollapsed) {
$row_expander.trigger("click"); $row_expander.trigger("click");
} }
} };
// 折叠 指定的行 // 折叠 指定的行
target.collapseRow=function(id) { target.collapseRow=function(id) {
var _rowData = target.data_obj["id_" + id]; var _rowData = target.data_obj["id_" + id];
@ -562,7 +563,7 @@
if (_isExpanded) { if (_isExpanded) {
$row_expander.trigger("click"); $row_expander.trigger("click");
} }
} };
// 展开所有的行 // 展开所有的行
target.expandAll=function() { target.expandAll=function() {
target.find("tbody").find("tr").find(".treetable-expander").each(function(i,n){ target.find("tbody").find("tr").find(".treetable-expander").each(function(i,n){
@ -571,7 +572,7 @@
$(n).trigger("click"); $(n).trigger("click");
} }
}) })
} };
// 折叠所有的行 // 折叠所有的行
target.collapseAll=function() { target.collapseAll=function() {
target.find("tbody").find("tr").find(".treetable-expander").each(function(i,n){ target.find("tbody").find("tr").find(".treetable-expander").each(function(i,n){
@ -580,7 +581,7 @@
$(n).trigger("click"); $(n).trigger("click");
} }
}) })
} };
// 显示指定列 // 显示指定列
target.showColumn=function(field,flag) { target.showColumn=function(field,flag) {
var _index = $.inArray(field, target.hiddenColumns); var _index = $.inArray(field, target.hiddenColumns);
@ -590,20 +591,20 @@
target.find("."+field+"_cls").show(); target.find("."+field+"_cls").show();
//是否更新列选项状态 //是否更新列选项状态
if(flag&&options.showColumns){ if(flag&&options.showColumns){
var $input = $(".bootstrap-tree-table .treetable-bars .columns label").find("input[value='"+field+"']") var $input = $(".bootstrap-tree-table .treetable-bars .columns label").find("input[value='"+field+"']");
$input.prop("checked", 'checked'); $input.prop("checked", 'checked');
} }
} };
// 隐藏指定列 // 隐藏指定列
target.hideColumn=function(field,flag) { target.hideColumn=function(field,flag) {
target.hiddenColumns.push(field); target.hiddenColumns.push(field);
target.find("."+field+"_cls").hide(); target.find("."+field+"_cls").hide();
//是否更新列选项状态 //是否更新列选项状态
if(flag&&options.showColumns){ if(flag&&options.showColumns){
var $input = $(".bootstrap-tree-table .treetable-bars .columns label").find("input[value='"+field+"']") var $input = $(".bootstrap-tree-table .treetable-bars .columns label").find("input[value='"+field+"']");
$input.prop("checked", ''); $input.prop("checked", '');
} }
} };
// ruoyi 解析数据,支持多层级访问 // ruoyi 解析数据,支持多层级访问
var getItemField = function (item, field) { var getItemField = function (item, field) {
var value = item; var value = item;

2
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/include.html

@ -31,7 +31,7 @@
<script th:src="@{/ajax/libs/validate/jquery.validate.extend.js}"></script> <script th:src="@{/ajax/libs/validate/jquery.validate.extend.js}"></script>
<!-- jquery-validate 表单树插件 --> <!-- jquery-validate 表单树插件 -->
<!-- <script th:src="@{/ajax/libs/bootstrap-treetable/bootstrap-treetable.js}"></script>--> <!-- <script th:src="@{/ajax/libs/bootstrap-treetable/bootstrap-treetable.js}"></script>-->
<script th:src="@{/ajax/libs/bootstrap-treetable/bootstrap-table-tree.min.js}"></script> <script th:src="@{/ajax/libs/bootstrap-treetable/bootstrap-table-tree.js}"></script>
<!-- jquery-export 表格导出插件 --> <!-- jquery-export 表格导出插件 -->
<script th:src="@{/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js}"></script> <script th:src="@{/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js}"></script>
<script th:src="@{/ajax/libs/bootstrap-table/extensions/export/tableExport.js}"></script> <script th:src="@{/ajax/libs/bootstrap-table/extensions/export/tableExport.js}"></script>

5
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/system/dept/dept.html

@ -60,11 +60,12 @@
expandAll: false, expandAll: false,
expandFirst: false, expandFirst: false,
expandColumn: 1, expandColumn: 1,
url: prefix + "/list", pagination: true,
url: prefix + "/listTreeTable",
dataUrl: prefix + "/listChild",
createUrl: prefix + "/add/{id}", createUrl: prefix + "/add/{id}",
updateUrl: prefix + "/edit/{id}", updateUrl: prefix + "/edit/{id}",
removeUrl: prefix + "/remove/{id}", removeUrl: prefix + "/remove/{id}",
dataUrl: prefix + "/tree/listChild",
bordered: true, bordered: true,
onClickRow: onClickRow, onClickRow: onClickRow,
modalName: "部门", modalName: "部门",

Loading…
Cancel
Save