Ext.define('erp.view.hr.employee.HrOrgStrTree',{
extend: 'Ext.tree.Panel',
alias: 'widget.hrOrgStrTree',
id: 'tree-panel',
border : false,
enableDD : false,
split: true,
width : '100%',
height: '100%',
expandedNodes: [],
title: "员工组织架构",
toggleCollapse: function() {
if (this.collapsed) {
this.expand(this.animCollapse);
} else {
this.title = '员工组织架构';
this.collapse(this.collapseDirection, this.animCollapse);
}
return this;
},
rootVisible: false,
singleExpand: true,
containerScroll : true,
collapsible : true,
autoScroll: true,
store: Ext.create('Ext.data.TreeStore', {
root : {
text: 'root',
id: 'root',
expanded: true
}
}),
dockedItems: [{
xtype: 'toolbar',
items: [{
text: '新增',
handler: function(){
win = Ext.create('Ext.Window', {
id: 'vendoruu-win',
title: '组织新增人员',
height: 200,
width: 400,
defaults: {
anchor: '100%'
},
items: [{
xtype: 'textfield',
fieldLabel: '员工编号',
name:'em_code',
value: ''
},{
xtype: 'textfield',
fieldLabel: '员工姓名',
name:'em_name',
value: ''
},{
xtype: 'dbfindtrigger',
fieldLabel: '组织名称',
name:'em_defaultorname',
value: ''
},{
xtype: 'textfield',
fieldLabel: '组织ID',
name:'em_defaultorid',
value: ''
}],
closeAction: 'hide',
buttonAlign: 'center',
layout: {
type: 'vbox',
align: 'center'
},
buttons: [{
text:'保存',
cls: 'x-btn-blue',
handler: function(btn) {
var em_id = Ext.getCmp('em_id').value;
if(em_id==null){
showError("员工ID不能为空!");
return;
}
var em_defaultorid = Ext.getCmp('em_defaultorid').value;
var em_defaultorname = Ext.getCmp('em_defaultorname').value;
if(em_defaultorname==null){
showError("组织名称不能为空!");
return;
}
Ext.Ajax.request({
url : basePath + 'hr/HrOrgStrTree/updateEmployee.action',
params: {
em_id:em_id,
hrOrgid:em_defaultorid,
hrOrgName:em_defaultorname
},
callback : function(options,success,response){
var res = new Ext.decode(response.responseText);
if(res.success){
alert("该人员已成功被组织添加!");
} else if(res.exceptionInfo){
showError(res.exceptionInfo);
}
}
});
}
}, {
text: $I18N.common.button.erpCloseButton,
cls: 'x-btn-blue',
handler: function(btn) {
btn.ownerCt.ownerCt.hide();
}
}]
});
win.show();
}
}, {
text: '更新',
handler: function(){
var check = Ext.getCmp('tree-panel').getSelectionModel();
var emid = check.lastSelected.data.id;
win = Ext.create('Ext.Window', {
id: 'vendoruu-win',
title: '更新人员组织',
height: 200,
width: 400,
defaults: {
anchor: '100%'
},
items: [{
xtype: 'textfield',
fieldLabel: '员工ID',
name:'em_id',
value: check.lastSelected.data.id
},{
xtype: 'textfield',
fieldLabel: '员工姓名',
name:'em_name',
value: check.lastSelected.data.text
},{
xtype: 'dbfindtrigger',
fieldLabel: '组织名称',
name:'em_defaultorname',
value: ''
},{
xtype: 'textfield',
fieldLabel: '组织ID',
name:'em_defaultorid',
value: ''
}],
closeAction: 'hide',
buttonAlign: 'center',
layout: {
type: 'vbox',
align: 'center'
},
buttons: [{
text:'更新',
cls: 'x-btn-blue',
handler: function(btn) {
var em_id = Ext.getCmp('em_id').value;
if(em_id==null){
showError("员工ID不能为空!");
return;
}
var em_defaultorid = Ext.getCmp('em_defaultorid').value;
var em_defaultorname = Ext.getCmp('em_defaultorname').value;
if(em_defaultorname==null){
showError("组织名称不能为空!");
return;
}
Ext.Ajax.request({
url : basePath + 'hr/HrOrgStrTree/updateEmployee.action',
params: {
em_id:em_id,
hrOrgid:em_defaultorid,
hrOrgName:em_defaultorname
},
callback : function(options,success,response){
var res = new Ext.decode(response.responseText);
if(res.success){
alert("人员组织更新成功!");
} else if(res.exceptionInfo){
showError(res.exceptionInfo);
}
}
});
}
}, {
text: $I18N.common.button.erpCloseButton,
cls: 'x-btn-blue',
handler: function(btn) {
btn.ownerCt.ownerCt.hide();
}
}]
});
/*var formCondition = "em_id="+emid;
var win = new Ext.window.Window({
id : 'win',
title: '更新人员组织',
height: "90%",
width: "70%",
maximizable : true,
buttonAlign : 'center',
layout : 'anchor',
items: [{
tag : 'iframe',
frame : true,
anchor : '100% 100%',
layout : 'fit',
html : ''
}]
});*/
win.show();
}},{
text: '删除',
handler: function(){
warnMsg("确定要从组织中删除该人员吗?", function(btn){
if(btn == 'yes'){
var check = Ext.getCmp('tree-panel').getSelectionModel();
var emid = check.lastSelected.data.id;
Ext.Ajax.request({
url : basePath + 'hr/HrOrgStrTree/deleteEmployee.action',
params: {
id: emid
},
method : 'post',
callback : function(options,success,response){
me.FormUtil.getActiveTab().setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.exceptionInfo){
showError(localJson.exceptionInfo);
}
if(localJson.success){
alert("该人员已经成功从组织中删除!");
}
}
});
}
});
}
}]
}],
tools: [{
id: 'refresh',
type: 'refresh',
tooltip: '刷新',
handler: function(){
}
},{
id: 'search',
type: 'search',
tooltip: '查找',
handler: function(){
}
}],
bodyStyle:'background-color:#f1f1f1;',
initComponent : function(){
this.getTreeRootNode(0);
this.callParent(arguments);
},
getTreeRootNode: function(parentid){
Ext.Ajax.request({//拿到tree数据
url : basePath + 'hr/employee/getAllHrOrgsTree.action',
params: {
//parentid: parentid
},
callback : function(options,success,response){
var res = new Ext.decode(response.responseText);
if(res.tree){
var tree = res.tree;
// console.log(Ext.getCmp('tree-panel'));
Ext.getCmp('tree-panel').store.setRootNode({
text: 'root',
id: 'root',
expanded: true,
children: tree
});
} else if(res.exceptionInfo){
showError(res.exceptionInfo);
}
Ext.getCmp('tree-panel').listenerNode();
}
});
},
listenerNode: function(node){
var me = this;
var Node = node || Ext.getCmp('tree-panel').store.tree.root;
Ext.each(Node,function(e){
e.on('beforecollapse',function(p,o){
});
if(e.data['leaf'] == false){
me.listenerNode(e);
}
});
},
openCloseFun: function(){
var o = Ext.getCmp("open");
var c = Ext.getCmp("close");
var tree = Ext.getCmp('tree-panel');
if(o.hidden==false&&c.hidden==true){
tree.expandAll();
o.hide();
c.show();
}else{
tree.collapseAll();
o.show();
c.hide();
}
},
listeners: {//滚动条有时候没反应,添加此监听器
scrollershow: function(scroller) {
if (scroller && scroller.scrollEl) {
scroller.clearManagedListeners();
scroller.mon(scroller.scrollEl, 'scroll', scroller.onElScroll, scroller);
}
},
},
/**
* 找到所有已展开的节点,包括当前被选中的节点
* @param record 当前被选中的节点
*/
getExpandedItems: function(record){
var me = this;
me.getRecordParents(record);
if(record.isLeaf()){
me.expandedNodes.push(record);
}
},
getRecordParents: function(record, parent){
var me = this;
if(!parent){
parent = me.store.tree.root;
me.expandedNodes = [];
}
if(parent.childNodes.length > 0){
Ext.each(parent.childNodes, function(){
if(this.isExpanded()){
me.expandedNodes.push(this);
if(this.childNodes.length > 0){
me.getRecordParents(record, this);
}
}
});
}
},
getExpandItem: function(root){
var me = this;
if(!root){
root = this.store.tree.root;
}
var node = null;
if(root.childNodes.length > 0){
Ext.each(root.childNodes, function(){
if(this.isExpanded()){
node = this;
if(this.childNodes.length > 0){
var n = me.getExpandItem(this);
node = n == null ? node : n;
}
}
});
}
return node;
}
});