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;
}
});