|
|
@ -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; |
|
|
|