前台js脚本
$(function() {
$permissionList = $("#permmanage_copy");
var contextpath = $("#contextpath").val();
$(document).ready(function () {
$(’#permissionList-table’).treegridData ({
id: ‘id’,//变量
parentColumn: ‘pid’,//变量
url: contextpath +"/rest/permission/getpermissionlists",
method: ‘GET’,
contentType: “application/json”,//请求方式()
ajaxParams: {}, //请求数据的ajax的data属性
expandColumn: null,//在哪一列上面显示展开按钮
striped: true, //是否各行渐变色
sidePagenation:‘server’,
bordered: false, //是否显示边框
expandAll: false, //是否全部展开
columns:
[
{
field: ‘checkBox’,
checkbox: true
},
{
field: ‘id’,
title: ‘序号’,
align: ‘center’
},
{
field: ‘pid’,
title: ‘父菜单id’,
align: ‘center’
},
{
field: ‘name’,
title: ‘菜单名称’,
align: ‘center’
},
/{
field: ‘istype’,
title: ‘权限分类’,
align: ‘center’
},*/
{
field: ‘descpt’,
title: ‘描述’,
align: ‘center’
},
{
field: ‘code’,
title: ‘菜单编号’,
align: ‘center’
},
{
field: ‘page’,
title: ‘路径’,
// formatter: timeFormatter,
align: ‘center’
},
{
field: ‘updateTime’,
title: ‘更新日期’,
formatter: timeFormatter,
align: ‘center’
},
{
field:'operate',
title:'操作',
formatter: formatterOperate,
align: 'center'
}
]
});
});
function formatterOperate(data, parentNode, parentIndex, tbody){
return ‘<a οnclick="addRow(this)"style=“color: #333;background-color: #dedcdc;padding: 4px 8px;font-size: 14px;text-align: center;vertical-align: middle;border: 1px solid transparent;border-radius: 4px;margin-left:10px”>添加子节点’ +
‘<a οnclick="updRow(this)"style=“color: #333;background-color: #dedcdc;padding: 4px 8px;font-size: 14px;text-align: center;vertical-align: middle;border: 1px solid transparent;border-radius: 4px;margin-left:20px;”>修改’ +
‘<a οnclick="delRow(this)"style=“color: #333;background-color: #dedcdc;padding: 4px 8px;font-size: 14px;text-align: center;vertical-align: middle;border: 1px solid transparent;border-radius: 4px;margin-left:20px;”>删除’;
}
});
//点击增加根节点出现添加节点信息的panel
function addgRow(data){
showContextPanel();
$("#fatherId").hide();
var tdata = $(data).parent();
var treegpid = 0;
$("#name").val("");
/* $("#istype").val("");*/
$("#descpt").val("");
$("#code").val("");
$("#page").val("");
$("#pid").val(treegpid);
KaTeX parse error: Expected 'EOF', got '#' at position 3: ('#̲addpnodeform').….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #i….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #n….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #i….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #d….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #c….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #p….trim($("#addpnodeform #pid").val());
$.post(contextpath+"/rest/permission/addpermission",{
// "id":id,
"name":addgname,
/*"istype":addgistype,*/
"descpt":addgdescpt,
"code":addgcode,
"page":addgpage,
"pid":addgpid
},function(res){
if (res.success) {
MyConfirm("添加根节点成功!是否返回列表?", function() {
$("#permmanage_copy .close").trigger("click");
location.reload();
});
} else {
MyAlert(res.message, function() {
});
return;
}
},"json")
});
};
//添加
function addRow(data){
var tdata = $(data).parent();
var treegpid = tdata.prev().prev().prev().prev().prev().prev().prev().html().trim();
showContextPanel();
$("#fatherId").hide();
// $("#id").val(treegid);
$("#name").val("");
/*$("#istype").val("");*/
$("#descpt").val("");
$("#code").val("");
$("#page").val("");
$("#pid").val(treegpid);
//提交
KaTeX parse error: Expected 'EOF', got '#' at position 3: ('#̲addpnodeform').….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #i….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #n….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #i….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #d….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #c….trim(KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲addpnodeform #p….trim($("#addpnodeform #pid").val());
$.post(contextpath+"/rest/permission/addpermission",{
// “id”:id,
“name”:name,
/“istype”:istype,/
“descpt”:descpt,
“code”:code,
“page”:page,
“pid”:pid
},function(res){
if (res.success) {
MyConfirm(“添加成功!是否返回列表?”, function() {
$("#permmanage_copy .close").trigger(“click”);
location.reload();
});
} else {
MyAlert(res.message, function() {
});
return;
}
},“json”)
});
};
//删除
function delRow(data){
var tdata = $(data).parent();
var treegpid = tdata.prev().prev().prev().prev().prev().prev().prev().html().trim();
//判断是否为根节点,根节点不可删
if(treegpid==0){
//alert(“根节点不能删除”);
MyAlert(“根节点不能删除”,function(){return;})
//判断是否为父节点
} else{
MyConfirm(“确定要删除吗?”,function(){
$.post(contextpath + “/rest/permission/delpermission”,
{
“id”:treegpid
},
function(res) {
if (res) {
MyConfirm(“删除成功!是否返回列表?”, function() {
$("#permmanage_copy “).find(”.close").trigger(“click”);
$("#permmanage_copy").find(’#permissionList-table’).bootstrapTable(‘refresh’);
}, function() {
$("#permmanage_copy #title").val("");
$("#permmanage_copy #content").val("");
$("#permmanage_copy .child_list_tr").remove();
attachmentMap = new Map();
$("#permmanage_copy .cover_div").remove();
});
location.reload();
} })
},
function(){
return;
})
}
}
//修改
function updRow(data){
var tdata = $(data).parent();
var fatherid = tdata.prev().prev().prev().prev().prev().prev().html().trim();
var treegpid = tdata.prev().prev().prev().prev().prev().prev().prev().html().trim();
var name = tdata.prev().prev().prev().prev().prev().html().trim();
/* var istype = tdata.prev().prev().prev().prev().prev().html().trim();*/
var descpt = tdata.prev().prev().prev().prev().html().trim();
var code = tdata.prev().prev().prev().html().trim();
var page = tdata.prev().prev().html().trim();
showContextPanel();
if(fatherid==0){
$("#fatherId").hide();
}else{
$("#fatherId").show();
}
$("#name").val(name);
/* $("#istype").val(istype); */
$("#descpt").val(descpt);
$("#code").val(code);
$("#page").val(page);
$('#addpnodeform').formValidationExtend({},function(){
var addname=$.trim($("#addpnodeform #name").val());
/*var addistype=$.trim($("#addpnodeform #istype").val());*/
var adddescpt=$.trim($("#addpnodeform #descpt").val());
var addcode=$.trim($("#addpnodeform #code").val());
var addpage=$.trim($("#addpnodeform #page").val());
var options=$("#fatherid option:selected"); //获取选中的项
var addpid;
if(fatherid==0){
addpid = 0;
}else{
addpid=$.trim(options.val());
}
debugger;
$.post(contextpath+"/rest/permission/updpermission",{
"id":treegpid,
"pid":addpid,
"name":addname,
/*"istype":addistype,*/
"descpt":adddescpt,
"code":addcode,
"page":addpage
},function(res){
if(res.success){
MyAlert("修改成功",function(){
$("#permmanage_copy .close").trigger("click");
location.reload();
});
}else{
MyAlert(res.message,function(){
});
return;
}
},"json")
});
}
function showContextPanel(){
$("#permission").show();
$("#permissionpanel").show();
};
$(".close").on(“click”,function(){
hideContextPanel();
});
function hideContextPanel() {
$("#permission").hide();
$("#permissionpanel").hide();
};
前台jsp页面
权限管理
<div class="fixed-table-toolbar">
<div class="bars pull-left">
<div id="classifyCode-toolbar" class="btn-group">
<button id="classifyCode_flash_btn" type="button"
class="btn btn-default refresh">
<i class="glyphicon glyphicon-refresh"></i> 刷新
</button>
<a onclick="addgRow(this)" data-target="#permission" style="color: #333;background-color: #fff;
border: 1px solid #ccc;border-radius: 4px;padding: 6px 12px;font-size: 14px;line-height: 1.42857143;
text-align: center;cursor: pointer;">
<i class="glyphicon glyphicon-plus"></i> 添加根节点
</a>
</div>
</div>
<div class="pull-right search">
<input class="form-control" type="text" placeholder="搜索">
</div>
</div>
<table id="permissionList-table">
</table>
<form method="post" id="addpnodeform" class="form-horizontal"
onsubmit="javascript:return false;" >
<div class="form-group" id="fatherId">
<label for="fatherId" class="col-md-4 control-label input_on ">
父级菜单:
</label>
<div class="col-md-8">
<select id="fatherid">
<option value=1>系统管理</option>
<option value=5>清单录入管理</option>
<option value=6>清单统计分析</option>
<option value=8>清单输出管理</option>
<option value=15>固定燃烧源</option>
</select>
</div>
</div>
<div class="form-group">
<label for="name" class="col-md-4 control-label input_on ">
菜单名称:
</label>
<div class="col-md-8">
<input name="name" id="name" type="text"
class="form_input child_input form-control" required
data-toggle="tooltip" data-placement="right">
</div>
</div>
<!-- <div class="form-group">
<label for="istype" class="col-md-4 control-label input_on ">
权限分类:
</label>
<div class="col-md-8">
<input name="istype" id="istype" type="text"
class="form_input child_input form-control" required
data-toggle="tooltip" data-placement="right"placeholder="0">
</div>
</div> -->
<div class="form-group">
<label for="descpt" class="col-md-4 control-label input_on ">
描述:
</label>
<div class="col-md-8">
<input name="descpt" id="descpt" type="text"
class="form_input child_input form-control" required
data-toggle="tooltip" data-placement="right">
</div>
</div>
<div class="form-group">
<label for="code" class="col-md-4 control-label input_on ">
菜单编号:
</label>
<div class="col-md-8">
<input name="code" id="code" type="text"
class="form_input child_input form-control" required
data-toggle="tooltip" data-placement="right">
</div>
</div>
<div class="form-group">
<label for="page" class="col-md-4 control-label input_on ">
路径:
</label>
<div class="col-md-8">
<input name="page" id="page" type="text"
class="form_input child_input form-control" required
data-toggle="tooltip" data-placement="right">
</div>
</div>
<div class="form-group" style="display:none;">
<label for="pid" class="col-md-4 control-label input_on ">
父菜单id:
</label>
<div class="col-md-8">
<input name="pid" id="pid" type="text"
class="form_input child_input form-control" >
</div>
</div>
<div class="form_buttons" style="margin:70px; padding-left:50px;position: relative;">
<button id="save" type="submit" class="button ">提交</button>
</div>
引入的jar包就不说了。
主要的是这个js脚本如下:
jsp引入这个bootstrap-table-treegrid.js脚本,然后引入自己的js脚本事件 就行了
(function ($) {
“use strict”;
$.fn.treegridData = function (options, param) {
//如果是调用方法
if (typeof options == 'string') {
return $.fn.treegridData.methods[options](this, param);
}
//如果是初始化组件
options = $.extend({}, $.fn.treegridData.defaults, options || {});
var target = $(this);
//得到根节点
target.getRootNodes = function (data) {
var result = [];
$.each(data, function (index, item) {
if (!item[options.parentColumn]) {
result.push(item);
}
});
return result;
};
var j = 0;
//递归获取子节点并且设置子节点
target.getChildNodes = function (data, parentNode, parentIndex, tbody) {
$.each(data, function (i, item) {
if (item[options.parentColumn] == parentNode[options.id]) {
var tr = $('<tr></tr>');
tr.addClass('treegrid-' + (++j));
tr.addClass('treegrid-parent-' + parentIndex);
$.each(options.columns, function (index, column) {
var td = $('<td></td>');
if (column.formatter != null && column.formatter != undefined) {
td.html(column.formatter(item[column.field]));
} else {
td.html(item[column.field]);
}
tr.append(td);
});
tbody.append(tr);
target.getChildNodes(data, item, j, tbody)
}
});
};
target.addClass('table');
if (options.striped) {
target.addClass('table-striped');
}
if (options.bordered) {
target.addClass('table-bordered');
}
if (options.url) {
$.ajax({
type: options.type,
url: options.url,
data: options.ajaxParams,
dataType: "JSON",
success: function (data, textStatus, jqXHR) {
//构造表头
var thr = $('<tr></tr>');
$.each(options.columns, function (i, item) {
var th = $('<th style="padding:10px;text-align:center;"></th>');
th.text(item.title);
thr.append(th);
});
var thead = $('<thead></thead>');
thead.append(thr);
target.append(thead);
//构造表体
var tbody = $('<tbody></tbody>');
var rootNode = target.getRootNodes(data);
$.each(rootNode, function (i, item) {
var tr = $('<tr></tr>');
tr.addClass('treegrid-' + (++j));
$.each(options.columns, function (index, column) {
var td = $('<td></td>');
if (column.formatter != null && column.formatter != undefined) {
td.html(column.formatter(item[column.field]));
} else {
td.html(item[column.field]);
}
tr.append(td);
});
tbody.append(tr);
target.getChildNodes(data, item, j, tbody);
});
target.append(tbody);
target.treegrid({
expanderExpandedClass: options.expanderExpandedClass,
expanderCollapsedClass: options.expanderCollapsedClass
});
if (!options.expandAll) {
target.treegrid('collapseAll');
}
}
});
}
else {
//也可以通过defaults里面的data属性通过传递一个数据集合进来对组件进行初始化....有兴趣可以自己实现,思路和上述类似
}
return target;
};
$.fn.treegridData.methods = {
getAllNodes: function (target, data) {
return target.treegrid('getAllNodes');
},
//组件的其他方法也可以进行类似封装........
};
$.fn.treegridData.defaults = {
id: 'id',
parentColumn: 'pid',
data: [], //构造table的数据集合
type: "GET", //请求数据的ajax类型
url: null, //请求数据的ajax的url
ajaxParams: {}, //请求数据的ajax的data属性
expandColumn: null,//在哪一列上面显示展开按钮
expandAll: false, //是否全部展开
striped: true, //是否各行渐变色
bordered: false, //是否显示边框
columns: [],
expanderExpandedClass: 'glyphicon glyphicon-chevron-down',//展开的按钮的图标
expanderCollapsedClass: 'glyphicon glyphicon-chevron-right'//缩起的按钮的图标
};
})(jQuery);