/** * Created by jinxs on 2016.07.06. */ var webroot = $("#hdWebroot").val(); var rootUrl = webroot + '/role/role/'; var deleteUrl = rootUrl + 'delete';//删除地址 $(function () { //------------------------属性------------------------------------- var listUrl = rootUrl + 'list';//分页数据地址 var saveUrl = rootUrl + 'save';//保存添加数据地址 var changeStatusUrl = rootUrl + 'changeStatus'; var savePermissionUrl = rootUrl + 'savePermission'; var permissionUrl = rootUrl + 'getPermissionList'; var orgUrl = webroot + '/user/org/getListAll'; var leftUserListUrl = rootUrl + 'getNoRoleUserList'; var rightUserListUrl = rootUrl + 'getRoleUsers'; var selectUsersToRoleUrl = rootUrl + 'selectUsersToRole'; var cancelUsersFromRoleUrl = rootUrl + 'cancelUsersFromRole'; var batchRoleTypeUrl = rootUrl + 'updateRoleUsersRoleType'; var dialogSize = {width: 540, height: '80%'};//弹出窗口大小 var dialog = $('#dialog'); var grid_form = $('#grid_form'); var grid = $('#grid'); var auth_menu = $('#auth_menu'); var more_menu = $('#more_menu'); var userDialog = $('#userDialog'); var orgTree = $('#orgTree'); var hasInitOrgTree = false; var cbIsShowAll = $('#cbIsShowAll'); var leftUser_grid = $('#leftUser_grid'); var rightUser_grid = $('#rightUser_grid'); var roleTypeDialog = $('#roleTypeDialog'); var roleTypeGrid_form = $('#roleTypeGrid_form'); var moduleDialog = $('#moduleDialog'); var permission_tree = $('#permission_tree'); var permission_setting = { data: { simpleData: { enable: true, pIdKey: 'parent_id', rootPid: 'root' } }, check: { enable: true, chkStyle: "checkbox", chkboxType: {"Y": "ps", "N": "ps"} }, view: { selectedMulti: true, showLine: true }, async: { enable: true, url: permissionUrl } }; var org_setting = { data: { simpleData: { enable: true, pIdKey: 'parent_id', rootPid: 'root' } }, view: { selectedMulti: false, showLine: true }, async: { enable: true, url: orgUrl }, callback: { onAsyncError: function (event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) { alert("加载组织架构树失败!" + errorThrown); }, onAsyncSuccess: function (event, treeId, treeNode, msg) { var tree = orgTreeFirstSelected(); loadLeftSelectUserGrid(tree); }, beforeClick: function (treeId, treeNode, clickFlag) { }, onClick: function (event, treeId, treeNode) { var tree = $.fn.zTree.getZTreeObj("orgTree"); loadLeftSelectUserGrid(tree); } } }; //-----------------------初始化-------------------------------------- initRoleGrid(); initRoleForm(); initModuleForm(); initUserDialog(); initRoleTypeDialog(); addFilter(); addEvents(); //-------------------------------------方法-------------------------------------------------------- function initRoleGrid() { //初始化搜索框 $('#searchbox').uiSearchbox({ width: 240, prompt: '角色名称|创建人姓名|创建人账号', searcher: function (v) { grid.uiGrid('loadData', {queryParams: {key: $.trim(v)}, pageIndex: 1}); } }); //初始化grid grid.uiGrid({ url: listUrl, defaultSortField: 'creater_time' }); } function initRoleForm() { dialog.uiDialog({ title: '新建', width: dialogSize.width, onOpen: function () { var dialogP = $('#dialog').uiDialog('getUserParam'); var userType = $("#hdUserType").val(); op = dialogP.action; var id = dialogP.id; switch (op) { case 'view': case 'edit': grid_form.uiForm('load', grid.uiGrid('selectedData')[0]); if (userType != 2) { $("#roletype_combobox_i_0").hide(); $("#roletype_combobox_i_1").hide(); } break; case 'add': var roleType = 0; if (userType == 2) { roleType = 1; } else { roleType = 2; } grid_form.uiForm('load', {roletype: roleType, status: 1}); if (userType != 2) { $("#roletype_combobox_i_0").hide(); $("#roletype_combobox_i_1").hide(); } break; default : break; } }, buttons: [ { id: 'btnOK', label: '保存', style: 'button_submit', icons: {left: 'icon_submit'}, disabled: false, onClick: function () { $('#grid_form').uiForm('submit', { url: saveUrl, onSubmit: function (param) { param.id = $('#hdID').val(); var isValid = $('#grid_form').uiForm('validate'); return isValid; // 返回false终止表单提交 }, success: function (result) { if (result.success) { dialog.uiDialog('close'); grid.uiGrid('loadData'); } showResult(result.success, result.message); } }); return false; } }, { id: 'btnCancel', label: '关闭', icons: {left: 'icon_cancel'}, disabled: false, style: 'button_cancel', onClick: function () { dialog.uiDialog('close'); } } ] }); grid_form.uiForm({ template: 'grid_form_temp', onLoadSuccess: function (data) { var me = $(this); $('#roletype').dictCombobox(); $('#status').dictCombobox(); switch (op) { case 'view': me.uiForm('setReadonly', true); break; case 'edit': break; case 'add': break; default : break; } } }); } function initModuleForm() { moduleDialog.uiDialog({ title: '设置功能权限', width: dialogSize.width, onOpen: function () { permission_setting.async.otherParam = {roleids: grid.uiGrid('selectedData', 'id')}; $.fn.zTree.init(permission_tree, permission_setting); }, buttons: [ { id: 'btnOK', label: '保存', style: 'button_submit', icons: {left: 'icon_submit'}, disabled: false, onClick: function () { var ids = grid.uiGrid('selectedData', 'id'); var tree = $.fn.zTree.getZTreeObj("permission_tree"); var nodes = tree.getCheckedNodes(true); if (nodes.length == 0) { showResult(false, '请至少选择一项权限信息!', 'alert'); } else { var actionValue = new Array(); var opJson = []; for (var i = 0; i < nodes.length; i++) { var node = nodes[i]; var moduletype = node.moduletype; switch (moduletype) { case 0: case 1: case 2: case 3: case 4://action case 6: actionValue.push(node.actionvalue); break; case 5://扩展权限 var obj = {action: node.href, value: node.actionvalue}; var has = false; for (var j = 0; j < opJson.length; j++) { var temp = opJson[j]; if (temp.action == obj.action) { temp.value += obj.value; has = true; break; } } if (!has) { opJson.push(obj); } break; } } $.ajax({ type: 'post', url: savePermissionUrl, data: {roleids: ids, actionValue: actionValue, opJson: JSON.stringify(opJson)}, success: function (result) { moduleDialog.uiDialog('close'); } }); } return false; } }, { id: 'btnCancel', label: '关闭', icons: {left: 'icon_cancel'}, disabled: false, style: 'button_cancel', onClick: function () { moduleDialog.uiDialog('close'); } } ] }); } function orgTreeFirstSelected() { var tree = $.fn.zTree.getZTreeObj("orgTree"); tree.selectNode(tree.getNodeByTId('root_1')); return tree; } function initUserDialog() { userDialog.uiDialog({ title: '角色用户授权', icon: 'list', width: '98%', maximizable: false, resizable: false, onOpen: function () { var dialogContent = userDialog.uiDialog('content'); var user_orgTree = $('#user_orgTree'); var user_leftGrid = $('#user_leftGrid'); var user_btn = $('#user_btn'); var user_rightGrid = $('#user_rightGrid'); user_orgTree.outerWidth(200); var width = parseInt((dialogContent.width() - user_btn.outerWidth() - user_orgTree.outerWidth()) / 2); user_leftGrid.outerWidth(width); user_rightGrid.outerWidth(width - 20); if (hasInitOrgTree == false) { initSelectUserGrid(); $.fn.zTree.init(orgTree, org_setting); hasInitOrgTree = true; } else { var tree = orgTreeFirstSelected(); loadLeftSelectUserGrid(tree); } loadRightUserGrid(); }, buttons: [ { id: 'btnCancel', label: '关闭', icons: {left: 'icon_cancel'}, disabled: false, style: 'button_cancel', onClick: function () { userDialog.uiDialog('close'); } } ] }); userDialog.uiDialog('content').css('float', 'left'); } function initSelectUserGrid() { $('#leftUser_searchbox').uiSearchbox({ prompt: '登录账号|用户姓名', searcher: function (v) { leftUser_grid.uiGrid('loadData', {queryParams: {key: $.trim(v)}, pageIndex: 1}); } }); $('#rightUser_searchbox').uiSearchbox({ prompt: '登录账号|用户姓名', searcher: function (v) { rightUser_grid.uiGrid('loadData', {queryParams: {key: $.trim(v)}, pageIndex: 1}); } }); leftUser_grid.uiGrid({ defaultSortField: 'username', defaultOrder: 'asc' }); rightUser_grid.uiGrid({ defaultSortField: 'usr.username', defaultOrder: 'asc' }); } function loadLeftSelectUserGrid(zTree) { var selectedNode = zTree.getSelectedNodes()[0]; leftUser_grid.uiGrid('loadData', { url: leftUserListUrl, queryParams: { roleid: grid.uiGrid('selectedData', 'id')[0], pid: selectedNode.id, cascade_id: selectedNode.cascade_id, iscascade: cbIsShowAll.is(':checked') }, pageIndex: 1 }); } function loadRightUserGrid() { rightUser_grid.uiGrid('loadData', { url: rightUserListUrl, queryParams: { roleid: grid.uiGrid('selectedData', 'id')[0] }, pageIndex: 1 }); } function initRoleTypeDialog() { roleTypeDialog.uiDialog({ title: '批量修改角色类型', width: 300, height: 120, maskContainer: userDialog, maximizable: false, resizable: false, onOpen: function () { roleTypeGrid_form.uiForm('load'); }, buttons: [ { id: 'btnOK', label: '保存', style: 'button_submit', icons: {left: 'icon_submit'}, disabled: false, onClick: function () { roleTypeGrid_form.uiForm('submit', { url: batchRoleTypeUrl, onSubmit: function (param) { var urids = rightUser_grid.uiGrid('selectedData', 'urid'); param.urids = urids; var isValid = roleTypeGrid_form.uiForm('validate'); return isValid; // 返回false终止表单提交 }, success: function (result) { if (result.success) { roleTypeDialog.uiDialog('close'); rightUser_grid.uiGrid('loadData', {pageIndex: 1}); } showResult(result.success, result.message); } }); return false; } }, { id: 'btnCancel', label: '关闭', icons: {left: 'icon_cancel'}, disabled: false, style: 'button_cancel', onClick: function () { roleTypeDialog.uiDialog('close'); } } ] }); roleTypeGrid_form.uiForm({ template: 'roleTypeGrid_form_temp', onLoadSuccess: function () { $('#rolepermissiontype').dictCombobox(); } }); } function addEvents() { //新建 $('#btn1').bind('click', function () { dialog.uiDialog('setUserParam', {action: 'add', id: 0}); dialog.uiDialog('button', 'btnOK').show(); dialog.uiDialog('open'); dialog.uiDialog('title').html('新增角色'); }); //删除 $('#btn2').bind('click', function () { var ids = grid.uiGrid('selectedData', 'id'); if (ids.length == 0) { showResult(false, '请选择要删除的行!', 'alert'); } else { deleteRow(ids); } }); cbIsShowAll.bind('click', function () { var tree = $.fn.zTree.getZTreeObj("orgTree"); loadLeftSelectUserGrid(tree); }); $('#selectUsers').bind('click', function () { var userids = leftUser_grid.uiGrid('selectedData', 'id'); if (userids.length == 0) { showResult(false, '请选择要添加的用户!', 'alert'); return; } updateRoleUsers(selectUsersToRoleUrl, userids); }); $('#cancelUsers').bind('click', function () { var userids = rightUser_grid.uiGrid('selectedData', 'id'); if (userids.length == 0) { showResult(false, '请选择要撤销的用户!', 'alert'); return; } updateRoleUsers(cancelUsersFromRoleUrl, userids); }); $('#btnChangeRoleType').bind('click', function () { var urids = rightUser_grid.uiGrid('selectedData', 'urid'); if (urids.length == 0) { showResult(false, '请选择要修改的用户!', 'alert'); return; } roleTypeDialog.uiDialog('open'); }); function updateRoleUsers(url, userids) { var roleid = grid.uiGrid('selectedData', 'id')[0]; $.ajax({ type: 'post', url: url, data: {roleid: roleid, userids: userids}, success: function (result) { leftUser_grid.uiGrid('loadData', {pageIndex: 1}); rightUser_grid.uiGrid('loadData', {pageIndex: 1}); } }); } auth_menu.uiMenu({ minWidth: 150, maxWidth: 200, onSelect: function (item, event) { var ids = grid.uiGrid('selectedData', 'id'); if (ids.length == 0) { showResult(false, '请选择要授权的行!', 'alert'); return; } switch (item.id) { case 1: moduleDialog.uiDialog('open'); break; case 2: if (ids.length > 1) { showResult(false, '只能对单个角色进行授权操作!', 'alert'); return; } userDialog.uiDialog('open'); userDialog.uiDialog('title').html('角色用户授权【当前角色:' + grid.uiGrid('selectedData', 'name')[0] + '】'); } auth_menu.uiMenu('hide'); } }); more_menu.uiMenu({ minWidth: 150, maxWidth: 200, onSelect: function (item, event) { var ids = grid.uiGrid('selectedData', 'id'); var idLen = ids.length; if (idLen == 0) { showResult(false, '请选择要操作的行!', 'alert'); return; } var userStatus = 0; switch (item.id) { case 1://停用 case 2://启用 var confirmText = ''; if (item.id == 1) { userStatus = 0; confirmText = '停用'; } if (item.id == 2) { userStatus = 1; confirmText = '启用'; } confirmText = '确定' + confirmText + '选中的【' + idLen + '】个角色吗?'; $.uiMessagebox.confirm({ title: '确认操作', content: confirmText, onClose: function (value) { if (value) { $.ajax({ type: 'post', url: changeStatusUrl, data: {ids: ids, action: userStatus}, dataType: "json", success: function (result) { grid.uiGrid('loadData'); } }); } } }); break; } more_menu.uiMenu('hide'); } }); $('#btnAuth').bind('click', function () { auth_menu.uiMenu('show', this); }); $('#btnMore').bind('click', function () { more_menu.uiMenu('show', this); }); } function addFilter() { template.helper('statusFilter', function (value) { var text = gridColFilter('isenable', value); var span = ''; break; case 0: span += 'danger">'; break; } text = span + text + ''; return text; }); template.helper('roletypeFilter', function (value) { return gridColFilter('roletype', value); }); template.helper('userRoletypeFilter', function (value) { return gridColFilter('rolepermissiontype', value); }); template.helper('orgFilter', function (value) { var result = ''; for (var i = 0; i < value.length; i++) { var orgname = value[i].name; var isdefault = value[i].is_default_org; var color = 'default'; if (isdefault == 1) { color = 'primary'; } result += '' + orgname + ' '; } return result; }); } }); //查看 function viewRow(id, title) { var dialog = $('#dialog'); dialog.uiDialog('setUserParam', {action: 'view', id: id}); dialog.uiDialog('open'); title = '-' + title || ''; dialog.uiDialog('title').html('查看' + title); dialog.uiDialog('button', 'btnOK').hide(); } //编辑 function editRow(id) { var dialog = $('#dialog'); dialog.uiDialog('setUserParam', {action: 'edit', id: id}); dialog.uiDialog('open'); dialog.uiDialog('title').html('编辑'); dialog.uiDialog('button', 'btnOK').show(); } // 删除 function deleteRow(id) { deleteData("此操作将删除角色相关的权限和用户信息,确定删除吗?", deleteUrl, {ids: id}, function (result) { if (result.success) { $('#grid').uiGrid('loadData'); } }); } //删除 function deleteData(confirmText, url, data, callback) { $.uiMessagebox.confirm({ title: '确认操作', content: confirmText, onClose: function (value) { if (value) { $.ajax({ type: 'post', url: url, data: data, dataType: "json", success: function (result) { callback && callback.call(this, result); } }); } } }); }