您的位置:首页 > Web前端 > JavaScript

extjs 4.1 用户管理控制层代码

2014-03-01 16:01 363 查看
本文最只有控制层的代码,界面设计部分看前一篇博客。

用户管理界面业务逻辑有点复杂,本人花了将近一周的时间才将所有代码完善,其中参考了很多资料,也借鉴一些别人的东西,这中间遇到了很多问题,很感谢很多网友将自己的经验发表出来供他人学习,我之前做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
}
});
}

});

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  管理 extjs combobox mvc json
相关文章推荐