|
@@ -1,18 +1,16 @@
|
|
|
+var grid_selector = "#grid-table";
|
|
|
+var pager_selector = "#grid-pager";
|
|
|
var menuTree;
|
|
|
// zTree的参数配置,setting主要是设置一些tree的属性,是本地数据源,还是远程,动画效果,是否含有复选框等等
|
|
|
var setting = {
|
|
|
- // 复选框
|
|
|
- check : {
|
|
|
- enable : true,
|
|
|
- chkboxType : {
|
|
|
- "Y" : "",
|
|
|
- "N" : ""
|
|
|
- }
|
|
|
+ view : {
|
|
|
+ autoCancelSelected : false,
|
|
|
+ selectedMulti : false
|
|
|
},
|
|
|
async : {
|
|
|
enable : true,
|
|
|
type : 'post',
|
|
|
- url : basePath + "/menu/list"
|
|
|
+ url : basePath + "/menu/tree"
|
|
|
},
|
|
|
data : {
|
|
|
// 简单的数据源
|
|
@@ -20,23 +18,136 @@ var setting = {
|
|
|
enable : true,
|
|
|
idKey : "id",
|
|
|
pIdKey : "pid",
|
|
|
- rootPId : 0
|
|
|
- // 根节点
|
|
|
+ rootPId : 0 // 根节点
|
|
|
}
|
|
|
+ },
|
|
|
+ callback : {
|
|
|
+ beforeClick : menuTreeBeforeClick,
|
|
|
+ onClick : menuTreeOnClick
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+function menuTreeBeforeClick(treeId, treeNode) {
|
|
|
+ var nodes = menuTree.getSelectedNodes();
|
|
|
+
|
|
|
+ if (nodes.length == 1){
|
|
|
+ if (nodes[0].tId == treeNode.tId) {
|
|
|
+ menuTree.cancelSelectedNode(treeNode);
|
|
|
+ searchRecord();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ } else if (nodes.length > 1) {
|
|
|
+ menuTree.cancelSelectedNode();
|
|
|
+ searchRecord();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+};
|
|
|
+
|
|
|
+function menuTreeOnClick() {
|
|
|
+ searchRecord();
|
|
|
+};
|
|
|
+
|
|
|
$(document).ready(function() {
|
|
|
+ // 初始化Grid
|
|
|
+ initGrid();
|
|
|
// 初始化zTree对象
|
|
|
menuTree = $.fn.zTree.init($("#menuTree"), setting);
|
|
|
});
|
|
|
|
|
|
/**
|
|
|
+ * 初始化Grid
|
|
|
+ */
|
|
|
+function initGrid() {
|
|
|
+ // resize to fit page size
|
|
|
+ resizeTreePageGrid(grid_selector);
|
|
|
+ // 数据表格初始化
|
|
|
+ jQuery(grid_selector).jqGrid({
|
|
|
+ url : basePath + '/menu/list',
|
|
|
+ mtype : "POST", // 提交方式
|
|
|
+ datatype : "json",
|
|
|
+ autowidth : false,
|
|
|
+ height : "auto",
|
|
|
+ shrinkToFit : true,
|
|
|
+ sortname : "", // 默认的排序列
|
|
|
+ sortorder : "", // 默认的排序列
|
|
|
+ colNames : [
|
|
|
+ 'id', 'leaf', '名称', '编码', '备注'
|
|
|
+ ],
|
|
|
+ colModel : [
|
|
|
+ {
|
|
|
+ name : 'id',
|
|
|
+ index : 'id',
|
|
|
+ key : true,
|
|
|
+ hidden : true,
|
|
|
+ sortable : false
|
|
|
+ }, {
|
|
|
+ name : 'leaf',
|
|
|
+ index : 'leaf',
|
|
|
+ hidden : true,
|
|
|
+ sortable : false
|
|
|
+ }, {
|
|
|
+ name : 'name',
|
|
|
+ index : 'name',
|
|
|
+ sortable : false
|
|
|
+ }, {
|
|
|
+ name : 'code',
|
|
|
+ index : 'code',
|
|
|
+ sortable : false
|
|
|
+ }, {
|
|
|
+ name : 'remark',
|
|
|
+ index : 'remark',
|
|
|
+ sortable : false
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ rowNum : _rowNum, // 每页显示记录数
|
|
|
+ rowList : _rowList, // 用于改变显示行数的下拉列表框的元素数组。
|
|
|
+ pager : pager_selector, // 定义翻页用的导航栏
|
|
|
+ page : 1, // 设置初始的页码,初始为1
|
|
|
+ rownumbers : true,
|
|
|
+ pagerpos : 'center', // 指定分页栏的位置
|
|
|
+ altRows : true, // 设置为交替行表格,默认为false
|
|
|
+ multiselect : true, // 可以多选
|
|
|
+ multiboxonly : true, // 只有选择checkbox才会起作用
|
|
|
+ loadComplete : function() {
|
|
|
+ var table = this;
|
|
|
+ setTimeout(function() {
|
|
|
+ updatePagerIcons(table);
|
|
|
+ enableTooltips(table);
|
|
|
+ }, 0);
|
|
|
+ },
|
|
|
+ prmNames : {
|
|
|
+ oper : "oper",
|
|
|
+ page : "page",
|
|
|
+ rows : "rows",
|
|
|
+ sort : "sidx",
|
|
|
+ order : "sord"
|
|
|
+ },
|
|
|
+ jsonReader : {
|
|
|
+ root : "list", // json中代表实际模型数据的入口
|
|
|
+ page : "page", // json中代表当前页码的数据
|
|
|
+ total : "pages", // json中代表页码总数的数据
|
|
|
+ records : "total", // json中代表数据行总数的数据
|
|
|
+ repeatitems : false
|
|
|
+ // 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素
|
|
|
+ },
|
|
|
+ gridComplete : function() {
|
|
|
+ comGridComplete("grid-table", "editRecord");
|
|
|
+ },
|
|
|
+ onPaging : function() {
|
|
|
+ comGridPage("grid-table");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 调整jqgrid
|
|
|
+ ajustJqGrid(grid_selector, pager_selector);
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
* 新增菜单
|
|
|
*/
|
|
|
function addInfo() {
|
|
|
// 获取勾选节点
|
|
|
- var nodes = menuTree.getCheckedNodes(true);
|
|
|
+ var nodes = menuTree.getSelectedNodes();
|
|
|
if (nodes.length > 1) {
|
|
|
layer.alert("请选择一条记录!");
|
|
|
return;
|
|
@@ -76,19 +187,19 @@ function addInfo() {
|
|
|
*/
|
|
|
function editInfo() {
|
|
|
// 获取勾选节点
|
|
|
- var nodes = menuTree.getCheckedNodes(true);
|
|
|
- if (nodes.length != 1) {
|
|
|
- layer.alert("请选择一条记录!");
|
|
|
+ var ids = getMultiData(grid_selector);
|
|
|
+ if (isNull(ids) || ids.indexOf(",") != -1) {
|
|
|
+ layer.alert("请选择且只选择一条记录!");
|
|
|
return;
|
|
|
} else {
|
|
|
- var node = nodes[0];
|
|
|
- if (node.leaf == 'B') { // 按钮节点
|
|
|
- var pnode = node.getParentNode();
|
|
|
+ var selData = $(grid_selector).jqGrid('getRowData', ids);
|
|
|
+ if (selData.leaf == 'B') { // 按钮节点
|
|
|
+ var pnode = menuTree.getNodeByParam("id", selData.id).getParentNode();
|
|
|
$.ajax({
|
|
|
type : 'POST',
|
|
|
dataType : "json",
|
|
|
data : {
|
|
|
- "id" : node.id
|
|
|
+ "id" : selData.id
|
|
|
},
|
|
|
url : basePath + '/btn/getRecord',
|
|
|
success : function(data) {
|
|
@@ -105,12 +216,12 @@ function editInfo() {
|
|
|
}
|
|
|
});
|
|
|
} else { // 菜单节点
|
|
|
- var pnode = node.getParentNode();
|
|
|
+ var pnode = menuTree.getNodeByParam("id", selData.id).getParentNode();
|
|
|
$.ajax({
|
|
|
type : 'POST',
|
|
|
dataType : "json",
|
|
|
data : {
|
|
|
- "id" : node.id
|
|
|
+ "id" : selData.id
|
|
|
},
|
|
|
url : basePath + '/menu/getRecord',
|
|
|
success : function(data) {
|
|
@@ -140,19 +251,9 @@ function editInfo() {
|
|
|
*/
|
|
|
function delInfo() {
|
|
|
// 获取选择节点
|
|
|
- var nodes = menuTree.getCheckedNodes(true);
|
|
|
- if (nodes.length > 0) {
|
|
|
- var chkIds = "";
|
|
|
- var chkNames = "";
|
|
|
- for (var i = 0; i < nodes.length; i++) {
|
|
|
- if (i != 0) {
|
|
|
- chkIds += ",";
|
|
|
- chkNames += ",";
|
|
|
- }
|
|
|
- chkIds += nodes[i].id;
|
|
|
- chkNames += nodes[i].name;
|
|
|
- }
|
|
|
- layer.confirm('确定删除以下记录及其下级记录吗:<br>' + chkNames, {
|
|
|
+ var ids = getMultiData(grid_selector);
|
|
|
+ if (!isNull(ids)) {
|
|
|
+ layer.confirm('确定删除所选记录及其下级记录吗?', {
|
|
|
icon : 3,
|
|
|
title : '提示'
|
|
|
}, function(index) {
|
|
@@ -160,12 +261,13 @@ function delInfo() {
|
|
|
type : 'POST',
|
|
|
dataType : "json",
|
|
|
data : {
|
|
|
- "ids" : chkIds
|
|
|
+ "ids" : ids
|
|
|
},
|
|
|
url : basePath + '/menu/delRecodes',
|
|
|
success : function(data) {
|
|
|
layer.close(index);
|
|
|
menuTree.reAsyncChildNodes(null, "refresh");
|
|
|
+ searchRecord();
|
|
|
},
|
|
|
error : function(XMLHttpRequest, textStatus, errorThrown) {
|
|
|
layer.close(index);
|
|
@@ -179,10 +281,22 @@ function delInfo() {
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
- * 刷新菜单
|
|
|
+ * 查询信息
|
|
|
*/
|
|
|
-function refresh() {
|
|
|
- menuTree.reAsyncChildNodes(null, "refresh");
|
|
|
+function searchRecord() {
|
|
|
+ var name = encodeURI(encodeURI($("#srh_name").val()));
|
|
|
+ var code = $("#srh_code").val();
|
|
|
+ var pidStr = "";
|
|
|
+
|
|
|
+ var nodes = menuTree.getSelectedNodes();
|
|
|
+ if (nodes.length == 1) {
|
|
|
+ pidStr = "&pid=" + nodes[0].id + "&leaf=" + nodes[0].leaf;
|
|
|
+ }
|
|
|
+
|
|
|
+ $(grid_selector).jqGrid('setGridParam', {
|
|
|
+ url : basePath + "/menu/list?name=" + name + "&code=" + code + pidStr,
|
|
|
+ page : 1
|
|
|
+ }).trigger("reloadGrid");
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -200,6 +314,7 @@ function save() {
|
|
|
layer.alert("数据已成功保存!");
|
|
|
closeWin();
|
|
|
menuTree.reAsyncChildNodes(null, "refresh");
|
|
|
+ searchRecord();
|
|
|
} else {
|
|
|
layer.alert("数据保存失败!");
|
|
|
}
|
|
@@ -232,6 +347,7 @@ function btnSave() {
|
|
|
layer.alert("数据已成功保存!");
|
|
|
closeBtnWin();
|
|
|
menuTree.reAsyncChildNodes(null, "refresh");
|
|
|
+ searchRecord();
|
|
|
} else {
|
|
|
layer.alert("数据保存失败!");
|
|
|
}
|