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. 11
      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 Integer isTreeLeaf = 1;
public String getSystemId() {
return systemId;
}
@ -457,6 +462,14 @@ public class Dept extends BaseDomain {
this.organizationId = organizationId;
}
public Integer getIsTreeLeaf() {
return isTreeLeaf;
}
public void setIsTreeLeaf(Integer isTreeLeaf) {
this.isTreeLeaf = isTreeLeaf;
}
@Override
public String toString() {
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);
// 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")
@PostMapping("/list")
@ResponseBody

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

@ -144,10 +144,7 @@
<select id="selectDeptList" parameterType="Dept" resultMap="DeptResult">
<include refid="selectDeptVo"/>
where d.del_flag = '0'
<if test='parentId != null and parentId != "" and parentId == "0"'>
AND parent_id = #{parentId} or parent_id is null
</if>
<if test='parentId != null and parentId != "" and parentId != "0"'>
<if test='parentId != null and parentId != ""'>
AND parent_id = #{parentId}
</if>
<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";
$.fn.bootstrapTreeTable = function(options, param) {
debugger
var target = $(this).data('bootstrap.tree.table');
target = target ? target : $(this);
// 如果是调用方法
@ -36,7 +37,7 @@
autoTheadWidth(true);
// 缓存target对象
target.data('bootstrap.tree.table', target);
}
};
// 初始化容器
var initContainer = function() {
// 在外层包装一下div,样式用的bootstrap-table的
@ -59,7 +60,7 @@
target.addClass('table-condensed');
}
target.html("");
}
};
// 初始化工具栏
var initToolbar = function() {
var $toolbar = $("<div class='treetable-bars'></div>");
@ -111,13 +112,13 @@
}
});
}
}
};
// 初始化隐藏列
var initHiddenColumns = function(){
$.each(target.hiddenColumns, function(i, field) {
target.find("."+field+"_cls").hide();
});
}
};
// 初始化表头
var initHeader = function() {
var $thr = $('<tr></tr>');
@ -139,7 +140,7 @@
var $thead = $('<thead class="treetable-thead"></thead>');
$thead.append($thr);
target.append($thead);
}
};
// 初始化表体
var initBody = function() {
var $tbody = $('<tbody class="treetable-tbody"></tbody>');
@ -148,7 +149,7 @@
if (options.height) {
$tbody.css("height", options.height);
}
}
};
// 初始化数据服务
var initServer = function(parms) {
// 加载数据前先清空
@ -156,7 +157,7 @@
target.data_obj = {};
var $tbody = target.find("tbody");
// 添加加载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);
if (options.url) {
$.ajax({
@ -170,21 +171,21 @@
calculateObjectValue(options, options.onLoadSuccess, [data], data);
},
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);
},
});
} else {
renderTable(options.data);
}
}
};
// 加载完数据后渲染表格
var renderTable = function(data) {
var $tbody = target.find("tbody");
// 先清空
$tbody.html("");
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);
return;
}
@ -195,7 +196,7 @@
// 开始绘制
if (rootNode) {
$.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");
});
}
@ -212,13 +213,13 @@
initHiddenColumns();
// 动态设置表头宽度
autoTheadWidth()
}
};
// 动态设置表头宽度
var autoTheadWidth = function(initFlag) {
if(options.height>0){
var $thead = target.find("thead");
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());
if(initFlag){
@ -238,7 +239,7 @@
}
}
}
};
// 缓存并格式化数据
var formatData = function(data) {
var _root = options.rootIdValue ? options.rootIdValue : null;
@ -277,7 +278,7 @@
}
target.data_obj["id_" + item[options.code]] = item;
});
}
};
// 递归获取子节点并且设置子节点
var recursionNode = function(parentNode, lv, row_id, p_id) {
var $tbody = target.find("tbody");
@ -286,7 +287,7 @@
$tbody.append($tr);
if (_ls) {
$.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)
});
}
@ -372,19 +373,19 @@
}
});
return $tr;
}
};
// 检索信息按钮点击事件
var registerSearchBtnClickEvent = function(btn) {
$(btn).off('click').on('click', function () {
$(".search-collapse").slideToggle();
});
}
};
// 注册刷新按钮点击事件
var registerRefreshBtnClickEvent = function(btn) {
$(btn).off('click').on('click', function () {
target.refresh();
});
}
};
// 注册列选项事件
var registerColumnClickEvent = function() {
$(".bootstrap-tree-table .treetable-bars .columns label input").off('click').on('click', function () {
@ -395,7 +396,7 @@
target.hideColumn($(this).val());
}
});
}
};
// 注册行点击选中事件
var registerRowClickEvent = function() {
target.find("tbody").find("tr").unbind();
@ -426,7 +427,7 @@
}
}
});
}
};
// 注册小图标点击事件--展开缩起
var registerExpanderEvent = function() {
target.find("tbody").find("tr").find(".treetable-expander").unbind();
@ -460,14 +461,14 @@
}
}
});
}
};
// 刷新数据
target.refresh = function(parms) {
if(parms){
target.lastAjaxParams=parms;
}
initServer(target.lastAjaxParams);
}
};
// 添加数据刷新表格
target.appendData = function(data) {
// 下边的操作主要是为了查询时让一些没有根节点的节点显示
@ -485,7 +486,7 @@
if (_p_data) {
p_id = _p_data.row_id;
if (row_id == "") {
var _tmp = 0
var _tmp = 0;
if (_c_list && _c_list.length > 0) {
_tmp = _c_list.length;
}
@ -537,14 +538,14 @@
registerExpanderEvent();
registerRowClickEvent();
initHiddenColumns();
}
};
// 展开/折叠指定的行
target.toggleRow=function(id) {
var _rowData = target.data_obj["id_" + id];
var $row_expander = $("#"+_rowData.row_id).find(".treetable-expander");
$row_expander.trigger("click");
}
};
// 展开指定的行
target.expandRow=function(id) {
var _rowData = target.data_obj["id_" + id];
@ -553,7 +554,7 @@
if (_isCollapsed) {
$row_expander.trigger("click");
}
}
};
// 折叠 指定的行
target.collapseRow=function(id) {
var _rowData = target.data_obj["id_" + id];
@ -562,7 +563,7 @@
if (_isExpanded) {
$row_expander.trigger("click");
}
}
};
// 展开所有的行
target.expandAll=function() {
target.find("tbody").find("tr").find(".treetable-expander").each(function(i,n){
@ -571,7 +572,7 @@
$(n).trigger("click");
}
})
}
};
// 折叠所有的行
target.collapseAll=function() {
target.find("tbody").find("tr").find(".treetable-expander").each(function(i,n){
@ -580,7 +581,7 @@
$(n).trigger("click");
}
})
}
};
// 显示指定列
target.showColumn=function(field,flag) {
var _index = $.inArray(field, target.hiddenColumns);
@ -590,20 +591,20 @@
target.find("."+field+"_cls").show();
//是否更新列选项状态
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');
}
}
};
// 隐藏指定列
target.hideColumn=function(field,flag) {
target.hiddenColumns.push(field);
target.find("."+field+"_cls").hide();
//是否更新列选项状态
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", '');
}
}
};
// ruoyi 解析数据,支持多层级访问
var getItemField = function (item, field) {
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>
<!-- jquery-validate 表单树插件 -->
<!-- <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 表格导出插件 -->
<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>

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

@ -54,17 +54,18 @@
$(function() {
var options = {
code: "deptId",
parentCode: "parentId",
uniqueId: "deptId",
code: "deptId",
parentCode: "parentId",
uniqueId: "deptId",
expandAll: false,
expandFirst: false,
expandColumn: 1,
url: prefix + "/list",
pagination: true,
url: prefix + "/listTreeTable",
dataUrl: prefix + "/listChild",
createUrl: prefix + "/add/{id}",
updateUrl: prefix + "/edit/{id}",
removeUrl: prefix + "/remove/{id}",
dataUrl: prefix + "/tree/listChild",
bordered: true,
onClickRow: onClickRow,
modalName: "部门",

Loading…
Cancel
Save