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