/**
* Created by mac on 17/5/10.
*/
(function () {
var fun = {
//初始化表格数据
initTable:function(){
$('#menuTable').bootstrapTable('destroy').bootstrapTable({
striped:true,//表格显示条纹
pagination: true, //启动分页
pageNumber:1, //当前第几页
pageSize: 10, //每页显示的记录数
pageList: [10,15,20], //记录数可选列表
sidePagination: 'server',//表示服务端分页
queryParamsType: 'limit',
method:'POST',//请求方法
paginationPreText: '<',
paginationNextText: '>',
ajax:tableLoadRequest,//自定义ajax加载数据
uniqueId:'id',
columns: [
{field: 'id', title: 'ID', visible: false, align: 'left'},
{field: 'parentResId', title: 'ID', visible: false, align: 'left',cellStyle:commonObj.formatTableUnit},
{field: 'resCode', title: '菜单编码', visible: false, align: 'left'},
{field: 'resName', title: '菜单名称', width: '15%', align: 'left',cellStyle:commonObj.formatTableUnit,formatter:commonObj.replacenull},
{field: 'resType', title: '菜单类型', width: '8%', align: 'left',formatter:function(value){
if(value==1){
return '菜单'
}else if(value==2){
return '按钮'
}else{
return '公共服务'
}
},cellStyle:commonObj.formatTableUnit},
{field: 'resUrl', title: '菜单地址', width: '20%', align: 'left',cellStyle:commonObj.formatTableUnit,formatter:commonObj.replacenull},
{field: 'ifDisplay', title: '是否显示', width: '10%', align: 'left',formatter:function(value){
if(value==1){
return '显示'
}else if(value==0){
return '不显示'
}else{
return '未知'
}
},cellStyle:commonObj.formatTableUnit},
{field: 'sysCodeName', title: '系统名称', width: '15%', align: 'left',formatter:function (value,row,index) {
var userSysName = sessionStorage.getItem("sysName");
return userSysName;
},cellStyle:commonObj.formatTableUnit},
{field: 'sortNum', title: '排序', width: '8%', align: 'left',cellStyle:commonObj.formatTableUnit,formatter:commonObj.replacenull},
{field: 'oper', title: '操作', width: '25%', align: 'left',formatter:fun.operFormatter,cellStyle:commonObj.formatTableUnit}
],
formatLoadingMessage:function(){
return "数据正在加载中...";
},
formatNoMatches: function () {
return '暂无信息,可使用 按钮为系统添加菜单信息';
}
});
},
//操作显示
operFormatter:function(value,row,index){
var operStr ='修改'+
'删除';
return operStr;
},
//添加菜单
addMenu:function(){
var selectedNodes = Tree.getSelectedNodes();
if(selectedNodes.length==0){
$('.ITD-alertmodel-contentmsg').text('请先在左侧选中要添加子菜单的父菜单!');
$('#menumanage_alertmodel').modal('show')
setTimeout(function () {
$('.ITD-alertmodel-contentmsg').text('');
$('#menumanage_alertmodel').modal('hide')
},3000);
// swal({title:"提示",text:'请先在左侧选中要添加子菜单的父菜单!',type:"warning",timer:3000,allowOutsideClick:true});
return false;
}
$('#role_alert_error').text('');
$('input').val('');
$('textarea').val('');
$('select').val('');
$("#resCode").val('');
$('#resType').html('菜单1');
$('#ifDisplay').html('显示1');
//父节点名称
var selectedNode = selectedNodes[0];
var children = selectedNode.children;
var num =1;
if(children){
num = children.length+1;
}
fun.initMenuSortNum(num,num);
$('#parentResName').html(selectedNode.name);
$('#parentResId').val(selectedNode.id);
$('#alert_over').append($('#role_alert_con_menu'));
$('#role_alert_title').html('添加菜单');
var sysName = sessionStorage.getItem("sysName");
$("#sysCodeNameView").val(sysName);
$('#alert_over,#role_alert_con_menu').show();
},
//修改菜单
modifyMenu:function(element){
$('#role_alert_error').text('');
//设置值
var Menuid = $(element).attr('data-value');
//根据唯一值获取行数据
var modifyRow = $('#menuTable').bootstrapTable('getRowByUniqueId', Menuid);
$('#menuId').val(Menuid);
$("#resCode").val(modifyRow.resCode);
$('#resName').val(modifyRow.resName);
$('#resUrl').val(modifyRow.resUrl);
$('#resDesc').val(modifyRow.resDesc);
$('#resIcon').val(modifyRow.resIcon);
//父节点名称
$('#parentResId').val(modifyRow.parentResId);
var node = Tree.getNodeById(modifyRow.parentResId);
var children = node.children;
var num =1;
if(children){
num = children.length;
}
var thisNode = Tree.getNodeById(Menuid);
fun.initMenuSortNum(num,thisNode.getIndex()+1);
$('#parentResName').html(node==null?'':node.name);
if(modifyRow.resType == 1){
$('#resType').html('菜单1');
}else if(modifyRow.resType == 2){
$('#resType').html('按钮2');
}
if(modifyRow.ifDisplay == 1){
$('#ifDisplay').html('显示1');
}else if(modifyRow.ifDisplay == 0){
$('#ifDisplay').html('不显示0');
}
$('#alert_over').append($('#role_alert_con_menu'));
$('#role_alert_title').html('修改菜单');
var sysName = sessionStorage.getItem("sysName");
$("#sysCodeNameView").val(sysName);
$('#alert_over,#role_alert_con_menu').show();
},
//初始化菜单排序
initMenuSortNum:function(num,defaultNum){
//进行初始化
$("#oldSortNum").val('');
$("#sortNum").empty();
$("#sortNumData").empty();
//开始赋值
$("#oldSortNum").val(defaultNum);
$("#sortNum").html(defaultNum+''+defaultNum+'');
var selectHtml = '';
for(var i=1 ;i<=num;i++){
selectHtml+=''+i+''+i+'';
}
$("#sortNumData").append(selectHtml);
},
//删除菜单
deleteMenu:function(element){
var Menuid = $(element).attr('data-value');
var Menuname = $(element).attr('Menuname');
var node = Tree.getNodeById(Menuid);
if(node.isParent){
var message ="菜单["+Menuname+"]下面有子菜单,不允许删除!"
swal({title:"提示",text:message,type:"warning",timer:5000,allowOutsideClick:true});
return false;
}
var content = $('确定要删除菜单('+Menuname+')吗?');
var isUsed = '';
swal({
title: '提示',
text: '确定要删除菜单['+Menuname+']?',
type: 'warning',
showCancelButton: true,
allowOutsideClick:false,
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(function(isConfirm) {
if (isConfirm === true) {
//判断该角色是否已经被占用
isUsedForMenuByMenuId();
if(isUsed=='true'){
deleteMenuForce(Menuname);
}else{//没有被占用
//删除角色
realDeleteMenu();
//刷新table
$('#menuTable').bootstrapTable('refresh', {silent: true});
}
} else if (isConfirm === false) {
swal.close()
}
});
//强制删除菜单
function deleteMenuForce(menuName){
swal({
title: '提示',
text: '菜单['+menuName+']已经被使用,是否强制删除?',
type: 'warning',
showCancelButton: true,
allowOutsideClick:false,
confirmButtonText: '强制删除',
cancelButtonText: '取消',
}).then(function(isConfirm) {
if (isConfirm === true) {
//删除角色
realDeleteMenu();
//刷新table
$('#menuTable').bootstrapTable('refresh', {silent: true});
} else if (isConfirm === false) {
swal.close()
}
});
}
//正式删除菜单
function realDeleteMenu(){
var sysCode = sessionStorage.getItem("sysCode");
sysAjax({
method: 'POST',
url: dataUrl.util.deleteRes(),
data: "sysCode="+sysCode+"&resIds="+Menuid,
contentType: 'application/x-www-form-urlencoded',
dataType:'json',
async:false,
success: function (res) {
if(isError(res)){
return false;
}
//删除树节点
Tree.removeNode(Menuid)
}
});
}
//判断该菜单是否已经被占用
function isUsedForMenuByMenuId(){
var sysCode = sessionStorage.getItem("sysCode");
sysAjax({
method: 'post',
url: dataUrl.util.isUsedForMenuByMenuId(),
data: "sysCode="+sysCode+"&resId="+Menuid,
contentType: 'application/x-www-form-urlencoded',
dataType:'json',
async:false,
success: function (res) {
if(isError(res)){
return false;
}
isUsed = res.data+'';
}
});
}
},
//show
show_alert:function () {
$('#alert_over').append($('#role_alert_error'));
$('#alert_over,#role_alert_error').show();
},
//clsoe
close_alert:function () {
$('#alert_over,#role_alert_error').hide();
},
//cancel
alert_cancel:function () {
$('#alert_over,#role_alert_error').hide();
},
//alert_ok
alert_ok:function () {
var sysCode = sessionStorage.getItem("sysCode");
//验证参数
fun.validateMenu();
var errmsg = $('#role_alert_error').text();
if(errmsg !=''){
return false;
}
//拼接请求参数
var url = dataUrl.util.saveOrUpdateRes();
var req= {
"id": $('#menuId').val(),
"ifDisplay": $('#ifDisplay').find('span').text(),
"parentResId": $('#parentResId').val(),
"resDesc": $('#resDesc').val(),
"resType": $('#resType').find('span').text(),
"resCode": $('#resCode').val(),
"resName": $('#resName').val(),
"resIcon":$('#resIcon').val(),
"resUrl": $('#resUrl').val(),
"sortNum": $('#sortNum').find('span').text(),
"sysCode":sysCode,
"oldSortNum":$('#oldSortNum').val()
};
sysAjax({
method:'POST',
url: url,
data: JSON.stringify(req),
success: function(res){
if(isError(res)){
return false;
}
$('#alert_over,#role_alert_con_menu').hide();
$('#menuId').val('');
$('#parentResId').val('');
$('#parentResName').val('')
//刷新左边的tree
Tree.initTree();
// if($('#menuId').val() == ''){//添加节点
// var node = {
// name:$('#resName').val(),
// id:res.data,
// pid:$('#parentResId').val()
// };
// Tree.addNodes($('#parentResId').val(),node);
// }else{//修改节点名称
// var node = Tree.getNodeById($('#menuId').val())
// node.name = $('#resName').val();
// Tree.updateNodes(node);
// }
// $('#menuId').val('');
// $('#parentResId').val('');
// $('#parentResName').val('')
//刷新table
$('#menuTable').bootstrapTable('refresh', {silent: true});
}
});
},
//验证参数
validateMenu:function(){
var errorIfo = $('#role_alert_error');
errorIfo.text('');
var resName = $('#resName').val();
var resUrl = $('#resUrl').val();
var resDesc = $('#resDesc').val();
var regular = /^([^\`\+\~\!\#\$\%\^\&\*\(\)\|\}\{\=\"\'\!\¥\……\(\)\——]*[\+\~\!\#\$\%\^\&\*\(\)\|\}\{\=\"\'\`\!\?\:\<\>\•\“\”\;\‘\‘\〈\ 〉\¥\……\(\)\——\{\}\【\】\\\/\;\:\?\《\》\。\,\、\[\]\,]+.*)$/;
//名字
if(StrUtil.isEmpty(resName)){
errorIfo.text('请填写菜单名称');
$('#resName').focus()
return false;
}else if(resName.indexOf(' ')>=0||regular.test(resName)){
errorIfo.text('菜单名不能包含空格或者标点符号');
$('#resName').focus()
return false;
}
// if(StrUtil.isEmpty(resUrl)){
// errorIfo.text('请填写菜单地址');
// return false;
// }
//描述
if(StrUtil.isEmpty(resDesc)){
errorIfo.text('请输入菜单描述');
$('#resDesc').focus();
return false;
};
}
};
var Tree = {
//初始化树
initTree:function(){
$.fn.zTree.init($("#tree"), Tree.setting, Tree.getTreeData());
//展开全部
var treeObj = $.fn.zTree.getZTreeObj("tree");
treeObj.expandAll(true);
},
setting:{
callback: {
onClick: function(event, treeId, treeNode){
//重新初始化table
fun.initTable();
}
},
view: {
selectedMulti: false
},
check: {
enable: false,
chkStyle: "checkbox"
},
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId",
rootPId: -1
}
},
edit: {
enable: false
}
},
//添加节点
addNodes:function(parentId,newNodes){
var treeObj = $.fn.zTree.getZTreeObj("tree");
var parentId = Tree.getNodeById(parentId);
newNodes = treeObj.addNodes(parentId, newNodes);
},
//更新节点
updateNodes:function(treeNode, checkTypeFlag){
var treeObj = $.fn.zTree.getZTreeObj("tree");
treeObj.updateNode(treeNode);
},
//删除节点
removeNode:function(id){
var treeObj = $.fn.zTree.getZTreeObj("tree");
var treeNode = Tree.getNodeById(id);
treeObj.removeNode(treeNode);
},
//通过id获取某个节点
getNodeById:function(id){
var treeObj = $.fn.zTree.getZTreeObj("tree");
var node = treeObj.getNodeByParam("id",id, null);
return node;
},
//获取选中的节点集合
getSelectedNodes:function(){
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
return nodes;
},
//获取树
getTreeData:function() {
var sysCode = sessionStorage.getItem("sysCode");
var zNodes = [];
sysAjax({
method:'POST',
url: dataUrl.util.getResTreeBySysCode(),
data: "sysCode="+sysCode,
contentType: 'application/x-www-form-urlencoded',
dataType:'json',
async:false,
success: function(res){
if(isError(res)){
return false;
}
zNodes =res.data;
}
});
//增加一个公告根节点
zNodes[zNodes.length] = {name:'根节点',id:-1,checked:true};
return zNodes;
}
}
//初始执行
init();
function init(){
//初始化树
Tree.initTree();
//close弹窗
$('.close_alert').on('click',function () {
fun.close_alert();
});
//cancel弹窗
$('#alert_cancel').on('click',function () {
fun.close_alert();
});
//alert_ok弹窗
$('#alert_ok').on('click',function () {
fun.alert_ok();
});
//初始化table
fun.initTable();
//删除角色
$(document).on('click','[delete]',function(){
fun.deleteMenu(this);
});
//修改角色
$(document).on('click','[modify]',function(){
fun.modifyMenu(this);
});
//添加角色
$(document).on('click','.addMenu',function(){
fun.addMenu();
});
//下拉框
var TTDiy_select = new diy_select({ //参数可选
TTContainer: 'diy_select', //控件的class
TTDiy_select_input: 'diy_select_input', //用于提交表单的class
TTDiy_select_txt: 'diy_select_txt', //diy_select用于显示当前选中内容的容器class
TTDiy_select_btn: 'diy_select_btn', //diy_select的打开按钮
TTDiv_select_list: 'diy_select_list', //要显示的下拉框内容列表class
TTFcous: 'focus' //得到焦点时的class
}); //如同时使用多个时请保持各class一致.
}
/**
* 处理错误信息
* @param {Object} res
*/
function isError(res){
if(res == null || res == undefined){
return true;
}
if(res.code!='8888'){
var errorPop = new Pop({
header:'错误提示',
content:$(''+res.msg+''),
buttons:[{
type:'popOk',
text:'确定',
callback:function(){
errorPop.close();
}
}]
});
return true;
}else{
return false;
}
}
/**
* 自定义table AJAX请求
* @param {Object} params
*/
function tableLoadRequest(params){
//获取选中的树节点
var nodes = Tree.getSelectedNodes();
var id = '';
var parentResId = '';
if(nodes.length>0){
var nodeId = nodes[0].id;
if(nodes[0].isParent){//如果是父节点则按照父节点查询
parentResId = nodeId;
}else{
id = nodeId;
}
}else{//没有选中,默认查询第一级节点
parentResId = 0;
}
var sysCode = sessionStorage.getItem("sysCode");
//设置请求参数
var pageNum = (params.data.offset/params.data.limit)+1;
var req= {
baseRequest:{
pageNum:pageNum,
pageSize:params.data.limit
},
sysCode:sysCode,
id:id,
parentResId:parentResId
};
var easyUIOps = {
method: params.type,
url: dataUrl.util.getSysResBySysCode(),
data: JSON.stringify(req),
contentType: 'application/json; charset=utf-8',
dataType:'json',
success: function(res){
if(isError(res)){
return false;
}
params.success(res.data);
}
};
sysAjax(easyUIOps);
}
})();