$(function () {
initialPage();
getGrid();
});
function initialPage() {
$(window).resize(function () {
TreeGrid.table.resetHeight({height: $(window).height() - 100});
});
}
function getGrid() {
var colunms = TreeGrid.initColumn();
var table = new TreeTable(TreeGrid.id, '../sys/menu/queryAll', colunms);
table.setExpandColumn(2);
table.setIdField("menuId");
table.setCodeField("menuId");
table.setParentCodeField("parentId");
table.setExpandAll(false);
table.setHeight($(window).height() - 100);
table.init();
TreeGrid.table = table;
}
var TreeGrid = {
id: "jqGrid",
table: null,
layerIndex: -1
};
/**
* 初始化表格的列
*/
TreeGrid.initColumn = function () {
var columns = [
{field: 'selectItem', radio: true},
{title: '编号', field: 'menuId', visitable: false, align: 'center', valign: 'middle', width: '50px'},
{title: '名称', field: 'name', align: 'center', valign: 'middle', width: '180px'},
{title: '上级菜单', field: 'parentName', align: 'center', valign: 'middle', width: '100px'},
{
title: '图标',
field: 'icon',
align: 'center',
valign: 'middle',
width: '50px',
formatter: function (item, index) {
return item.icon == null ? '' : '';
}
},
{
title: '类型',
field: 'type',
align: 'center',
valign: 'middle',
width: '60px',
formatter: function (item) {
if (item.type === 0) {
return '目录';
}
if (item.type === 1) {
return '菜单';
}
if (item.type === 2) {
return '按钮';
}
}
},
{title: '排序', field: 'orderNum', align: 'center', valign: 'middle', width: '50px'},
{title: '菜单URL', field: 'url', align: 'center', valign: 'middle', width: '200px'},
{title: '授权标识', field: 'perms', align: 'center', valign: 'middle'},
{
title: '状态', field: 'status', align: 'center', valign: 'middle', width: '80px',
formatter: function (item) {
if (item.status === 1) {
return '无效';
}
return '有效';
}
}];
return columns;
};
var setting = {
data: {
simpleData: {
enable: true,
idKey: "menuId",
pIdKey: "parentId",
rootPId: -1
},
key: {
url: "nourl"
}
}
};
var ztree;
var vm = new Vue({
el: '#rrapp',
data: {
showList: true,
title: null,
menu: {
parentName: null,
parentId: 0,
type: 1,
orderNum: 0,
status: 0
},
q: {
menuName: '',
parentName: ''
},
ruleValidate: {
name: [
{required: true, message: '菜单名称不能为空', trigger: 'blur'}
],
url: [
{required: true, message: '菜单url不能为空', trigger: 'blur'}
],
parentName: [
{required: true, message: '上级菜单不能为空', trigger: 'blur'}
]
}
},
methods: {
selectIcon: function () {
openWindow({
type: 2,
title: '选取图标',
area: ['1030px', '500px'],
content: ['icon.html'],
btn: false
});
},
getMenu: function (menuId) {
//加载菜单树
$.get("../sys/menu/select", function (r) {
ztree = $.fn.zTree.init($("#menuTree"), setting, r.menuList);
var node = ztree.getNodeByParam("menuId", vm.menu.parentId);
if (node) {
ztree.selectNode(node);
vm.menu.parentName = node.name;
} else {
node = ztree.getNodeByParam("menuId", 0);
ztree.selectNode(node);
vm.menu.parentName = node.name;
}
})
},
add: function () {
vm.showList = false;
vm.title = "新增";
var menuId = TreeGrid.table.getSelectedRow();
var parentId = 0;
if (menuId.length != 0) {
parentId = menuId[0].id;
}
vm.menu = {parentName: null, parentId: parentId, type: 1, orderNum: 0, status: 0};
vm.getMenu();
},
update: function (event) {
var menuId = TreeGrid.table.getSelectedRow();
if (menuId.length == 0) {
iview.Message.error("请选择一条记录");
return;
}
$.get("../sys/menu/info/" + menuId[0].id, function (r) {
vm.showList = false;
vm.title = "修改";
vm.menu = r.menu;
vm.getMenu();
});
},
del: function (event) {
var menuIds = TreeGrid.table.getSelectedRow(), ids = [];
if (menuIds.length == 0) {
iview.Message.error("请选择一条记录");
return;
}
confirm('确定要删除选中的记录?', function () {
$.each(menuIds, function (idx, item) {
ids[idx] = item.id;
});
$.ajax({
type: "POST",
url: "../sys/menu/delete",
contentType: "application/json",
data: JSON.stringify(ids),
success: function (r) {
if (r.code === 0) {
alert('操作成功', function (index) {
vm.reload();
});
} else {
alert(r.msg);
}
}
});
});
},
saveOrUpdate: function (event) {
var url = vm.menu.menuId == null ? "../sys/menu/save" : "../sys/menu/update";
$.ajax({
type: "POST",
url: url,
contentType: "application/json",
data: JSON.stringify(vm.menu),
success: function (r) {
if (r.code === 0) {
alert('操作成功', function (index) {
vm.reload();
});
} else {
iview.Message.error(r.msg);
}
}
});
},
menuTree: function () {
openWindow({
title: "选择菜单",
area: ['300px', '450px'],
content: jQuery("#menuLayer"),
btn: ['确定', '取消'],
btn1: function (index) {
var node = ztree.getSelectedNodes();
//选择上级菜单
vm.menu.parentId = node[0].menuId;
vm.menu.parentName = node[0].name;
layer.close(index);
}
});
},
query: function () {
vm.reload();
},
reload: function (event) {
vm.showList = true;
TreeGrid.table.refresh();
},
handleSubmit: function (name) {
handleSubmitValidate(this, name, function () {
vm.saveOrUpdate()
});
},
handleReset: function (name) {
handleResetForm(this, name);
}
}
});