Extjs3.0角色权限管理系统-用户管理模块篇

1.用户管理功能模块效果图如下

2.用户管理功能模块->新增、修改和详情功能大致相同,故截一个图,效果图如下

3.用户管理功能模块->分配角色功能,效果图如下

用户管理模块后台controller代码
package com.gsww.controller.sys;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springside.modules.web.Servlets;

import com.gsww.controller.BaseController;
import com.gsww.entity.sys.SysRoleInfo;
import com.gsww.entity.sys.SysSession;
import com.gsww.entity.sys.SysUserInfo;
import com.gsww.entity.sys.SysUserRole;
import com.gsww.service.sys.SysRoleInfoService;
import com.gsww.service.sys.SysUserInfoService;
import com.gsww.service.sys.SysUserRoleService;
import com.gsww.util.PageUtils;
import com.gsww.util.TimeHelper;

/**
 * 系统用户管理
 * @author Administrator
 *
 */
@Controller
@RequestMapping(value = "/sysUser")
public class SysUserInfoController extends BaseController {
	
	@Autowired
	private SysUserInfoService sysUserInfoService;
	
	@Autowired
	private SysRoleInfoService sysRoleInfoService;
	
	@Autowired
	private SysUserRoleService sysUserRoleService;
	
	/*
	 * 返回系统系统用户管理页面
	 */
	@RequestMapping(value = "/getSysUserIndex")
	public String getSysUserIndex(HttpServletRequest request, 
			HttpServletResponse response,Model model) throws Exception{
		SysSession sysSession = (SysSession) request.getSession().getAttribute("sysSession");
		model.addAttribute("sysSession", sysSession);
		return "sysManage/sysUserInfo";
	}
	
	/*
	 * 获取系统用户分页列表
	 */
	@RequestMapping(value = "/getSysUserInfoPage",method = RequestMethod.GET)
	public void getSysUserInfoPage(@RequestParam(value = "start", defaultValue = "1") int page,
			@RequestParam(value = "limit", defaultValue = LIMIT) int pageSize,
			@RequestParam(value = "orderField", defaultValue = "createTime") String orderField,
			@RequestParam(value = "orderSort", defaultValue = "DESC") String orderSort,
			@RequestParam(value = "userName", defaultValue = "") String userName,
			@RequestParam(value = "findNowPage", defaultValue = "false") String findNowPage,
			Model model,HttpServletRequest request,HttpServletResponse response){
		try {
			//初始化分页数据
			page = page/pageSize + 1;
			PageUtils pageUtils=new PageUtils(page,pageSize,orderField,orderSort);
			PageRequest pageRequest=super.buildPageRequest(request,pageUtils,SysRoleInfo.class,findNowPage);
			//获取页面的参数
			Map<String, Object> searchParams = Servlets.getParametersStartingWith(request, "search_");
			if(StringUtils.isNotBlank(userName)){
				searchParams.put("LIKE_userName", userName);
			}
			Specification<SysUserInfo> spec=super.toSpecification(searchParams, SysUserInfo.class);
			//分页
			Page<SysUserInfo> sysUserPage = sysUserInfoService.getSysUserInfoPage(spec, pageRequest);
			//获取角色userRoleIds和userRoleNames
			for (SysUserInfo sysUserInfo : sysUserPage.getContent()) {
				String userId = sysUserInfo.getUserId();
				List<SysUserRole> sysurList = sysUserRoleService.getSysUserRoleByUserId(userId);
				String userRoleIds = "",userRoleNames = "";
				if(sysurList.size()>0){
					for (SysUserRole sysUserRole : sysurList) {
						String roleId = sysUserRole.getRoleId();
						userRoleIds += roleId+",";
						SysRoleInfo sysRoleInfo = sysRoleInfoService.getSysRoleInfoByRoleId(roleId);
						if(null!=sysRoleInfo){
							userRoleNames += sysRoleInfo.getRoleName()+",";
						}
					}
				}
				if(userRoleIds.indexOf(",")>0){
					userRoleIds = userRoleIds.substring(0, userRoleIds.length()-1);
				}
				if(userRoleNames.indexOf(",")>0){
					userRoleNames = userRoleNames.substring(0, userRoleNames.length()-1);
				}
				sysUserInfo.setUserRoleIds(userRoleIds);
				sysUserInfo.setUserRoleNames(userRoleNames);
			}
			Map<String,Object> dataMap = new HashMap<String,Object>();
			dataMap.put("data", sysUserPage.getContent());
			dataMap.put("count", sysUserPage.getTotalElements());
			this.getJson(response, dataMap);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/*
	 * 系统用户新增
	 */
	@RequestMapping(value = "/sysUserInfoSave",method = RequestMethod.POST)
	public void sysUserInfoSave(HttpServletRequest request, 
			HttpServletResponse response,SysUserInfo sysUserInfo) throws Exception{
		String userId = sysUserInfo.getUserId();
		if(StringUtils.isBlank(userId)){
			sysUserInfo.setCreateTime(TimeHelper.getCurrentTime());
		}else{
			sysUserInfo.setUpdateTime(TimeHelper.getCurrentTime());
		}
		String userSex = sysUserInfo.getUserSex();
		if(StringUtils.isNotBlank(userSex)){
			if(userSex.equals("男")){
				userSex = "1";
			}else{
				userSex = "0";
			}
			sysUserInfo.setUserSex(userSex);
		}
		String userState = sysUserInfo.getUserState();
		if(StringUtils.isNotBlank(userState)){
			if(userState.equals("有效")){
				userState = "1";
			}else{
				userState = "0";
			}
			sysUserInfo.setUserState(userState);
		}
		sysUserInfoService.sysUserInfoSave(sysUserInfo);
	}
	
	/*
	 * 系统用户删除
	 */
	@RequestMapping(value = "/sysUserInfoDelete",method = RequestMethod.GET)
	public void sysUserInfoDelete(HttpServletRequest request,
			HttpServletResponse response,String idStr) throws Exception{
		if(StringUtils.isNotBlank(idStr)){
			String[] arr = idStr.split(",");
			int delSum = 0; 
			for (String userId : arr) {
				sysUserInfoService.sysUserInfoDelet(userId);
				delSum++;
			}
			String message = "您成功删除了"+delSum+"条记录!";
			this.getJson(response, message);
		}
	}
	
	/*
	 * 系统用户启用停用
	 */
	@RequestMapping(value = "/sysUserInfoUpdate",method = RequestMethod.GET)
	public void sysUserInfoUpdate(HttpServletRequest request,
			HttpServletResponse response,String idStr,String userState) throws Exception{
		if(StringUtils.isNotBlank(idStr)){
			String[] arr = idStr.split(",");
			int sucSum = 0; 
			for (String roleId : arr) {
				SysUserInfo sysUserInfo = sysUserInfoService.getSysUserInfoByUserId(roleId);
				if(sysUserInfo!=null){
					String ustate = sysUserInfo.getUserState();
					if(!ustate.equals(userState)){
						sysUserInfoService.sysUserInfoUpdate(userState, roleId);
						sucSum++;
					}
				}
			}
			String roleStateText = userState!=null&&userState.equals("1")?"启用":"停用";
			String message = "您成功"+roleStateText+sucSum+"条记录!";
			int failSum = arr.length-sucSum;
			if(failSum>0){
				message+=","+failSum+"条记录由于已"+roleStateText+","+roleStateText+"失败!";
			}
			this.getJson(response, message);
		}
	}
	
	/*
	 * 系统用户分配角色保存
	 */
	@RequestMapping(value = "/sysUserRoleSave",method = RequestMethod.GET)
	public void sysUserRoleSave(HttpServletRequest request,
			HttpServletResponse response,String userId,String idStr) throws Exception{
		if(StringUtils.isNotBlank(userId)&&StringUtils.isNotBlank(idStr)){
			//在进行分配角色之前先删除原先分配的角色
			List<SysUserRole> sysurList = sysUserRoleService.getSysUserRoleByUserId(userId);
			if(sysurList.size()>0){
				for (SysUserRole sysUserRole : sysurList) {
					sysUserRoleService.sysUserRoleDelete(sysUserRole);
				}
			}
			String[] arr =idStr.split(",");
			//分配角色
			for (int i = 0; i < arr.length; i++) {
				SysUserRole sysUserRole = sysUserRoleService.getSysUserRole(userId,arr[i]);
				if(null==sysUserRole){
					SysUserRole sysur = new SysUserRole();
					sysur.setUserId(userId);
					sysur.setRoleId(arr[i]);
					sysUserRoleService.sysUserRoleSave(sysur);
				}
			}
		}
	}
	
	/*
	 * 系统用户密码初始化
	 */
	@RequestMapping(value = "/sysUserPassInitilalize",method = RequestMethod.GET)
	public void sysUserPassInitilalize(HttpServletRequest request,
			HttpServletResponse response,String idStr) throws Exception{
		if(StringUtils.isNotBlank(idStr)){
			String[] arr = idStr.split(",");
			int succSum = 0; 
			for (String userId : arr) {
				SysUserInfo sysUserInfo = sysUserInfoService.getSysUserInfoByUserId(userId);
				sysUserInfo.setUserPass(INITUSERPASS);
				sysUserInfoService.sysUserInfoSave(sysUserInfo);
				succSum++;
			}
			String message = "您成功将"+succSum+"条记录进行了密码初始化,初始密码为:"+INITUSERPASS+",请牢记!";
			this.getJson(response, message);
		}
	}
	
	/*
	 * 系统用户修改密码
	 */
	@RequestMapping(value = "/sysUserModifyPass",method = RequestMethod.POST)
	public void sysUserModifyPass(HttpServletRequest request,
			HttpServletResponse response,String userId,String userPass,String userNewPass) throws Exception{
		if(StringUtils.isNotBlank(userId)){
			String code = "0",message = "";
			SysUserInfo sysUserInfo = sysUserInfoService.getSysUserInfoByUserId(userId);
			if(null!=sysUserInfo){
				if(StringUtils.isNotBlank(userPass)){
					if(userPass.equals(sysUserInfo.getUserPass())){
						sysUserInfo.setUserPass(userNewPass);
						sysUserInfoService.sysUserInfoSave(sysUserInfo);
						code = "1";
						message = "修改成功,请重新登录!";
					}else{
						message = "原密码输入错误,修改失败!";
					}
				}
			}else{
				message = "用户不存在,修改失败!";
			}
			Map<String,Object> dataMap = new HashMap<String,Object>(); 
			dataMap.put("code", code);
			dataMap.put("message", message);
			this.getJson(response, dataMap);
		}
	}
}
用户管理模块后台jsp代码
<%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE HTML>
<html>
<%@ include file="/resource/include/meta.jsp"%>
  <head>
    <title>用户管理</title>
	<script type="text/javascript" src="${ctx}/resource/common/js/sysManage/sysUserInfo.js"></script>
  </head>
  <body>
  </body>
</html>
用户管理模块后台js代码
/********************************************Ext入口函数,相当于java中的主函数开始********************************************/
Ext.onReady(function() {
	Ext.QuickTips.init();
	var userStateStore = new Ext.data.ArrayStore({
		fields : ['key', 'value'],
		data : [['有效','1'],['无效', '0']]
	});
	var userSexStore = new Ext.data.ArrayStore({
		fields : ['key', 'value'],
		data : [['男','1'],['女', '0']]
	});
	var record = Ext.data.Record.create([
        {name:'userId'},
        {name:'loginAccount'},
		{name:'userName'},
		{name:'userPass'},
		{name:'userSex'},
		{name:'userBrithday'},
		{name:'createTime'},
		{name:'updateTime'},
		{name:'userState'},
		{name:'userDesc'},
		{name:'userRoleIds'},
		{name:'userRoleNames'}
	  ]);
	/*****************************      表格数据代理Store开始       *******************************************/
	var dataStore = new Ext.data.Store({
	    restful : true,     
	    autoLoad : true,
	    proxy : new Ext.data.HttpProxy({
	        url:basepath+'/sysUser/getSysUserInfoPage',
			method : 'GET'
	    }),
	    reader : new Ext.data.JsonReader({
			successProperty : 'success',
			idProperty : 'ID',
			messageProperty : 'message',
			root : 'data',
			totalProperty : 'count'
		}, record)
	});
	/*****************************      表格数据代理Store结束       *******************************************/

	/*****************************      定义自动当前页行号开始       *******************************************/
	var rownum = new Ext.grid.RowNumberer({
		header : 'No.',
		width : 28
	});
	/*****************************      定义自动当前页行号结束       *******************************************/
	
	/*****************************      定义复选框开始       *******************************************/
	var sm = new Ext.grid.CheckboxSelectionModel();
	/*****************************      定义复选框结束       *******************************************/
	
	/*****************************      设置分页参数开始       *******************************************/
	var pagesize_combo = new Ext.form.ComboBox({
        name : 'pagesize',
        triggerAction : 'all',
        mode : 'local',
        store : new Ext.data.ArrayStore({
            fields : ['value', 'text'],
            data : [ [ 10, '10条/页' ], [ 20, '20条/页' ], [ 50, '50条/页' ],
						[ 100, '100条/页' ], [ 250, '250条/页' ],
						[ 500, '500条/页' ] ]
        }),
        valueField : 'value',
        displayField : 'text',
        value: 20,
        editable : false,
        width : 85
	});
	
	var bbar = new Ext.PagingToolbar({					//分页组件
        pageSize : parseInt(pagesize_combo.getValue()),
        store : dataStore,
        displayInfo : true,
        displayMsg : '显示{0}条到{1}条,共{2}条',       
        emptyMsg : "没有符合条件的记录",
        items : ['-', '  ', pagesize_combo]
    });
	pagesize_combo.on("select", function(comboBox) {
        bbar.pageSize = parseInt(pagesize_combo.getValue()),
        dataStore.reload({
            params : {
                start : 0,
                limit : parseInt(pagesize_combo.getValue())
            }
        });
    });
	/*****************************       设置分页参数结束       *******************************************/
	
	/*****************************************   新增editForm开始  **************************************************/
	var editForm = new Ext.form.FormPanel({
		formId:'editForm',
        frame:true,
        border:false,
        labelAlign:'center',
        standardSubmit:false,
    	layout : 'form',//*form布局
        items : [{
	    	layout:'column',
        	items : [{
                 columnWidth : .5,					//列宽为25%
   	        	 layout : 'form',					//*form布局
   	        	 items: [{
	            	columnWidth : .5,					//列宽为25%
   	  	        	layout : 'form',					//*form布局
   	  	        	items: [{
   	  	        		fieldLabel : '<font color="red">*</font>用户账号',
   	  	        		name : 'loginAccount', 
   	  	        		xtype : 'textfield', 			// 设置为数字输入框类型
   	  	        		labelStyle : 'text-align:right;',//右对齐
   	  	        		emptyText:'请您输入用户账号',	//水印提示
   	  	        		allowBlank:false,      
   	  	        		minLength:5,  
   	  	        	 	minLengthText:'用户账号的长度为[5-32]',  
   	  	        	 	maxLength:32,  
   	  	        	 	maxLengthText:'用户账号的长度为[5-32]',
   	  	        		anchor : '90%'
   	  	        	}]
       	        },{
   	            	columnWidth : .5,					//列宽为25%
   					layout : 'form',					//*form布局
   					items : [{ //下拉框
   						xtype : 'combo',
   						fieldLabel : '<font color="red">*</font>用户状态',
   						name : 'userState',
   						store : userStateStore,			//*加载客户类型Store
   						editable : false,				//false为不可编辑,页面效果为点击下拉框空白处直接触发下拉用户
   						labelStyle : 'text-align:right;',//fieldLabel右对齐
   						triggerAction : 'all',			//*触发器被激活时执行allQuery查询
   						displayField : 'key',			//*下列列表选项的中文名,对应Store中的value
   						valueField : 'value',				//*下列列表选项对应的key值,对应Store中的key
   						mode : 'local',					//*读取本地数据
   						emptyText:'请您选择',				//*水印提示
   						resizable : false,				//*下拉框下部的缩放柄,可改变下拉框大小
   						allowBlank:false,              
   						anchor : '90%'
   					},{
   	  	        		fieldLabel : '<font color="red">*</font>用户姓名',
   	  	        		name : 'userName', 
   	  	        		xtype : 'textfield', 			// 设置为数字输入框类型
   	  	        		labelStyle : 'text-align:right;',//右对齐
   	  	        		emptyText:'请您输入用户姓名',	//水印提示
   	  	        		allowBlank:false,               
   	  	        		anchor : '90%'
   	  	        	}]	
   	            }]
        	},{
            	columnWidth : .5,					//列宽为25%
  	        	layout : 'form',					//*form布局
  	        	items: [{
  	        		fieldLabel : '<font color="red">*</font>用户密码',
  	        		id:'userPass',				
  	        		name : 'userPass', 
  	        		xtype : 'textfield', 			// 设置为数字输入框类型
  	        		labelStyle : 'text-align:right;',//右对齐
  	        		emptyText:'请您输入用户密码',	//水印提示
  	        		minLength:6,  
  	        	 	minLengthText:'用户账号的长度为[6-32]',  
  	        	 	maxLength:32,  
  	        	 	maxLengthText:'用户账号的长度为[6-32]',
  	        		anchor : '90%'
  	        	},{
   	            	columnWidth : .5,					//列宽为25%
   					layout : 'form',					//*form布局
   					items : [{ //下拉框
   						xtype : 'combo',
   						fieldLabel : '<font color="red">*</font>用户性别',
   						name : 'userSex',
   						store : userSexStore,			//*加载客户类型Store
   						//下列属性在复用时一般不作修改
   						editable : false,				//false为不可编辑,页面效果为点击下拉框空白处直接触发下拉用户
   						labelStyle : 'text-align:right;',//fieldLabel右对齐
   						triggerAction : 'all',			//*触发器被激活时执行allQuery查询
   						displayField : 'key',			//*下列列表选项的中文名,对应Store中的value
   						valueField : 'value',				//*下列列表选项对应的key值,对应Store中的key
   						mode : 'local',					//*读取本地数据
   						emptyText:'请您选择',				//*水印提示
   						resizable : false,				//*下拉框下部的缩放柄,可改变下拉框大小
   						allowBlank:false,               //allowBlank : false就是已经定义好的校验规则,extjs getForm().isValid()函数会调用已经定义的校验规则来验证输入框中的值
   						anchor : '90%'
   					},{
   	  	        		fieldLabel : '<font color="red">*</font>用户生日',
   	  	        		name : 'userBrithday', 
   	  	        		xtype : 'datefield', 			// 设置为数字输入框类型
   	  	        		labelStyle : 'text-align:right;',//右对齐
   	  	        		emptyText:'请您选择用户生日',	//水印提示
   	  	        		allowBlank:false,               //allowBlank : false就是已经定义好的校验规则,extjs getForm().isValid()函数会调用已经定义的校验规则来验证输入框中的值
   	  	        		format:'Y-m-d',
   	  	        		anchor : '90%'
   	  	        	}]	
	   	      }]
        	}]
		},{
        	columnWidth : 1,					//列宽为25%
        	layout : 'form',					//*form布局
        	items: [{
                xtype : 'htmleditor',
                height : 140,
                width : 700,
                fontFamilies : ['宋体','黑体','隶书','微软雅黑','Arial','Courier New','Tahoma','Times New Roman','Verdana'],
                defaultFont: '宋体',
                defaultLinkValue:"http://www.",
                enableAlignments:true,
                enableColors:true,
                enableFont:true,
                enableFontSize:true,
                enableFormat:true,
                enableLinks:true,
                enableSourceEdit:true,
                fieldLabel:'用户描述',
                labelStyle:'text-align:right;',
                name:'userDesc',
                anchor:'95%'
            }]
	  },{
			name : 'userId',
			xtype : 'hidden'
        },{
        	id : 'createTime',
			name : 'createTime',
			xtype : 'hidden'
        },{
        	id : 'userRoleIds',
			name : 'userRoleIds',
			xtype : 'hidden'
        }]
	});
	/*****************************************   新增editForm结束  **************************************************/
	
	/*****************************************   新增和修改editWindow窗口开始  **************************************************/
	var editWindow=new Ext.Window({
		id:'editWindow',
		width : 880,
		height :350,
		closable : true,
		resizable : false,
		collapsible : false,
		draggable : true,
		closeAction : 'hide',
		title : '新增系统用户',
		modal : true, 
		animCollapse : false,
		border : false,
		closable : true,
		animateTarget : Ext.getBody(),
		constrain : true,
		items : [editForm],
		buttonAlign:'center',
		buttons:[{
			text:'保存',
			handler:function(){
				if(!editForm.getForm().isValid()){
					Ext.MessageBox.alert('系统提示', '请您正确输入各项信息!');
					return false;
				}         
				//提交表单的方法
				var pars = editForm.getForm().getFieldValues();
				var userReg = /^[A-Za-z0-9]{6,32}$/;
				if(!userReg.test(pars.loginAccount)){
					Ext.MessageBox.alert('系统提示', '用户账号必须为6到32位的字母,数字或字母加数据组成!');
					return false;
				}
				if(!userReg.test(pars.userPass)){
					Ext.MessageBox.alert('系统提示', '用户密码必须为6到32位的字母,数字或字母加数据组成!');
					return false;
				}
				editForm.getForm().submit({
					url : basepath + '/sysUser/sysUserInfoSave',
					method : 'POST',
					waitTilte : '系统提示',
					waitMsg : '正在提交数据,请稍后!',
                  	success:function(response){
                  		Ext.Msg.alert('系统提示', '保存成功!',function(btn){
                  			if(btn == 'ok'){
                  				dataStore.load({
                  					params : {
                      					start : 0,
                      					limit : parseInt(pagesize_combo.getValue())
                      				}
                  				});
                  			}
                  		});
                  	},
                  	failure : function(form, action){
                    	Ext.MessageBox.alert('系统提示', '保存失败!');
                  	},
				});
//				editForm.getForm().reset();
				editWindow.hide();
      	  	}
		},{
			text: '关闭',
			handler:function(){
				editForm.getForm().reset();
				editWindow.hide();
          	}
		}]  
	});
	/*****************************************   新增和修改editWindow窗口结束  **************************************************/
	
   /*****************************************   详情detailForm开始  **************************************************/
   var detailForm=new Ext.FormPanel({
        formId:'detailForm',
        frame:true,
        border:false,
        labelAlign:'right',
        standardSubmit:false,
        width : '100%',
        layout:'form',
        items : [{
        	layout:'column',
        	items : [{
        		columnWidth : .5,
            	layout : 'form',
                items : [{
                    xtype : 'textfield',
                    fieldLabel : '用户ID',
                    name : 'userId', 
                    editable : false,
                    anchor : '90%' 
                }]
        	},{
                columnWidth : .5,
                layout : 'form',
                items : [{                                
                	xtype : 'textfield',
                    fieldLabel : '用户账号',
                    name : 'loginAccount', 
                    readOnly:true,
                    editable : false,
                    anchor : '90%' 
                }]
        	},{
                columnWidth : .5,
                layout : 'form',
                items : [{                                
                	xtype : 'textfield',
                    fieldLabel : '用户密码',
                    name : 'userPass', 
                    readOnly:true,
                    editable : false,
                    anchor : '90%' 
                },{                                
                	xtype : 'combo',
                    fieldLabel : '用户性别',
                    labelStyle:{
                        width:'120px'
                    },        
                    name : 'userSex',
                    allowBlank:false,
                    mode:'local',
                    emptyText:'请您选择',
                    store:userSexStore,
                    triggerAction:'all',
                    valueField:'value',
                    editable : false,
                    displayField:'key',
                    anchor : '90%'
                },{                                
                	xtype : 'textfield',
                    fieldLabel : '用户角色',
                    name : 'userRoleNames', 
                    readOnly:true,
                    editable : false,
                    anchor : '90%' 
                }]
        	},{
                columnWidth : .5,
                layout : 'form',
                items : [{
                	xtype : 'textfield',
                    fieldLabel : '用户姓名',
                    name : 'userName', 
                    readOnly:true,
                    editable : false,
                    anchor : '90%' 
                }]
        	},{
                columnWidth : .5,
                layout : 'form',
                items : [{                                
                	xtype : 'combo',
                    fieldLabel : '用户状态',
                    labelStyle:{
                        width:'120px'
                    },        
                    name : 'userState',
                    allowBlank:false,
                    mode:'local',
                    emptyText:'请您选择',
                    store:userStateStore,
                    triggerAction:'all',
                    valueField:'value',
                    editable : false,
                    displayField:'key',
                    anchor : '90%'
                }]
        	},{
                columnWidth : .5,
                layout : 'form',
                items : [{                                
                	xtype : 'textfield',
                    fieldLabel : '创建时间',
                    name : 'createTime', 
                    readOnly:true,
                    editable : false,
                    anchor : '90%' 
                }]
        	},{
                columnWidth : .5,
                layout : 'form',
                items : [{                                
                	xtype : 'textfield',
                    fieldLabel : '更新时间',
                    name : 'updateTime', 
                    readOnly:true,
                    editable : false,
                    anchor : '90%' 
                }]
        	}]
        },{
            columnWidth : .5,
            layout : 'form',
            items : [{
                xtype : 'htmleditor',
                height : 140,
                fontFamilies : ['宋体','黑体','隶书','微软雅黑','Arial','Courier New','Tahoma','Times New Roman','Verdana'],
                defaultFont: '宋体',
                defaultLinkValue:"http://www.",
                enableAlignments:true,
                enableColors:true,
                enableFont:true,
                enableFontSize:true,
                enableFormat:true,
                enableLinks:true,
                enableLists:true,
                enableSourceEdit:true,
                id:'noticeContentBaby',
                fieldLabel : '用户描述',
                readOnly:true,
                name : 'userDesc',
                anchor : '95%' 
            }]
    	}]
    }); 
    /*****************************************   详情detailForm结束  **************************************************/
   
	/*****************************************   详情detailWindow窗口开始  **************************************************/
	var detailWindow = new Ext.Window({
		id:'detailWindow',
		width : 880,
		height :350,
		closable : true,
		resizable : false,
		collapsible : false,
		draggable : true,
		closeAction : 'hide',
		title : '系统用户详情',
		modal : true, 
		animCollapse : false,
		border : false,
		closable : true,
		animateTarget : Ext.getBody(),
		constrain : true,
		items : [detailForm],
		buttonAlign:'center',
	    buttons : [{
	        text : '关闭',
	        handler : function() {
	    		detailWindow.hide();
	    		dataStore.reload();
	        }
	    }]
	});
	/*****************************************   详情detailWindow窗口结束  **************************************************/
	
	/*****************************************   分配角色roleWindow窗口开始  **************************************************/
	var userId = "",userRoleIds = "";
	var rolePanel = new Ext.tree.TreePanel({
        id: 'roleTree',
        border:false,
        rootVisible: true,
        loader: new Ext.tree.TreeLoader({
        	url: basepath + '/sysRole/getSysUserRoleJson'
        }),
        root: new Ext.tree.AsyncTreeNode({  
        	id:'0',
            text: '系统角色',
            expanded:true
        }),
        listeners: {
        	load:function(node){
        		//在树加载完成之后给编辑角色动态给角色授权树赋值
        		if(null!=userRoleIds){
					var arr = userRoleIds.split(",");
					var allNodes = node.childNodes; 
	        		for(var i = 0; i < allNodes.length; i++){
	        			var roleId = allNodes[i].attributes.id;
	        			allNodes[i].attributes.checked=false;
	        			for ( var j = 0; j < arr.length; j++) {
							if(roleId==arr[j]){
								allNodes[i].attributes.checked=true;
							}
						}
	        		}
				}
        	}
        }
    });
	var roleWindow = new Ext.Window({
		width : 350,
		height :400,
		modal : true, 
		border : false,
		closable : true,
		autoScroll: true,
		draggable : true,
		constrain : true,
		closable : true,
		resizable : false,
		collapsible : false,
		animCollapse : false,
		closeAction : 'hide',
		id:'roleWindow',
		title : '系统用户分配角色',
		animateTarget : Ext.getBody(),
		items : [rolePanel],
		bodyStyle: 'background:#fff;font-size:20px;font-family:"微软雅黑";font-weight:900;color:#fff;',
		buttonAlign:'center',
	    buttons : [{
	        text : '保存',
	        handler : function() {
	        	var idStr = "";
	        	var treeNodes = Ext.getCmp('roleTree').getChecked();
	            for(var i=0;i<treeNodes.length;i++){
	            	if(treeNodes[i].text!='root'){
	            		idStr+=treeNodes[i].id + ',';
	            	}
	            }
	            if(""!=idStr&&""!=userId){
	            	//角色分配操作提交到数据库
		            Ext.Ajax.request({
						url : basepath	+ '/sysUser/sysUserRoleSave?userId=' + userId + '&idStr=' + idStr,
						waitTilte : '系统提示',
						waitMsg : '正在分配角色,请您等待...', // 显示读盘的动画效果,执行完成后效果消失
						success : function(response) {
							Ext.Msg.alert("系统提示", "分配角色成功!");
							roleWindow.hide();
						},
						failure : function() {
							Ext.MessageBox.alert('系统提示', '操作失败!');
						}
					});
	            }else{
	            	Ext.MessageBox.alert('系统提示', '必须选择一个角色,请您先分配角色...');
	            }
	        }
	    },{
	        text : '关闭',
	        handler : function() {
	        	roleWindow.hide();
	        }
	    }]
	});
	/*****************************************   分配角色roleWindow窗口结束  **************************************************/
	
	/*****************************************  系统用户信息表格开始  **************************************************/
    var grid = new Ext.grid.GridPanel({
        title : '系统用户信息',
        store : dataStore, 
        region : 'center',
        stripeRows : true, 
        border : false,
        tbar : [
            {
	    		text : '新增',
	    		iconCls : 'addIconCss',   //定义图标
	    		handler : function(){	  //调用新增方法
            		editWindow.setTitle("新增系统用户");
            		editForm.getForm().reset();
	            	editWindow.restore();
	            	editWindow.show();
	    		}
            }, '-', {
        		text : '修改',
    			iconCls : 'editIconCss',
    			handler : function() { 
	            	if(grid.selModel.hasSelection()){
	            		// 得到被选择的行
						var record = grid.getSelectionModel();
						if (record.selections.length>1) {
							Ext.MessageBox.alert('系统提示', '请您选择其中一条记录进行修改!');
							return false;
						} else {
							editWindow.setTitle("修改系统用户");
			                editForm.getForm().loadRecord(record.getSelected());
			                editWindow.restore();
		            		editWindow.show();
						}
					}else{
						Ext.Msg.alert("系统提示", "请您先选择一条要修改的记录!");
					}
    			}
	    	}, '-', {
	    		text : '删除',
	    		iconCls : 'deleteIconCss',
	    		handler : function() { 
		    		var checkedNodes = grid.getSelectionModel().selections.items;
	                if(checkedNodes.length==0){
	                    Ext.Msg.alert("系统提示", "请您先选择一条要删除的记录!");
	                    return ;
	                }else{
	                	Ext.MessageBox.confirm("系统提示","您确定要删除吗?",
                  	  		function(button,text){  
                                if( button == 'yes'){  
                                	var idStr = "";
        	                        for(var i=0;i<checkedNodes.length;i++){
        	                            var userId = checkedNodes[i].data.userId;
        	                            idStr +=userId+",";
        	                        }
        							Ext.Ajax.request({
        								url : basepath	+ '/sysUser/sysUserInfoDelete?idStr=' + idStr,
        								waitTilte : '系统提示',
        								waitMsg : '正在删除数据,请您等待...', // 显示读盘的动画效果,执行完成后效果消失
        								success : function(response) {
        									Ext.Msg.alert("系统提示", response.responseText);
        									dataStore.reload();
        								},
        								failure : function() {
        									Ext.MessageBox.alert('系统提示', '操作失败!');
        								}
        							});
                                }  
                            }   
                        ); 
                    }
				}
	    	}, '-', {
	    		text : '详情', 
	    		iconCls : 'detailIconCss',
	    		handler : function() { 
		    		if(grid.selModel.hasSelection()){
		    			var _record = grid.getSelectionModel();
						if (_record.selections.length>1) {
							Ext.MessageBox.alert('系统提示', '请您选择其中一条记录进行查看!');
							return false;
						} else {
							detailForm.getForm().loadRecord(_record.getSelected());
							detailWindow.restore();
                    		detailWindow.show();
						}
					}else{
						Ext.Msg.alert("系统提示", "请您先选择一条要查看的记录!");
					}
				}
	    	},'-', {
	    		text : '启用', 
	    		iconCls : 'optionIconCss',
	    		handler : function() { 
		    		if(grid.selModel.hasSelection()){
		    			var idStr = "";
		    			var _record = grid.getSelectionModel().selections.items;
                        for(var i=0;i<_record.length;i++){
                            var userId = _record[i].data.userId;
                            idStr +=userId+",";
                        }
                        Ext.Ajax.request({
							url : basepath	+ '/sysUser/sysUserInfoUpdate?idStr=' + idStr+'&userState=1',
							waitTilte : '系统提示',
							waitMsg : '正在启用数据,请您等待...', // 显示读盘的动画效果,执行完成后效果消失
							success : function(response) {
								Ext.Msg.alert("系统提示", response.responseText);
								dataStore.reload();
							},
							failure : function() {
								Ext.MessageBox.alert('系统提示', '操作失败!');
							}
						});
					}else{
						Ext.Msg.alert("系统提示", "请您先选择一条要启用的记录!");
					}
				}
	    	},'-', {
	    		text : '停用', 
	    		iconCls : 'optionIconCss',
	    		handler : function() { 
		    		if(grid.selModel.hasSelection()){
		    			var idStr = "";
		    			var _record = grid.getSelectionModel().selections.items;
                        for(var i=0;i<_record.length;i++){
                            var userId = _record[i].data.userId;
                            idStr +=userId+",";
                        }
                        Ext.Ajax.request({
							url : basepath	+ '/sysUser/sysUserInfoUpdate?idStr=' + idStr+'&userState=0',
							waitTilte : '系统提示',
							waitMsg : '正在停用数据,请您等待...', // 显示读盘的动画效果,执行完成后效果消失
							success : function(response) {
								Ext.Msg.alert("系统提示", response.responseText);
								dataStore.reload();
							},
							failure : function() {
								Ext.MessageBox.alert('系统提示', '操作失败!');
							}
						});
					}else{
						Ext.Msg.alert("系统提示", "请您先选择一条要停用的记录!");
					}
				}
	    	},'-', {
	    		text : '密码初始化', 
	    		iconCls : 'custSelectIconCss',
	    		handler : function() { 
	    			var checkedNodes = grid.getSelectionModel().selections.items;
	                if(checkedNodes.length==0){
	                    Ext.Msg.alert("系统提示", "请您先选择一条要密码初始化的记录!");
	                    return ;
	                }else{
	                	Ext.MessageBox.confirm("系统提示","您确定要密码初始化吗?",
                  	  		function(button,text){  
                                if( button == 'yes'){  
			                		var idStr = "";
			                        for(var i=0;i<checkedNodes.length;i++){
			                            var userId = checkedNodes[i].data.userId;
			                            idStr +=userId+",";
			                        }
									Ext.Ajax.request({
										url : basepath	+ '/sysUser/sysUserPassInitilalize?idStr=' + idStr,
										waitTilte : '系统提示',
										waitMsg : '正在密码初始化,请您等待...', // 显示读盘的动画效果,执行完成后效果消失
										success : function(response) {
											Ext.Msg.alert("系统提示", response.responseText);
											dataStore.reload();
										},
										failure : function() {
											Ext.MessageBox.alert('系统提示', '操作失败!');
										}
									});
                                }
	                		}
	                	);
                    }
				}
	    	},'-', {
	    		text : '分配角色', 
	    		iconCls : 'optionIconCss',
	    		handler : function() { 
		    		if(grid.selModel.hasSelection()){
		    			var _record = grid.getSelectionModel().selections.items;
		    			//保存用户roleId
						userId = _record[0].data.userId;
						//获取之前分配的角色
						userRoleIds = _record[0].data.userRoleIds;
						var tree = Ext.getCmp('roleTree');
						roleWindow.restore();
						roleWindow.show();
						tree.getRootNode().reload();
					}else{
						Ext.Msg.alert("系统提示", "请您先选择一条要分配角色的记录!");
					}
				}
	    	},{
                xtype : 'textfield',
                id : 'userName', 
                name : 'userName', 
                emptyText : '请您输入要查询的用户姓名',
                anchor : '90%' 
            },{
            	text : '搜索',
            	iconCls : 'searchIconCss',
            	handler : function(){
            		var userName = Ext.getCmp("userName").getValue();
            		dataStore.load({
      					params : {
          					start : 0,
          					userName :userName,
          					limit : parseInt(pagesize_combo.getValue())
          				}
      				});
            	}
            },{
            	text : '重置',
            	iconCls : 'resetIconCss',
            	handler : function(){
            		Ext.getCmp("userName").setValue('');
            		dataStore.load({
      					params : {
          					start : 0,
          					limit : parseInt(pagesize_combo.getValue())
          				}
      				});
            	}
            }
    	],
        cm : new Ext.grid.ColumnModel([					//定义列模型
       	        rownum,sm, 
                {header : 'ID',dataIndex : 'userId',sortable : true/*表示为可在该列上进行排列*/,hidden : true},
                {header : '用户账号',dataIndex : 'loginAccount',width : 100,sortable : true},
                {header : '用户姓名',dataIndex : 'userName',width : 180,sortable : true},
        	    {header : '用户密码',dataIndex : 'userPass',width : 100,sortable : true},
        	    {header : '用户性别',dataIndex : 'userSex',width : 80,sortable : true,
        	    	renderer : function(value){
        	    	  	if(value=="1"){
        	    	  		return "<span style='color:green;'>男</span>";
        	    	  	}else if( value=="0"){
        	    	  		return "<span style='color:red;'>女</span>";
        	    	  	}
        	      	}
        	    },
        	    {header : '用户生日',dataIndex : 'userBrithday',width : 80,sortable : true},
        	    {header : '用户状态',dataIndex : 'userState',width : 80,sortable : true,
        	    	renderer : function(value){
        	    	  	if(value=="1"){
        	    	  		return "<span style='color:green;'>有效</span>";
        	    	  	}else if( value=="0"){
        	    	  		return "<span style='color:red;'>无效</span>";
        	    	  	}
        	      	}
        	    },
        	    {header : '创建时间',dataIndex : 'createTime',width : 150,sortable : true},
        	    {header : '更新时间',dataIndex : 'updateTime',width : 150,sortable : true},
        	    {header : '用户描述',dataIndex : 'userDesc',width : 150,sortable : true},
        	    {header : '用户角色Ids',dataIndex : 'userRoleIds',hidden : true},
        	    {header : '用户角色Names',dataIndex : 'userRoleNames',hidden : true}
    	]),
        sm : sm,		//定义复选框
	    bbar : bbar,
        viewConfig : {
        },
        loadMask : {
            msg : '正在加载表格数据,请您稍等...'
        },
        listeners:{
        	rowdblclick:function(grid,row){
    			var _record = grid.getSelectionModel();
				if (_record.selections.length>1) {
					Ext.MessageBox.alert('系统提示', '请您选择其中一条记录进行查看!');
					return false;
				} else {
					detailForm.getForm().loadRecord(_record.getSelected());
					dataStore.load({
						params : {
							id :_record.getSelected().data.id
                    	},
                    	callback:function(){
                    		detailWindow.show();
                    	}
					});
				}
        	}
        }
    });
    /*****************************************  系统用户信息表格结束  **************************************************/
    
	/*****************************************   布局模型开始  **************************************************/
	var viewport = new Ext.Viewport({
	    layout:'fit',
	    items:[{
			layout : 'border',
			items: [grid]
	    }]
	});
	/*****************************************   布局模型结束  **************************************************/
});
/********************************************Ext入口函数,相当于java中的主函数结束********************************************/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值