/** * 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); } })();