/** * Created by jinxs on 2016.07.06. */ var webroot = $("#hdWebroot").val(); var rootUrl = webroot + '/user/user/'; var deleteUrl = rootUrl + 'delete';//删除地址 $(function () { //------------------------属性------------------------------------- var listUrl = rootUrl + 'list';//分页数据地址 var saveUrl = rootUrl + 'save';//保存添加数据地址 var batchOrgUrl = rootUrl + 'batchOrg'; var resetPassUrl = rootUrl + 'resetPassword';//重置密码地址 var menuUrl = webroot + '/user/org/getListAll'; var changeStatusUrl = rootUrl + 'changeStatus'; var savePermissionUrl = rootUrl + 'savePermission'; var permissionUrl = rootUrl + 'getPermissionList'; var leftRoleListUrl = rootUrl + 'getNoUserRoleList'; var rightRoleListUrl = rootUrl + 'getUserRoles'; var selectRolesToUserUrl = rootUrl + 'selectRolesToUser'; var cancelRolesFromUserUrl = rootUrl + 'cancelRolesFromUser'; var batchRoleTypeUrl = webroot + '/role/role/updateRoleUsersRoleType'; var dialogSize = {width: 650, height: '80%'};//弹出窗口大小 var cbIsShowAll = $('#cbIsShowAll'); var dialog = $('#dialog'); var grid_form = $('#grid_form'); var layout = $('#layout'); var menu = $("#ulMenu"); var grid = $('#grid'); var auth_menu = $('#auth_menu'); var more_menu = $('#more_menu'); var orgDialog = $('#orgDialog'); var orgGrid_form = $('#orgGrid_form'); var roleDialog = $('#roleDialog'); var hasInitUserRoleDialog = false; var leftRole_grid = $('#leftRole_grid'); var rightRole_grid = $('#rightRole_grid'); var roleTypeDialog = $('#roleTypeDialog'); var roleTypeGrid_form = $('#roleTypeGrid_form'); var moduleDialog = $('#moduleDialog'); var permission_tree = $('#permission_tree'); var op = '';//用于表单中树的操作 var setting = { data: { simpleData: { enable: true, pIdKey: 'parent_id', rootPid: 'root' } }, view: { selectedMulti: false, showLine: true }, async: { enable: true, url: menuUrl }, callback: { onAsyncError: function (event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) { alert("加载组织架构树失败!" + errorThrown); }, onAsyncSuccess: function (event, treeId, treeNode, msg) { zTree.selectNode(zTree.getNodeByTId('root_1')); loadGrid(); }, beforeClick: function (treeId, treeNode, clickFlag) { }, onClick: function (event, treeId, treeNode) { loadGrid(); } } }; var form_setting = $.extend({}, setting, { view: { selectedMulti: true, showLine: true }, check: { enable: true, chkStyle: "checkbox", chkboxType: {"Y": "", "N": ""} }, callback: { onCheck: function (event, treeId, treeNode) { var treeObj = $.fn.zTree.getZTreeObj("org_tree"); var nodes = treeObj.getCheckedNodes(true); var values = new Array(); var text = new Array(); for (var i = 0; i < nodes.length; i++) { var node = nodes[i]; values[i] = node.id; text[i] = node.name; } $('#orgId').uiCombo('setText', text.join(',')).uiCombo('setValues', values); } } }); var orgForm_setting = $.extend({}, form_setting, { callback: { onCheck: function (event, treeId, treeNode) { var treeObj = $.fn.zTree.getZTreeObj("batchorg_tree"); var nodes = treeObj.getCheckedNodes(true); var values = new Array(); var text = new Array(); for (var i = 0; i < nodes.length; i++) { var node = nodes[i]; values[i] = node.id; text[i] = node.name; } $('#batchorgid').uiCombo('setText', text.join(',')).uiCombo('setValues', values); } } }); 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 } } //-----------------------初始化-------------------------------------- layout.uiLayout(); $.fn.zTree.init(menu, setting); var zTree = $.fn.zTree.getZTreeObj("ulMenu"); initUserGrid(); initUserForm(); initOrgForm(); initModuleForm(); initRoleDialog(); initRoleTypeDialog(); addFilter(); addEvents(); //-------------------------------------方法-------------------------------------------------------- function loadGrid() { var selectedNode = zTree.getSelectedNodes()[0]; grid.uiGrid('loadData', { url: listUrl, queryParams: { pid: selectedNode.id, cascade_id: selectedNode.cascade_id, iscascade: cbIsShowAll.is(':checked') }, pageIndex: 1 }); } function initUserGrid() { //初始化搜索框 $('#searchbox').uiSearchbox({ prompt: '登录账号|用户姓名', searcher: function (v) { grid.uiGrid('loadData', {queryParams: {key: $.trim(v)}, pageIndex: 1}); } }); //初始化grid grid.uiGrid(); } function initUserForm() { dialog.uiDialog({ title: '创建用户', width: dialogSize.width, onOpen: function () { var dialogP = $('#dialog').uiDialog('getUserParam'); op = dialogP.action; var id = dialogP.id; switch (op) { case 'view': case 'edit': grid_form.uiForm('load', grid.uiGrid('selectedData')[0]); break; case 'add': grid_form.uiForm('load'); 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 pass = $.trim($('#password').val()); if (pass != '') { param['user.password'] = md5(pass); } 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); var pass = $('#password').uiValidate(); $('#orgId').uiCombo(); $('#org_panel').show().appendTo($('#orgId').uiCombo('panel')); $.fn.zTree.init($('#org_tree'), form_setting, zTree.getNodes()); $.fn.zTree.getZTreeObj("org_tree").expandAll(true); $('#sex').dictCombobox(); switch (op) { case 'view': parentTree_view(data); me.uiForm('setReadonly', true); break; case 'edit': pass.uiValidate('disableValidation'); parentTree_view(data); break; case 'add': parentTree_add(); me.uiForm('setReadonly', false); break; default : break; } function parentTree_add() { var selectedNode = zTree.getSelectedNodes()[0]; if (selectedNode) { var org_tree = $.fn.zTree.getZTreeObj("org_tree"); var node = org_tree.getNodeByParam("id", selectedNode.id, null); $('#orgId').uiCombo('setValue', selectedNode.id).uiCombo('setText', selectedNode.name); org_tree.checkNode(node, true, true); } } function parentTree_view(data) { var org_tree = $.fn.zTree.getZTreeObj("org_tree"); var orgIds = ''; var orgnames = ''; for (var i = 0; i < data.orgs.length; i++) { var org = data.orgs[i]; var node = org_tree.getNodeByParam("id", org.id, null); org_tree.checkNode(node, true, true); orgIds += ',' + org.id; orgnames += ',' + org.name; } orgIds = orgIds.substring(1); orgnames = orgnames.substring(1); $('#orgId').uiCombo('setValue', orgIds).uiCombo('setText', orgnames); } } }); } function initOrgForm() { orgDialog.uiDialog({ title: '批量修改所属组织', width: 500, height: 90, maximizable: false, resizable: false, onOpen: function () { orgGrid_form.uiForm('load'); }, buttons: [ { id: 'btnOrgOK', label: '保存', style: 'button_submit', icons: {left: 'icon_submit'}, disabled: false, onClick: function () { orgGrid_form.uiForm('submit', { url: batchOrgUrl, onSubmit: function (param) { var ids = grid.uiGrid('selectedData', 'id'); param.ids = ids; var isValid = orgGrid_form.uiForm('validate'); return isValid; // 返回false终止表单提交 }, success: function (result) { if (result.success) { orgDialog.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 () { orgDialog.uiDialog('close'); } } ] }); orgGrid_form.uiForm({ template: 'orgGrid_form_temp', onLoadSuccess: function (data) { var me = $(this); var batchorgid = $('#batchorgid'); batchorgid.uiCombo(); $('#batchorg_panel').show().appendTo(batchorgid.uiCombo('panel')); $.fn.zTree.init($('#batchorg_tree'), orgForm_setting, zTree.getNodes()); $.fn.zTree.getZTreeObj("batchorg_tree").expandAll(true); } }); } function initModuleForm() { moduleDialog.uiDialog({ title: '设置功能权限', width: dialogSize.width, height: dialogSize.height, onOpen: function () { permission_setting.async.otherParam = {userids: grid.uiGrid('selectedData', 'id')}; $.fn.zTree.init(permission_tree, permission_setting); }, buttons: [ { id: 'btnModuleOK', 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 = []; 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: {userids: 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 addEvents() { //新建 $('#btn1').bind('click', function () { dialog.uiDialog('setUserParam', {action: 'add', id: 0}); dialog.uiDialog('open'); dialog.uiDialog('title').html('创建用户'); dialog.uiDialog('button', 'btnOK').show(); }); //删除 $('#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 selectedNode = zTree.getSelectedNodes()[0]; if (selectedNode) { grid.uiGrid('loadData', { url: listUrl, queryParams: { pid: selectedNode.id, cascade_id: selectedNode.cascade_id, iscascade: cbIsShowAll.is(':checked') }, 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; } roleDialog.uiDialog('title').html('用户角色授权【当前用户:' + grid.uiGrid('selectedData', 'username')[0] + '】'); roleDialog.uiDialog('open'); break; case 3: break; } 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://停用 case 3://解锁 var confirmText = ''; if (item.id == 1) { userStatus = 3; confirmText = '锁定'; } if (item.id == 2) { userStatus = 2; confirmText = '停用'; } if (item.id == 3) { 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}, success: function (result) { grid.uiGrid('loadData'); } }); } } }); break; case 4://批量设置组织 orgDialog.uiDialog('open'); break; } more_menu.uiMenu('hide'); } }); $('#btnAuth').bind('click', function () { auth_menu.uiMenu('show', this); }); $('#btnMore').bind('click', function () { more_menu.uiMenu('show', this); }); $('#selectRoles').bind('click', function () { var roleids = leftRole_grid.uiGrid('selectedData', 'id'); if (roleids.length == 0) { showResult(false, '请选择要添加的角色!', 'alert'); return; } updateRoleRoles(selectRolesToUserUrl, roleids); }); $('#btnChangeRoleType').bind('click', function () { var urids = rightRole_grid.uiGrid('selectedData', 'urid'); if (urids.length == 0) { showResult(false, '请选择要修改的角色!', 'alert'); return; } roleTypeDialog.uiDialog('open'); }); $('#cancelRoles').bind('click', function () { var roleids = rightRole_grid.uiGrid('selectedData', 'id'); if (roleids.length == 0) { showResult(false, '请选择要撤销的角色!', 'alert'); return; } updateRoleRoles(cancelRolesFromUserUrl, roleids); }); function updateRoleRoles(url, roleids) { var userid = grid.uiGrid('selectedData', 'id')[0]; $.ajax({ type: 'post', url: url, data: {userid: userid, roleids: roleids}, success: function (result) { leftRole_grid.uiGrid('loadData', {pageIndex: 1}); rightRole_grid.uiGrid('loadData', {pageIndex: 1}); } }); } $('#btnReset').bind('click', function () { var ids = grid.uiGrid('selectedData', 'id'); var idLen = ids.length; if (idLen == 0) { showResult(false, '请选择要操作的行!', 'alert'); return; } $.uiMessagebox.confirm({ title: '确认操作', content: '确定将选中的【' + idLen + '】个用户重置密码吗?', onClose: function (value) { if (value) { $.ajax({ type: 'post', url: resetPassUrl, data: {ids: ids} }); } } }); }); } function initRoleDialog() { roleDialog.uiDialog({ title: '用户角色授权', width: '98%', height: dialogSize.height, maximizable: false, resizable: false, onOpen: function () { var dialogContent = roleDialog.uiDialog('content'); var role_leftGrid = $('#role_leftGrid'); var role_btn = $('#role_btn'); var role_rightGrid = $('#role_rightGrid'); var width = parseInt((dialogContent.width() - role_btn.outerWidth()) / 2); role_leftGrid.outerWidth(width); role_rightGrid.outerWidth(width); if (hasInitUserRoleDialog == false) { initSelectRoleGrid(); hasInitUserRoleDialog = true; } loadLeftSelectUserGrid(); loadRightUserGrid(); }, buttons: [ { id: 'btnCancel', label: '关闭', icons: {left: 'icon_cancel'}, disabled: false, style: 'button_cancel', onClick: function () { roleDialog.uiDialog('close'); } } ] }); roleDialog.uiDialog('content').css('float', 'left'); } function initSelectRoleGrid() { $('#leftRole_searchbox').uiSearchbox({ prompt: '角色名称', searcher: function (v) { leftRole_grid.uiGrid('loadData', {queryParams: {key: $.trim(v)}, pageIndex: 1}); } }); $('#rightRole_searchbox').uiSearchbox({ prompt: '角色名称', searcher: function (v) { rightRole_grid.uiGrid('loadData', {queryParams: {key: $.trim(v)}, pageIndex: 1}); } }); leftRole_grid.uiGrid({ defaultSortField: 'rol.name', defaultOrder: 'asc' }); rightRole_grid.uiGrid({ defaultSortField: 'ro.name', defaultOrder: 'asc' }); } function loadLeftSelectUserGrid() { leftRole_grid.uiGrid('loadData', { url: leftRoleListUrl, queryParams: { userid: grid.uiGrid('selectedData', 'id')[0], }, pageIndex: 1 }); } function loadRightUserGrid() { rightRole_grid.uiGrid('loadData', { url: rightRoleListUrl, queryParams: { userid: grid.uiGrid('selectedData', 'id')[0] }, pageIndex: 1 }); } function initRoleTypeDialog() { roleTypeDialog.uiDialog({ title: '批量修改角色类型', width: 300, height: 90, maskContainer: roleDialog, maximizable: false, resizable: false, onOpen: function () { roleTypeGrid_form.uiForm('load'); }, buttons: [ { id: 'btnRoleOK', label: '保存', style: 'button_submit', icons: {left: 'icon_submit'}, disabled: false, onClick: function () { roleTypeGrid_form.uiForm('submit', { url: batchRoleTypeUrl, onSubmit: function (param) { var urids = rightRole_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'); rightRole_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 addFilter() { function getOrgNames(orgId) { var zTree = $.fn.zTree.getZTreeObj("ulMenu"); var node = zTree.getNodeByParam('id', orgId); if(node == null) return ''; //无组织结构时返回空字符串 var ids = node.cascade_id.split('|'); var names = []; for (var i = 0; i < ids.length; i++) { var id = ids[i]; if (id != '' && id != 'root') { var org = zTree.getNodeByParam('id', id); if(org == null){continue;} //无父级的跳过 names.push(org.name); } } return names.join('>'); } template.helper('statusFilter', function (value) { var text = gridColFilter('userstate', value); var span = ''; break; case 2: span += 'danger">'; break; case 3: span += 'warning">'; break; case 4: span += 'warning">'; break; } text = span + text + ''; return text; }); template.helper('usertypeFilter', function (value) { return gridColFilter('usertype', 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 orgId = value[i].id; var orgname = value[i].name; var isdefault = value[i].is_default_org; var color = 'default'; if (isdefault == 1) { color = 'primary'; } var orgPath = getOrgNames(orgId); result += '' + orgname + ' '; } return result; }); template.helper('roletypeFilter', function (value) { return gridColFilter('roletype', value); }); template.helper('avatarsFilter', function (value) { var img = "