extjs 4.1 用户管理控制层代码

本文最只有控制层的代码,界面设计部分看前一篇博客。

用户管理界面业务逻辑有点复杂,本人花了将近一周的时间才将所有代码完善,其中参考了很多资料,也借鉴一些别人的东西,这中间遇到了很多问题,很感谢很多网友将自己的经验发表出来供他人学习,我之前做pb开发的时候很少发表博客,遇到不会的到就到网上找别人的解决方法,感觉很应该将自己的东西拿出来也供别人学习和借鉴,同时也可以将知识梳理一遍,对自己对别人都有益处。我刚刚开始发表自己的blog,希望大家有什么问题一起讨论,共同进步。


 Ext.define('rm.controller.UserController', {
    extend: 'Ext.app.Controller',
    requires : [ 'Ext.ux.CheckColumn' ],
    models: [
             'OrgModel' ,
             'UserModel'
    ],
    stores: [
             'OrgStore' ,
             'UserStore'
    ],
    refs: [
    {
        ref: 'window',
        selector: 'UserMngMainView'
    }
    ],
    
    
    initWindow: function(component, eOpts) {
        //带分配角色store配置
        var window =this.getWindow();
        var grd1=window.down('#grd1');
        var store1 = Ext.create('rm.store.GrantStore' ,{
            
            autoLoad: false,
            model: 'rm.model.GrantModel',
            storeId: 'notUserRoleGrantStore',
            
            proxy: {
                type: 'ajax',
                url: 'Grant/getNotUserRoleGrantsByUserId',
                reader: {
                    type: 'json',
                    root: 'rows'
                }
            }

        }  );
        grd1.reconfigure(store1);
        
        //已分配store配置
        var grd2=window.down('#grd2');
        var store2 = Ext.create('rm.store.GrantStore' ,{
            autoLoad: false,
            model: 'rm.model.GrantModel',
            storeId: 'UserRoleGrantStore',
            
            proxy: {
                type: 'ajax',
                url: 'Grant/getUserRoleGrantsByUserId',
                reader: {
                    type: 'json',
                    root: 'rows'
                }
            }
        }  );
        grd2.reconfigure(store2);
        //待分配机构
        var grd3=window.down('#grd3');
        var store3 = Ext.create('rm.store.GrantStore' ,{
            autoLoad: false,
            model: 'rm.model.GrantModel',
            storeId: 'NotUserOrgGrants',
            
            proxy: {
                type: 'ajax',
                url: 'Grant/getNotUserOrgGrantsByUserId',
                reader: {
                    type: 'json',
                    root: 'rows'
                }
            }
        }  );
        grd3.reconfigure(store3);    
        //已分配机构
        var grd4=window.down('#grd4');
        var store4 = Ext.create('rm.store.GrantStore' ,{
            autoLoad: false,
            model: 'rm.model.GrantModel',
            storeId: 'UserOrgGrants',
            
            proxy: {
                type: 'ajax',
                url: 'Grant/getUserOrgGrantsByUserId',
                reader: {
                    type: 'json',
                    root: 'rows'
                }
            }
        }  );
        grd4.reconfigure(store4);    
        //加载机构store
        Ext.getStore('OrgStore').load();
        
        var orgcbx = window.down("#orgcbx");
        var orgStore = orgcbx.getStore( );
        orgStore.on("load",function(store,records,successful,eOpts){
            this.insert(0,{hospcode:'0000',hospname:'全部'});
            
        },orgStore);        
        
        
        
//        this.refresh();
    },
    refresh :function(  button, e, eOpts){
        
    
        var window = this.getWindow();
        var userGrid = window.down('#userGrid');
        var userForm = window.down('#userForm');
        var userStore = userGrid.getStore();
        this.userId=userForm.down('textfield[name=userId]').getValue();    
        var hospcode = window.down('#queryForm').down("combobox[name=hospcode]").getValue( );
         if (typeof hospcode =='undefined' || hospcode=='0000'||hospcode=='' ||hospcode==null){
             hospcode='%';
         }
        Ext.apply(userStore.proxy.extraParams, {hospcode :hospcode});
        userStore.load({
            scope: this,
            callback: function(records, operation, success) {
                if (success==true){
                    if(this.userId!=''){
                        var window = this.getWindow();
                        var userGrid = window.down('#userGrid');
                        var userStore = userGrid.getStore();
                        
                        var row=userStore.find('userId',this.userId);
                        if (row>=0){
                            userGrid.getSelectionModel( ).select(row);
                        }
                        
                        
                    }
                    
                }
            }
        });
    },
    getUsersByHospcode : function( combobox, newValue, oldValue,  eOpts ){
 
    this.refresh(  );
//        var window = this.getWindow();
//        var userGrid = window.down('#userGrid');
//        var userStore = userGrid.getStore();
//         if(newValue=='0000'){
//             newValue='%';
//         }
//        Ext.apply(userStore.proxy.extraParams, {hospcode :newValue });
//        userStore.load({
//            scope: userStore,
//            callback: function(records, operation, success) {
//                if (success==true){
//                    
//                }
//            }
//        });
    },
    
    filterUsers :function( field, newValue,oldValue,eOpts ){
        var window = this.getWindow();
        var userGrid = window.down('#userGrid');
        var userStore = userGrid.getStore();
        userStore.clearFilter();
        userStore.filter([
            {
                filterFn: function(item) {
                    return item.get("squn").toLowerCase().indexOf(newValue.toLowerCase() ) >=0   ;
                }
            }
        ]);
        
    },
    getInfos : function(dataview, record, item, index, e, eOpts) {  
        var window = this.getWindow();
        var userForm=window.down("form[itemId=userForm]");
//        userForm.down("radiofield[name=status]").setValue(true);
        //获取userInfo
        userForm.load({
            scope:this,
            url : 'User/getUserByUserId',         
            params:{userId : record.data.userId },     
            success:function(form,action){
                form.__origin=action.result.data;
                form.__isNew = undefined
                var window=this.getWindow();
                var form = window.down("form[itemId=userForm]");
                var userId = form.down("field[name=userId]");
                userId.setReadOnly(true);
                
                
            },
            failure:function(form,action){           
                
            }            
        });
        //获取待分配角色
        var grd1 =  window.down("#grd1");
        var grd1_store =  grd1.getStore();
        grd1_store.proxy.extraParams={userId : record.data.userId };
        grd1_store.load({
            scope: grd1_store,
            callback: function(records, operation, success) {
                if (success==true){
                    this.each(function(b) {
                        b.__isNew = true;
                    })
                }
            }
        });
        //已分配角色
        var grd2 =  window.down("#grd2");
        var grd2_store =  grd2.getStore();
        grd2_store.proxy.extraParams={userId : record.data.userId };
        grd2_store.load({
            scope: grd2_store,
            callback: function(records, operation, success) {
                if (success==true){
                    this.each(function(b) {
                        b.__origin = Ext.apply({}, b.data);
                        b.__isNew = undefined;
                    })
                }
            }
        });        
        //待分配机构
        var grd3 =  window.down("#grd3");
        var grd3_store =  grd3.getStore();
        grd3_store.proxy.extraParams={userId : record.data.userId };
        grd3_store.load({
            scope: grd3_store,
            callback: function(records, operation, success) {
                if (success==true){
                    this.each(function(b) {
                        b.__isNew = true;
                    })
                }
            }
        });
        //已分配机构
        var grd4 =  window.down("#grd4");
        var grd4_store =  grd4.getStore();
        grd4_store.proxy.extraParams={userId : record.data.userId };
        grd4_store.load({
            scope: grd4_store,
            callback: function(records, operation, success) {
                if (success==true){
                    this.each(function(b) {
                        b.__origin = Ext.apply({}, b.data);
                        b.__isNew = undefined;
                    })
                }
            }
        });            
    },    
    addUserRoleGrant:function(/*dataview, record, item, index, e, eOpts*/) {  

        var window = this.getWindow();
        var grd1 = window.down('#grd1');
        var grd1_store = grd1.getStore();
        var grd2 = window.down('#grd2');
        var grd2_store = grd2.getStore();
        var records = grd1.getSelectionModel( ).getSelection( ) ;
        grd1_store.remove( records  );  
        grd2_store.insert( grd2_store.getCount( )  ,  records );
        
    },
    delUserRoleGrant:function(/*dataview, record, item, index, e, eOpts*/) {
        var window = this.getWindow();
        var grd1 = window.down('#grd1');
        var grd1_store = grd1.getStore();
        var grd2 = window.down('#grd2');
        var grd2_store = grd2.getStore();
        var records = grd2.getSelectionModel( ).getSelection( ) ;
        
        grd2_store.remove( records  );
        grd1_store.insert( grd1_store.getCount( )  ,  records );
    },    
    addUserOrgGrant:function(dataview, record, item, index, e, eOpts) {  
        var window = this.getWindow();
        var grd3 = window.down('#grd3');
        var grd3_store = grd3.getStore();
        var grd4 = window.down('#grd4');
        var grd4_store = grd4.getStore();
        var records = grd3.getSelectionModel( ).getSelection( ) ;
        grd3_store.remove( records  );
        grd4_store.insert( grd4_store.getCount( )  ,  records );
    
    },
    delUserOrgGrant:function(dataview, record, item, index, e, eOpts) {   
        var window = this.getWindow();
        var grd3 = window.down('#grd3');
        var grd3_store = grd3.getStore();
        var grd4 = window.down('#grd4');
        var grd4_store = grd4.getStore();
        var records = grd4.getSelectionModel( ).getSelection( ) ;
        grd4_store.remove( records  );
        grd3_store.insert( grd4_store.getCount( )  ,  records );
    },
    clear :function(){
        var window =this.getWindow();
        window.down('#grd1').getStore().removeAll();
        window.down('#grd2').getStore().removeAll();
        window.down('#grd3').getStore().removeAll();
        window.down('#grd4').getStore().removeAll();
        window.down('#userForm').getForm().loadRecord(Ext.create(  "rm.model.UserModel") );
        window.down('#userForm').getForm().__isNew=true;
        window.down('#userForm').getForm().__origin=undefined;
        window.down('#userForm').down("field[name=userId]").setReadOnly(false);  
        
    },
    save:function(deleteFalg){
        var window =this.getWindow();
        var baseForm=window.down('#userForm').getForm();
        var grd2 = window.down('#grd2');
        var grd2_store = grd2.getStore();
        var grd4 = window.down('#grd4');
        var grd4_store = grd4.getStore();
        var deleteRerords = [];
        //搜集user信息
        
        var user ;
        
        if (  typeof deleteFalg =='boolean' && deleteFalg){
            user = baseForm.__origin;
            user.deleteFlag = true;    
            
        }else{
            if ( baseForm.isDirty( )) {
            user = baseForm.getFieldValues();
        
            if (!baseForm.__isNew ){
                user.origin  = baseForm.__origin
            }
            
        }

        }
        //1搜集角色授权信息
        var m=[],n=[],d=[];
        //1.1获取新增或修改的记录
        var j=grd2_store.getCount();
        for(i=j-1;i>=0;i--){
 
            record=grd2_store.getAt(i);
            data = Ext.apply({},record.data )
            
            if(record.dirty){
                
                if(record.__isNew){
                    n.push(data);
                }else{
                    data.origin=record.__origin;
                    m.push(data);
                }
            }else if( record.__isNew ){
                n.push(data);
            }
 

        }
        //1.2获取删除的记录
        deleteRerords = grd2_store.getRemovedRecords( );
        for(i=0 ;i<deleteRerords.length;i++){
            
            if( !deleteRerords[i].__isNew ){
                d.push(deleteRerords[i].__origin);
                
            }
            
        }
    
        
        //2搜集机构授权信息
        var m1=[],n1=[],d1=[];
        //2.1获取新增或修改的记录
        var j=grd4_store.getCount();
        for(i=j-1;i>=0;i--){
 
            record=grd4_store.getAt(i);
            data = Ext.apply({},record.data )
            
            if(record.dirty){
                
                if(record.__isNew){
                    n1.push(data);
                }else{
                    data.origin=record.__origin;
                    m1.push(data);
                }
            }else if( record.__isNew ){
                n1.push(data);
            }
 

        }
        //2.2获取删除的记录
        deleteRerords = grd4_store.getRemovedRecords( );
        for(i=0 ;i<deleteRerords.length;i++){
            
            if( !deleteRerords[i].__isNew ){
                d1.push(deleteRerords[i].__origin);
                
            }
            
        }

        var parms={
                   user :Ext.encode(user),
                   userRoles:Ext.encode({
                           adds : n,
                        dels : d,
                        mods : m
                   }),
                   userOrgs:Ext.encode({
                       adds : n1,
                       dels : d1,
                       mods : m1                       
                   })
        };
        if (user==null && n.length==0&& d.length==0&& m.length==0&& n1.length==0&& d1.length==0&& m1.length==0) return
        //ajax提交数据
        Ext.Ajax.request({
            scope: this,
            url:   'User/saveUserInfo',
            params: parms,
            success : function(response, options){
                   if (  typeof deleteFalg =='boolean' && deleteFalg){
                       this.clear();
                   }

                this.refresh( );
            }
        });
        
 
        
    },
    del : function(){
        
        var window = this.getWindow();
        var baseForm=window.down('#userForm').getForm();
        var userName=window.down('#userForm').down('textfield[name=userName]').getValue();    
        var userId=window.down('#userForm').down('textfield[name=userId]').getValue();    
 
        if (!baseForm.__isNew ){
            Ext.Msg.show({
                title: '系统提示',
                msg: "你确认现在删除操作员["+userId+":"+userName+"]的信息吗?</br>该操作员相关的授权也将被同时删除!!",
                buttons: Ext.Msg.YESNOCANCEL,
                scope : this,
                fn :function(btn){  
                    if(btn=='yes'){
                        var grd2 = window.down('#grd2');
                        grd2.getSelectionModel().selectAll();
                        this.delUserRoleGrant();
                        var grd4 = window.down('#grd4');
                        grd4.getSelectionModel().selectAll();
                        this.delUserOrgGrant();
                        this.save(true);
                    }

                }
            
            });
        }else{
            this.clear();
        }
    },
    init: function(application) {
        //添加全局变量
        Ext.applyIf(this, {
            userId : ''
        });
    


        this.control({
            "UserMngMainView": {
                afterrender:function(){
                    this.initWindow();
                    this.refresh();
                }
            } ,
            "UserMngMainView gridpanel[itemId=userGrid]": {
                select: this.getInfos
            } ,
            "UserMngMainView gridpanel[itemId=grd1]": {
                itemdblclick: this.addUserRoleGrant
            } ,
            "UserMngMainView gridpanel[itemId=grd2]": {
                itemdblclick: this.delUserRoleGrant
            } ,
            "UserMngMainView gridpanel[itemId=grd3]": {
                itemdblclick: this.addUserOrgGrant
            } ,
            "UserMngMainView button[itemId=btn1]": {
                click: this.addUserRoleGrant
            } ,
            "UserMngMainView button[itemId=btn3]": {
                click: function(){
                    var window = this.getWindow();
                    var grd1 = window.down('#grd1');
                    grd1.getSelectionModel().selectAll();
                    this.addUserRoleGrant();
                }
            } ,
            "UserMngMainView button[itemId=btn2]": {
                click: this.delUserRoleGrant
            } ,

            "UserMngMainView button[itemId=btn4]": {
                click: function(){
                var window = this.getWindow();
                var grd2 = window.down('#grd2');
                grd2.getSelectionModel().selectAll();
                this.delUserRoleGrant();
                }
            } ,
            
            
            "UserMngMainView button[itemId=btn5]": {
                click: this.addUserOrgGrant
            } ,
            
            "UserMngMainView button[itemId=btn7]": {
                click: function(){
                    var window = this.getWindow();
                    var grd3 = window.down('#grd3');
                    grd3.getSelectionModel().selectAll();
                    this.addUserOrgGrant();
                }
            } ,
            
            "UserMngMainView button[itemId=btn6]": {
                click: this.delUserOrgGrant
            } ,

            "UserMngMainView button[itemId=btn8]": {
                click: function(){
                    var window = this.getWindow();
                    var grd4 = window.down('#grd4');
                    grd4.getSelectionModel().selectAll();
                    this.delUserOrgGrant();
                }
            } ,
            
            "UserMngMainView gridpanel[itemId=grd4]": {
                itemdblclick: this.delUserOrgGrant
            } ,
            
            "UserMngMainView combobox[itemId=orgcbx]": {
                 change : this.getUsersByHospcode
            } ,
            
             "UserMngMainView textfield[itemId=userfield]": {
                 change : this.filterUsers
            } ,
            
            "UserMngMainView button[action=addAction]": {
                click: this.clear
            } ,
            
            "UserMngMainView button[action=refreshAction]": {
                click:  this.refresh
                
            } ,
            
            "UserMngMainView button[action=saveAction]": {
                click:  this.save
            } ,
            
            "UserMngMainView button[action=delAction]": {
                click:  this.del
            }
            });
    }

});



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值