/** * 功能模块菜单 * @author weidy@2018-06-04 * @constructor */ layui.define(['layer','element','form','table','tree'],function(exports){ var Class = function(){ this.MODELNAME = "platform/securityManage/SmFunction"; this.moduleKey = "SmFunction"; this.id='SmFunction'; this.sourceData={}; this.backPath = configData.compatibility?path:configData.frameworkPath; this.buttonIconMap = {}; this.url={ tree:'smFunctionController/treeAllMenu', getObject: 'smFunctionController/getObjectByOid', add:'smFunctionController/addSave', edit:'smFunctionController/editSave', deleteUrl:'smFunctionController/delete', referTree:'smFunctionController/refTreeMenu', listButton:'smFunctionController/listButton', referButton:'smFunctionController/referButton', addButton:'smFunctionController/addButton', editButton:'smFunctionController/editButton', deleteButton:'smFunctionController/deleteButton', batchAddButton:'smFunctionController/batchAddButton' }; this.columns = []; this.getContent=function(){//返回这个组件的基础html var that = this; var html = ""; html = [ that.getToolbarHtml(), '
', '
', '', '
', '
', '
', '
', '
', '
', '
', '', '', '', '', '', '', '
', '
', '
', '
', '
' ].join(""); return html; }; this.getToolbarHtml = function(){ var that =this; return ['
',//主列表的按钮 '', '', '', '', '', '
'].join(""); }; this.init=function(){ //基础的html被添加后,再执行初始化 var that = this; $webUtil.copyConfig(that,that.moduleKey); $webUtil.bindDefultButtonLisenter(that, that.id); if(that.sourceData && 'true' == that.sourceData['admin']){ that.admin = true; $("div[layui-filter='toolbar_button_" + that.id + "']").parent().hide(); that.backPath = configData.compatibility?path:configData.adminServicePath; }else{ that.admin = false; } var tree = layui.tree; var scrollHeight = window.innerHeight; var treeUL = $('[layui-filter="tree_' + that.id + '"]'); var treeHeight = scrollHeight - 200; treeUL.parent().height(treeHeight); tree.init("tree_" + that.id, treeUL, { url: that.url.tree, backPath: that.backPath, extraParams: { isMuti: false, isQueryAllColumn: true }, showSearch:true, click: function (item, elem, options) { that.setFormValues(item.attributes); }, done: function (thisFilter) { that.initForm(); } }); }; this.initForm = function(){ var that = this; var form = layui.form; form.addItems("form_" + that.id, that.getFormItems(true), function () { if(!that.admin) { that.initButtonTable(); } }, {}, { defaultColumnOneRow: 2 }); }; this.initButtonTable = function(){ var that = this; var table = layui.table; that.checkColumns();//主列表中列。 table.render({ elem: '#table_' + that.id, id: 'table_' + that.id, url: that.backPath + that.url.listButton, page: { limit: 20, page: 1 }, where:{ functionOid:'11' }, selectMode:table.selectMode.muti, cols: [that.columns], done:function(res, cur, count){ that.buttonTotal = count; } }); $webUtil.bindDefultButtonLisenter(that, "button_" + that.id); }; this.checkColumns = function(){ var that = this; var table = layui.table; if(that.columns==null || that.columns.length==0){//如果其他地方想使用这个组件的时候,可以自定义列 that.columns = [table.getIndexColumn(),table.getCheckColumn(),{ field:'id', title:'按钮标识', width:150 },{ field:'name', title:'按钮名称', width:200 },{ field:'iconCss', title:'显示图标', width:150 },{ field:'displayFlag', title:'是否显示', width:80, templet:function(r){ return $webUtil.formateBoolean(r.displayFlag); } },{ field:'controlRightFlag', title:'是否控制权限', width:120, templet:function(r){ return $webUtil.formateBoolean(r.displayFlag); } },{ field:'uiFlag', title:'显示界面标识', width:150 },{ field:'usedBySpecifyRole', title:'指定访问角色', width:150 }]; } }; this.add=function(){ var that = this; that.doAdd(false); }; this.copy=function () { var that = this; that.doAdd(true); }; this.doAdd = function(isCopy){ var that = this; var filter ="addForm_" + that.id; var form = layui.form; var addSaveIndex = layer.open({ type:1, title:'添加功能模块菜单', btn:['保存','取消','保存新增'], skin:'layui-layer-lan', content:'
', area:['800px','510px'], closeBtn:2, shade:true, shadeClose:true, resize:true, resizing:function(layero){ form.doResize(filter); }, success:function(layero){ form.addItems(filter,that.getFormItems(), function(){ if(isCopy && that.selectTreeAttribute){ var copyAttribute = {}; for(var key in that.selectTreeAttribute){ if(key.toLocaleLowerCase() != 'oid'){ copyAttribute[key] = that.selectTreeAttribute[key]; } } form.setValues(copyAttribute, filter); }else { if (that.selectTreeAttribute) { form.setValues({ id: that.selectTreeAttribute['id'], parentFunctionId: that.selectTreeAttribute['oid'], parentFunctionIdName: that.selectTreeAttribute['name'], displayFlag: that.selectTreeAttribute['displayFlag'], controlRightFlag: that.selectTreeAttribute['controlRightFlag'] }, filter); } else { form.setValues({ displayFlag: true, controlRightFlag: true }, filter); } } },{},{defaultColumnOneRow:2,inDialog:true}); }, yes:function(layero){ if(form.validata(filter)){ var values = form.getValues(filter); $webUtil.post(that.url.add,values,function(result){ if(result.success){ $webUtil.showMsg("添加菜单成功"); layer.close(addSaveIndex); that.refresh(); }else{ $webUtil.showErrorMsg(result.msg); } },function (xhr,error) { $webUtil.showErrorMsg("添加菜单的时候出现了错误"); },that.backPath); } }, btn3:function(layero){ if(form.validata(filter)){ var values = form.getValues(filter); $webUtil.post(that.url.add,values,function(result){ if(result.success){ $webUtil.showMsgFromResult(result,"添加菜单成功"); layer.close(addSaveIndex); that.refresh(); that.add(); }else{ $webUtil.showErrorMsg(result.msg); } },function (xhr,error) { $webUtil.showErrorMsg("添加菜单的时候出现了错误"); },that.backPath); } }, btn2:function(layero){ layer.close(addSaveIndex); that.refresh(); } }); }; this.edit = function(){ var that = this; if($webUtil.isNotNull(that.selectTreeOid )){ var filter ="editForm_" + that.id; var form = layui.form; var addSaveIndex = layer.open({ type:1, title:'修改功能模块菜单', btn:['保存','取消'], skin:'layui-layer-lan', content:'
', area:['800px','510px'], closeBtn:2, shade:true, shadeClose:true, resize:true, resizing:function(layero){ form.doResize(filter); }, success:function(layero){ form.addItems(filter,that.getFormItems(), function(){ form.setValues( that.selectTreeAttribute,filter); },{},{defaultColumnOneRow:2,inDialog:true}); }, yes:function(layero){ if(form.validata(filter)){ var values = form.getValues(filter); var submitValues = {}; for(var key in that.selectTreeAttribute){ submitValues[key] = that.selectTreeAttribute[key]; } for(var key in values){ submitValues[key] = values[key]; } if(!( "displayFlag" in values)){ submitValues['displayFlag'] = false; } if(!( "controlRightFlag" in values)){ submitValues['controlRightFlag'] = false; } $webUtil.put(that.url.edit,submitValues,function(result){ if(result.success){ $webUtil.showMsg("修改功能模块菜单成功"); layer.close(addSaveIndex); that.refresh(); }else{ $webUtil.showErrorMsg(result.msg); } },function (xhr,error) { $webUtil.showErrorMsg("修改菜单的时候出现了错误"); },that.backPath); } }, btn2:function(layero){ layer.close(addSaveIndex); that.refresh(); } }); }else{ $webUtil.showErrorMsg("没有选择菜单"); } }; this.del = function(){ var that = this; if($webUtil.isNotNull(that.selectTreeOid )){ $webUtil.showConfirmMsg("您是否要删除这个菜单?它的下级菜单将会被一同删除。",function(r){ if(r){ $webUtil.deleteRequest(that.url.deleteUrl,{oid:that.selectTreeOid},function(result){ if(result.success){ $webUtil.showMsg("删除菜单成功"); that.refresh(); }else{ $webUtil.showErrorMsg(result.msg); } },function(xhr,error) { $webUtil.showErrorMsg("删除菜单时请求服务器出现了错误"); },that.backPath); } }); }else{ $webUtil.showErrorMsg("没有选择菜单"); } }; this.export = function(){ var that = this; var form = layui.form; $webUtil.get(that.url.tree,{},function (result) { var filter = "export_form_" + that.id; var addSaveIndex = layer.open({ type:1, title:'请在下方的文本框中拷贝所有的json内容', skin:'layui-layer-lan', content:'
', area:['1200px','500px'], closeBtn:2, shade:true, shadeClose:true, resize:true, resizing:function(layero){ form.doResize(filter); }, success:function(layero){ form.addItems(filter,[{ field: 'result', text: 'json内容', type:'textarea', inputWidth:1000, height:400 }], function(){ form.setValues({result:JSON.stringify(result)},filter); },{},{defaultColumnOneRow:2,inDialog:true}); } }); },function(xhr,err){},that.backPath); }; this.setFormValues = function(attributes){ var that = this; if(attributes){ that.selectTreeOid =attributes['oid']; that.selectTreeAttribute = attributes; try{ var form = layui.form; form.clear("form_" + that.id,true); form.setValues(attributes,"form_" + that.id);//不需要转换对象,因为attributes已经是对象格式了 }catch (e){ $webUtil.showDebugMsg(e); } layui.table.reload("table_" + that.id,{ where:{ functionOid: that.selectTreeOid } }); } }; this.refresh = function(parentNodeOid){ var that = this; var tree = layui.tree; if(parentNodeOid){ tree.reloadNode("tree_" + that.id,parentNodeOid); }else { that.selectTreeOid = null; that.selectTreeAttribute = null; tree.reload("tree_" + that.id); } layui.table.reload("table_" + that.id); }; this.getFormItems = function(onlyShow){ var that = this; var resourceField = {}; if(that.admin){ resourceField = { field:'resourceControlType', text:'资源控制类型', type:'combox', required:true, data:[{key:"resourceControlType_bs",value:"B/S"}], defaultValue:'resourceControlType_bs', readOnly: onlyShow } }else{ resourceField = { field:'resourceControlType', text:'资源控制类型', type:'combox', required:true, comboxKey:'resourceControlType', hidden:that.admin, readOnly: onlyShow } } return [{ field: 'id', text: '菜单编号', required:true, readOnly: onlyShow }, { field: 'name', text: '菜单名称', required:true, readOnly: onlyShow },resourceField, { field: 'orderNum', readOnly: onlyShow, text: '排序号', required:true, type:'text', verify:'number' },{ field:'url', text:'链接地址', readOnly: onlyShow, textWidth:530, defaultValue:'USEJS:', useAllWidth:true }, { field: 'displayFlag', readOnly: onlyShow, text: '是否显示', defaultValue:true, type:'boolean' }, { field: 'controlRightFlag', readOnly: onlyShow, text: '是否控制权限', required:true, defaultValue:true, type:'boolean' }, { field: 'parentFunctionId', readOnly: onlyShow, text: '上级菜单', type:'refer', showField:'parentFunctionIdName', referConfig:{ type:'tree', url:that.url.referTree, backPath:that.backPath, textField:'name', valueField:'oid', isMuti:false } },{ field:'iconCss', text:'显示图标', readOnly: onlyShow }, { field: 'logName', readOnly: onlyShow, text: '日志名称', readOnly: onlyShow }, { field: 'helpName', readOnly: onlyShow, text: '帮助文档名称' },{ field:'usedBySpecifyRole', text:'指定访问的角色', readOnly: onlyShow, textWidth:530, useAllWidth:true },{ field:'description', text:'备注', readOnly: onlyShow, textWidth:530, useAllWidth:true }]; }; this.addButton = function(){ var that = this; if($webUtil.isNull(that.selectTreeOid)){ $webUtil.showErrorMsg("请您先选择菜单"); return false; } var filter ="addButtonForm_" + that.id; var form = layui.form; var addSaveIndex = layer.open({ type:1, title:'添加按钮', btn:['保存','取消','保存并新增'], skin:'layui-layer-lan', content:'
', area:['800px','510px'], closeBtn:2, shade:true, shadeClose:true, resize:true, resizing:function(layero){ form.doResize(filter); }, success:function(layero){ form.addItems(filter,that.getButtonFormItems(), function(){ form.setValues({ displayFlag: 'true', controlRightFlag: 'true' }, filter); },{},{defaultColumnOneRow:2,inDialog:true}); }, yes:function(layero){ if(form.validata(filter)){ var values = form.getValues(filter); values['functionOid'] = that.selectTreeOid; $webUtil.post(that.url.addButton,values,function(result){ if(result.success){ $webUtil.showMsg("添加按钮成功"); layer.close(addSaveIndex); that.refreshButton(); }else{ $webUtil.showErrorMsg(result.msg); } },function (xhr,error) { $webUtil.showErrorMsg("添加按钮的时候出现了错误"); },that.backPath); } }, btn2:function(layero){ layer.close(addSaveIndex); that.refreshButton(); }, btn3:function(layero){ if(form.validata(filter)){ var values = form.getValues(filter); values['functionOid'] = that.selectTreeOid; $webUtil.post(that.url.addButton,values,function(result){ if(result.success){ $webUtil.showMsg("添加按钮成功"); form.clear(); form.setValues({ displayFlag: 'true', controlRightFlag: 'true' }, filter); }else{ $webUtil.showErrorMsg(result.msg); } },function (xhr,error) { $webUtil.showErrorMsg("添加按钮的时候出现了错误"); },that.backPath); } } }); }; this.editButton = function(){ var that = this; var oid = $webUtil.getOidFromGrid("table_" + that.id,true,true); if(!oid){ return false; } var selectRowData = layui.table.checkStatus("table_" + that.id); if($webUtil.isNull(that.selectTreeOid)){ $webUtil.showErrorMsg("请您先选择菜单"); return false; } var filter ="addButtonForm_" + that.id; var form = layui.form; var addSaveIndex = layer.open({ type:1, title:'修改按钮', btn:['保存','取消'], skin:'layui-layer-lan', content:'
', area:['800px','510px'], closeBtn:2, shade:true, shadeClose:true, resize:true, resizing:function(layero){ form.doResize(filter); }, success:function(layero){ form.addItems(filter,that.getButtonFormItems(), function(){ form.setValues(selectRowData.data[0],filter); },{},{defaultColumnOneRow:2,inDialog:true}); }, yes:function(layero){ if(form.validata(filter)){ var values = selectRowData.data[0]; var formValues = form.getValues(filter); for(var key in formValues){ values[key] = formValues[key]; } values['t_oid'] = selectRowData.data[0]['toid']; values['functionOid'] = that.selectTreeOid; $webUtil.put(that.url.editButton,values,function(result){ if(result.success){ $webUtil.showMsg("修改按钮成功"); layer.close(addSaveIndex); that.refreshButton(); }else{ $webUtil.showErrorMsg(result.msg); } },function (xhr,error) { $webUtil.showErrorMsg("修改按钮的时候出现了错误"); },that.backPath); } }, btn2:function(layero){ layer.close(addSaveIndex); that.refreshButton(); } }); }; this.deleteButton = function () { var that = this; var oid = $webUtil.getOidFromGrid("table_" + that.id,true,false); if(!oid){ return false; } var selectRowData = layui.table.checkStatus("table_" + that.id); if($webUtil.isNull(that.selectTreeOid)){ $webUtil.showErrorMsg("请您先选择菜单"); return false; } $webUtil.showConfirmMsg("您是否确定删除这些按钮",function (r) { if(r){ var submitValues = { functionOid:that.selectTreeOid }; layui.each(selectRowData.data,function(_index,_item){ submitValues['buttonDTOList[' + _index + '].t_oid'] = _item['toid']; }); $webUtil.deleteRequest(that.url.deleteButton,submitValues,function (result) { if(result.success){ $webUtil.showMsg("删除按钮成功"); that.refreshButton(); }else{ $webUtil.showErrorMsg(result.msg); } },function (xhr,err) { $webUtil.showErrorMsg("删除按钮的时候出现了错误"); },that.backPath); } }); }; this.selectButton = function(){ var that = this; if($webUtil.isNull(that.selectTreeOid)){ $webUtil.showErrorMsg("请您先选择菜单"); return false; } var filter ="selectButton_" + that.id; var addSaveIndex = layer.open({ type:1, title:'从按钮库中选择', btn:['确定并继续','确定并关闭','取消'], skin:'layui-layer-lan', content:'
' + '
' + '
' + '' + '
' + '
' + '' + '
'+ '
' + '
' + '
', area:['800px','510px'], closeBtn:2, shade:true, shadeClose:true, resize:true, resizing:function(layero){ form.doResize(filter); }, success:function(layero){ layui.form.render('select'); layui.table.render({ elem: '#table_' + filter, id:filter, url:that.backPath + that.url.referButton, page:{ limit:20, page:1 }, where:{ functionOid:that.selectTreeOid }, cols: [that.getReferButtonColums()] }); $('[name="searchvalue_for_table_' + filter + '"]').keydown(function(e){ if(e.which == 13){ //按下回车键 var searchField = $(this).parent().parent().find('select').val(); var searchValue = $(this).val(); if($webUtil.isNotNull(searchValue)){ searchValue = "*" + searchValue + "*"; } var requestData = {}; requestData['conditionMap["' + searchField + '"]'] = searchValue; layui.table.reload( filter, { where: requestData } ); } }); }, yes:function(layero){ var selectData = layui.table.checkStatus(filter); if(!selectData || !selectData.data || selectData.data.length == 0){ $webUtil.showErrorMsg("没有选择按钮,无法继续"); return false; } selectData = selectData.data; var submitValue = { functionOid: that.selectTreeOid }; layui.each(selectData,function(_index,_item){ submitValue['buttonDTOList[' + _index + '].oid'] = _item.oid; submitValue['buttonDTOList[' + _index + '].id'] = _item.id; submitValue['buttonDTOList[' + _index + '].name'] = _item.name; submitValue['buttonDTOList[' + _index + '].iconCss'] = _item.iconCss; submitValue['buttonDTOList[' + _index + '].displayFlag'] = true; submitValue['buttonDTOList[' + _index + '].controlRightFlag'] = true; submitValue['buttonDTOList[' + _index + '].orderNum'] = that.buttonTotal? (that.buttonTotal+1 + _index) : (_index + 1); submitValue['buttonDTOList[' + _index + '].uiFlag'] = 'main'; }); $webUtil.post(that.url.batchAddButton,submitValue,function(result){ if(result.success){ $webUtil.showAutoMsg("批量添加按钮成功"); layui.table.reload(filter); that.refreshButton(); }else{ $webUtil.showErrorMsg(result.msg); } },function(xhr,error){ $webUtil.showErrorMsg("批量添加按钮时出现了错误"); },that.backPath); }, btn2:function(layero){ var selectData = layui.table.checkStatus(filter); if(!selectData || !selectData.data || selectData.data.length == 0){ $webUtil.showErrorMsg("没有选择按钮,无法继续"); return false; } selectData = selectData.data; var submitValue = { functionOid: that.selectTreeOid }; layui.each(selectData,function(_index,_item){ submitValue['buttonDTOList[' + _index + '].oid'] = _item.oid; submitValue['buttonDTOList[' + _index + '].id'] = _item.id; submitValue['buttonDTOList[' + _index + '].name'] = _item.name; submitValue['buttonDTOList[' + _index + '].iconCss'] = _item.iconCss; submitValue['buttonDTOList[' + _index + '].displayFlag'] = true; submitValue['buttonDTOList[' + _index + '].controlRightFlag'] = true; submitValue['buttonDTOList[' + _index + '].orderNum'] = that.buttonTotal? (that.buttonTotal+1 + _index) : (_index + 1); submitValue['buttonDTOList[' + _index + '].uiFlag'] = 'main'; }); $webUtil.post(that.url.batchAddButton,submitValue,function(result){ if(result.success){ $webUtil.showMsg("批量添加按钮成功"); layer.close(addSaveIndex); that.refreshButton(); }else{ $webUtil.showErrorMsg(result.msg); } },function(xhr,error){ $webUtil.showErrorMsg("批量添加按钮时出现了错误"); },that.backPath); }, btn3:function(layero){ layer.close(addSaveIndex); that.refreshButton(); } }); }; this.getReferButtonColums = function () { var table = layui.table; return [table.getIndexColumn(),table.getCheckColumn(),{ field:'id', title:'按钮标识', width:150 },{ field:'name', title:'按钮名称', width:200 },{ field:'iconCss', title:'显示图标', width:150 }]; }; this.getButtonFormItems = function () { var that = this; return [{ field: 'id', text: '按钮标识', required:true }, { field: 'name', text: '按钮名称', required:true },{ field:'uiFlag', text:'显示位置所属页面标识', defaultValue:'main' }, { field: 'orderNum', text: '排序号', required:true, verify:'number' }, { field: 'displayFlag', text: '是否显示', required:true, type:'boolean' }, { field: 'controlRightFlag', text: '是否控制权限', required:true, type:'boolean' },{ field:'iconCss', text:'显示图标' },{ field:'usedBySpecifyRole', text:'指定访问的角色', textWidth:530, useAllWidth:true }]; }; this.refreshButton = function(){ var that = this; layui.table.reload("table_" + that.id); }; }; var c = new Class(); exports(c.MODELNAME,c); });