Ext.define('erp.view.user.UserSetting',{ extend:'Ext.window.Window', alias:'widget.usersetting', id:'usersetting', title:'用户设置', layout:'border', width:'60%', height:'75%', modal:true , maximizable:true, initComponent:function(){ var me = this; me.items = [{ xtype:'grid', id:'userSettingGrid', region:'center', flex:1, columns:[{ header:'用户名', dataIndex:'name', width:120, editor:{ xtype:'textfield' } },{ header:'密码', dataIndex:'password', width:150, flex:1, editor:{ xtype:'textfield' } },{ header:'类型', dataIndex:'role', width:100, renderer:function(val){ if(val=='Default'){ return '普通用户'; }else if(val=='Admin'){ return '管理员'; } return val; }, editor:{ xtype:'combo', editable:false, store:Ext.create('Ext.data.Store',{ fields:['name','value'], data:[{ name:'普通用户', value:'Default' },{ name:'管理员', value:'Admin' }] }), valueField:'value', displayField:'name', queryMode:'local', } }], store:Ext.data.StoreManager.lookup('user'), plugins: [ Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 2 }) ], listeners:{ afterrender:function(grid){ grid.store.load(function(record, e, success) { if(!success) { Ext.Msg.alert('失败', '权限不足!'); } grid.getSelectionModel().select(0); }); }, select:function(grid, record, index, eOpts ){ var userboardgrid = Ext.getCmp('userboardgrid'); userboardgrid.setDisabled(false); if(record.get('role')=='Admin'){ userboardgrid.getSelectionModel().selectAll(); //管理员默认全勾选 userboardgrid.setDisabled(true); return; } var panelCodes = record.get('panelCodes'); var selRec = new Array(); Ext.Array.each(userboardgrid.store.data.items,function(item){ if(panelCodes.indexOf(item.get('code')) != -1){ selRec.push(item); } }); userboardgrid.getSelectionModel().select(selRec); } }, tbar:[{ text:'新增', handler:function(){ me.addUser(); } },{ text:'删除', handler:function(){ me.deleteUser(); } },{ text:'保存', handler:function(){ me.save(); } }, '->', { xtype:'triggerfield', id:'userfilterbox', fieldLabel: '', triggerCls: "selecter", overCls: '', hideTrigger : false, emptyText: '输入用户名关键字查找', editable: true, onTriggerClick : function(){ this.doFilter(); }, listeners: { specialkey : function(field, e) { if (e.getKey() == Ext.EventObject.ENTER) { this.doFilter(); } } }, doFilter: function(){ var grid = Ext.getCmp('userSettingGrid'); grid.userFilter(this.value); } }], userFilter: function(userName) { var grid = this; if(!userName) { grid.getStore().clearFilter(); return; } grid.getStore().filterBy(function(record, id) { if(record.get('name').indexOf(userName) != -1) { return true; }else { return false; } }); } },{ xtype:'grid', id:'userboardgrid', region:'east', flex:1, selectedPanelCodes: [], columns:[{ header:'名称', dataIndex:'name', flex:1 },{ header:'CODE', hidden:true, dataIndex:'code' }], tbar:[{ xtype:'tbtext', text:'面板', height:24, style:'line-height:24px' }], store: Ext.create('erp.store.desktopboard').load(), selModel: Ext.create('Ext.selection.CheckboxModel'), listeners:{ select:function(grid, record, index, eOpts ){ var grid = Ext.getCmp('userboardgrid'); grid.selectedPanelCodes.push(record.get('code')); }, deselect:function( e, record, index, eOpts ){ var grid = Ext.getCmp('userboardgrid'); grid.selectedPanelCodes.splice(grid.selectedPanelCodes.indexOf(record.get('code')), 1); } }, getSelectedPanels: function() { return this.selectedPanelCodes; } }]; this.callParent(arguments); }, addUser:function(){ var me = this; var grid = me.getGrid(); var bol = me.checkGridDirty(grid); if(bol){ Ext.Msg.alert('提示','请先保存当前操作!'); }else{ grid.store.insert(0,{ code:'', name:'', password:'111111', role:'Default' }); grid.getSelectionModel().select(0); } }, checkGridDirty:function(grid){ var bol = false; Ext.Array.each(grid.store.data.items,function(item){ if(item.dirty||!item.get('code')){ bol = true; return false; } }); return bol; }, deleteUser:function(){ var me = this; var grid = me.getGrid(); var record = grid.getSelectionModel().getSelection()[0]; var userboardgrid = Ext.getCmp('userboardgrid'); if(record.get('code')){ Ext.Msg.confirm('提示','是否确定删除该用户',function(btn){ if(btn=='yes'){ var el = me.getEl(); el.mask('删除中...'); Ext.Ajax.request({ url:'user/delete/'+record.get('code'), method:'POST', callback:function(options,success,response){ el.unmask(); var res = Ext.decode(response.responseText); if(typeof(res.success)!=='undefined'&&res.success==false){ Ext.Msg.alert('提示','删除失败,原因:'+res.message); }else{ Ext.Msg.alert('提示','删除成功!'); grid.store.reload(); userboardgrid.getSelectionModel().deselectAll(); } } }); } }); }else{ grid.store.remove(record); } }, save:function(){ var me = this; var grid = me.getGrid(); var userboardgrid = Ext.getCmp('userboardgrid'); var record = grid.getSelectionModel().getSelection()[0]; if(record){ var selectedPanels = userboardgrid.getSelectedPanels(); var values = record.data; values.panelCodes = selectedPanels; var type; if(!record.get('code')){ type = 'save'; delete values.code; }else{ type = 'updatePart'; } var el = me.getEl(); el.mask('保存中...'); Ext.Ajax.request({ url:'user/'+type, method:'POST', params:{ json:Ext.encode(values) }, callback:function(options,success,response){ el.unmask(); var res = Ext.decode(response.responseText); if(typeof(res.success)!=='undefined'&&res.success==false){ Ext.Msg.alert('提示','保存失败,原因:'+res.message); }else{ Ext.Msg.alert('提示','保存成功!'); grid.store.reload(); var code; if(type=='updatePart'||type=='update'){ code = record.get('code'); }else{ code = res.code; } userboardgrid.getSelectionModel().deselectAll(); Ext.defer(function(){ me.reSelect(grid,code); },300); } } }); }else{ Ext.Msg.alert('提示','未选中用户!'); } }, reSelect:function(grid,code){ var record; Ext.Array.each(grid.store.data.items,function(item){ if(item.get('code')==code){ record = item; return false; } }); grid.getSelectionModel().select(record); }, getGrid:function(){ return Ext.getCmp('userSettingGrid'); }, getSelectedBoardCodes:function(userboardgrid){ var sel = new Array(); var selPoints = userboardgrid.getSelectionModel().getSelection(); Ext.Array.each(selPoints,function(point){ sel.push(point.get('code')); }); return sel; } });