Ext.QuickTips.init(); Ext.define('erp.controller.oa.attention.AddressBook', { extend: 'Ext.app.Controller', requires: ['erp.util.FormUtil', 'erp.util.GridUtil', 'erp.util.BaseUtil', 'erp.util.RenderUtil'], views:[ 'oa.attention.AddressBook','oa.attention.AttentionGrid','oa.attention.PersonalAddressTreePanel','oa.attention.Form','core.form.FileField','core.form.PhotoField', 'core.button.Save','core.button.Close','core.button.Update','oa.mail.TreePanel','oa.attention.PublicAddressGrid','oa.attention.AddressQueryForm','core.trigger.DbfindTrigger','oa.attention.EmployeeTreePanel' ], init:function(){ var me=this; this.control({ 'hidden[id=file-hidden]':{ change:function(field){ console.log(field.value ); } }, 'hidden[id=ab_recorderid]':{ afterrender:function(field){ if(field.value!=emid){ var btn=Ext.getCmp('updatebutton'); if(btn) btn.setDisabled(true); Ext.getCmp('publicqueryform').resize();//坑爹的样式 } } }, 'erpMailTreePanel': { afterrender: function(tree){ tree.selModel.on('select', function(selModel, record){ record.selected = true; if(record.childNodes.length > 0){ selModel.isOnSelect = true; selModel.select(record.childNodes); Ext.each(record.childNodes, function(){ this.selected = true; }); selModel.isOnSelect = false; me.setSharedName(selModel.getSelection()); me.setSharedId(selModel.getSelection()); } else { if(!selModel.isOnSelect){ var arr = selModel.getSelection(); arr.push(record); selModel.isOnSelect = true; selModel.select(arr); selModel.isOnSelect = false; me.setSharedName(selModel.getSelection()); me.setSharedId(selModel.getSelection()); } return; } }); tree.selModel.on('deselect', function(selModel, record){ record.selected = false; if(record.childNodes.length > 0){ selModel.deselect(record.childNodes); Ext.each(record.childNodes, function(){ this.selected = false; }); me.setSharedName(selModel.getSelection()); me.setSharedId(selModel.getSelection()); } else { selModel.deselect(record); me.setSharedName(selModel.getSelection()); me.setSharedId(selModel.getSelection()); return; } }); } }, 'button[id=attention]':{ click:function(){ } }, 'textfield[id=search]':{ change:function(){ me.onTextFieldChange(); } }, 'button[id=adduser]':{ click:function(){ me.addUser(me); } }, 'button[id=deleteuser]':{ click:function(){ me.deleteUser(me); } }, 'combo[id=moveto]':{ select:function(combo,records){ var groupid=records[0].data.id; me.moveToOtherGroup(groupid,me); } }, 'erpEmployeeTreePanel':{ show:function(panel){ if(panel.select==null){ panel.getSelectionModel().select(panel.getStore().tree.root.childNodes[0],true); } }, selectionchange:function(model,data, eOpts ){ var orgid=data[0].data.id; var grid=Ext.getCmp('employeeAddressBook'); var findcondition='em_defaultorid='+orgid.replace(/org/g,""); var gridParam = {caller: grid.caller, condition:findcondition }; grid.loadNewStore(grid,gridParam); } }, 'erpPersonalAddressTreePanel':{ afterrender:function(panel){ var item=new Object(); var button=new Object(); button.xtype='button'; button.cls='btn-cls'; button.text='点击添加分组'; button.iconCls='x-button-icon-addgroup'; button.style='margin-left:20px;'; button.handler=function open(){ me.addGroup(); }; panel.add(button); if(panel.select==null){ panel.getSelectionModel().select(panel.getStore().tree.root.childNodes[0],true); } }, selectionchange:function(model,data, eOpts ){ var groupid=data[0].data.id; Ext.getCmp('groupkind').setValue(data[0].data.text.substring(0,data[0].data.text.indexOf('('))+" ("+data[0].data.qtitle+"...)"); Ext.getCmp('groupid').setValue(groupid); var grid=Ext.getCmp('AttentionGridPanel'); var findcondition=(groupid==0) ?'ab_recorderid='+emid : 'ab_groupid='+groupid+' AND ab_recorderid='+emid; var gridParam = {caller: caller, condition:findcondition }; grid.loadNewStore(grid,gridParam); }, itemmousedown:function(view,record,el,index, e,eOpts){ var menu=Ext.getCmp('mainmenu'); if(menu){ menu.close(); } }, containerclick:function(){ Ext.getCmp('mainmenu').close(); }, itemcontextmenu:function(view,record,el,index, e,eOpts) { view.getSelectionModel().select(index); var id=record.data.id; var bool=id<1; var menu=Ext.create('Ext.menu.Menu', { style: { overflow: 'visible' }, ownerCt : this.ownerCt, renderTo:Ext.getBody(), floating: false, id:'mainmenu', async:false, width: 100, autoHeight:true, plain: true, items: [{ text:'共 享', iconCls:'x-menu-share', listeners:{ click:function(){ menu.close(); me.share('group'); } } },{ text: '添加分组', iconCls:'x-button-icon-addgroup', listeners:{ click:function(){ menu.close(); me.addGroup(view,index); } } },{ text: '添加联系人', iconCls:'x-menu-adduser', disabled:bool, listeners:{ click:function(){ menu.close(); me.addUser(me); } } },'-',{ text: '重命名', iconCls:'x-menu-rename', disabled:bool, listeners:{ click:function(){ menu.close(); me.renameGroup(id); } } },{ text:'删除改组', iconCls:'x-button-icon-deletedetail', disabled:bool, listeners:{ click:function(){ menu.close(); me.deleteGroup(id,'oa/addressbook/deleteAddressBookGroup.action'); } } }] }); menu.showAt(e.getXY()); }, } }); }, addGroup:function(view,index){ var win = new Ext.window.Window({ id : 'win', height: '300', width: '500', title:'添加新的分组', maximizable : true, buttonAlign : 'center', layout : 'anchor', items: [{ tag : 'iframe', frame : true, anchor : '100% 100%', xtype:'erpAttentionFormPanel', caller:'AddressBookGroup' , saveUrl:'oa/addressbook/saveAddressBookGroup.action', bbar:['->',{ xtype:'erpSaveButton', handler:function(){ var name=Ext.getCmp('ag_name').getValue(); var tree= Ext.getCmp('PersonalAddressTree'); var closebool=true; Ext.Array.each(tree.getStore().tree.root.childNodes,function(node){ if(node.data.qtitle==name){ closebool=false; Ext.Msg.alert($I18N.common.msg.title_prompt, '组名已存在!',function(){ Ext.getCmp('ag_name').reset(); }); return; } }); if(closebool){ Ext.getCmp('form').save(); Ext.getCmp('win').close(); tree.getTreeRootNode(tree); } var groupid=Ext.getCmp('groupid').getValue(); tree.getSelectionModel().select(tree.getStore().getNodeById(groupid),true) } },{ xtype:'erpCloseButton', handler:function(){ Ext.getCmp('win').close(); } },'->'] }], }); win.show(); }, renameGroup:function(id){ var win = new Ext.window.Window({ id : 'win', height: '300', width: '500', title:'分组重命名', maximizable : true, buttonAlign : 'center', layout : 'anchor', items: [{ tag : 'iframe', frame : true, anchor : '100% 100%', xtype:'erpAttentionFormPanel', caller:'AddressGrade' , formCondition:'ag_id='+id, updateUrl:'oa/addressbook/updateAddressBookGroup.action', bbar:['->',{ xtype:'erpSaveButton', handler:function(){ var name=Ext.getCmp('ag_name').getValue(); var tree= Ext.getCmp('PersonalAddressTree'); var closebool=true; if(Ext.getCmp('ag_name').originalValue==name){ closebool=false; Ext.Msg.alert($I18N.common.msg.title_prompt, '未作修改!',function(){ Ext.getCmp('ag_name').reset(); }); return; } if(closebool){ Ext.getCmp('form').update(); Ext.getCmp('win').close(); tree.getTreeRootNode(tree); tree.getSelectionModel().select(tree.getStore().getNodeById(id),true); } } },{ xtype:'erpCloseButton', handler:function(){ Ext.getCmp('win').close(); } },'->'] }], }); win.show(); }, deleteGroup:function(id,deleteUrl){ var me = this; warnMsg('确定要删除该分组吗?', function(btn){ if(btn == 'yes'){ Ext.Ajax.request({ url : basePath + deleteUrl, async: false, params: { id: id }, method : 'post', callback : function(options,success,response){ var localJson = new Ext.decode(response.responseText); if(localJson.exceptionInfo){ showError(localJson.exceptionInfo);return; }else { var tree= Ext.getCmp('PersonalAddressTree'); tree.getTreeRootNode(tree); //删除完成之后选中第一个 tree.getSelectionModel().select(tree.getStore().tree.root.childNodes[0],true); } } }); } }); } , addUser: function(me){ var win = new Ext.window.Window({ id : 'win', height: '80%', width: '60%', title:'添加联系人', maximizable : true, buttonAlign : 'center', layout : 'anchor', items: [{ tag : 'iframe', frame : true, anchor : '100% 100%', xtype:'erpAttentionFormPanel', caller:'AddressBook' , saveUrl:'/oa/addressbook/saveAddressPerson.action', bbar:['->',{ xtype:'erpSaveButton', handler:function(){ var groupid=Ext.getCmp('groupid').getValue(); Ext.getCmp('ab_groupid').setValue(groupid); Ext.getCmp('form').save(); Ext.getCmp('win').close(); me.reLoadTreeAndGrid(); } },{ xtype:'erpCloseButton', handler:function(){ Ext.getCmp('win').close(); } },'->'] }], }); win.show(); }, deleteUser:function(me){ //批删除 var grid=Ext.getCmp('AttentionGridPanel') var params=grid.getMultiSelected(); var main = parent.Ext.getCmp("content-panel"); main.getActiveTab().setLoading(true);//loading... Ext.Ajax.request({ url : basePath + 'oa/addressbook/deleteAddressPerson.action', params: params, method : 'post', callback : function(options,success,response){ main.getActiveTab().setLoading(false); var localJson = new Ext.decode(response.responseText); if(localJson.exceptionInfo){ showError(localJson.exceptionInfo); return ""; } if(localJson.success){ if(localJson.log){ showMessage("提示", localJson.log); } Ext.Msg.alert("提示", "删除成功!", function(){ grid.multiselected = new Array(); me.reLoadTreeAndGrid(); }); } } }); }, moveToOtherGroup:function(groupid,me){ var grid=Ext.getCmp('AttentionGridPanel'); var params=grid.getMultiSelected(); params.id=groupid; var main = parent.Ext.getCmp("content-panel"); main.getActiveTab().setLoading(true);//loading... Ext.Ajax.request({ url : basePath + 'oa/addressbook/removeToOtherGroup.action', params: params, method : 'post', callback : function(options,success,response){ main.getActiveTab().setLoading(false); var localJson = new Ext.decode(response.responseText); if(localJson.exceptionInfo){ showError(localJson.exceptionInfo); return ""; } if(localJson.success){ if(localJson.log){ showMessage("提示", localJson.log); } Ext.getCmp('moveto').reset(); Ext.getCmp('moveto').setDisabled(true); Ext.Msg.alert("提示", "移动成功!", function(){ grid.multiselected = new Array(); me.reLoadTreeAndGrid(); Ext.getCmp('deleteuser').setDisabled(true); }); } } }); } , share:function(type){ var win = new Ext.window.Window({ id : 'win', height: '100%', width: '60%', title:'共享联系人', maximizable : true, buttonAlign : 'center', layout : 'fit', items: [{ id:'desk', layout: 'border', items: [{ tag : 'iframe', frame : true, region: 'center', width: '50%', xtype:'form', id:'form', layout:'column', items:[{ fieldLabel:'共享给', id:'sharedname', name:'sharedname', columnWidth:1, allowBlank:false, fieldStyle:'background:#f0f0f0;color:#515151;', xtype:'textarea', rows: 6, },{ id:'sharedid', name:'sharedid', xtype:'textfield', hidden:'true', }], bbar:['->',{ xtype:'erpSaveButton', handler:function(){ var params = new Object(); var r = Ext.getCmp('form').getValues(); params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%")); if(type=="group"){ var groupid=Ext.getCmp('groupid').getValue(); var data = new Array(); var object=new Object(); object.ab_groupid=groupid; data.push(object); params.data= Ext.encode(data); } params.type = type; Ext.Ajax.request({ url : basePath + 'oa/addressbook/sharedToOther.action', params : params, method : 'post', async: false, callback : function(options,success,response){ var localJson = new Ext.decode(response.responseText); if(localJson.exceptionInfo){ var str = localJson.exceptionInfo; showError(str); } } }); Ext.getCmp('win').close(); } },{ xtype:'erpCloseButton', handler:function(){ Ext.getCmp('win').close(); } },'->'] }, { region: 'east', width: '50%', xtype: 'erpMailTreePanel', }] }] }); win.show(); }, setSharedName: function(records){ var r = ''; Ext.each(records, function(){ if(r != ''){ r += ';'; } r += this.get('text'); }); Ext.getCmp('sharedname').setValue(r); }, setSharedId: function(records){ var r = ''; Ext.each(records, function(){ if(r != ''){ r += ';'; } r += Math.abs(this.get('id')); }); Ext.getCmp('sharedid').setValue(r); }, reLoadTreeAndGrid:function(){ var tree= Ext.getCmp('PersonalAddressTree'); var groupid=Ext.getCmp('groupid').getValue(); var findcondition=(groupid==0) ?'ab_recorderid='+emid : 'ab_groupid='+groupid+' AND ab_recorderid='+emid; var gridParam = {caller: caller, condition:findcondition }; var grid=Ext.getCmp('AttentionGridPanel'); grid.loadNewStore(grid, gridParam); tree.getTreeRootNode(tree); tree.getSelectionModel().select(tree.getStore().getNodeById(groupid),true); }, onTextFieldChange: function() { var me = Ext.getCmp(gridid); me.view.refresh(); me.searchValue = me.getSearchValue(); me.indexes = []; me.currentIndex = null; if (me.searchValue !== null) { me.searchRegExp = new RegExp(me.searchValue, 'g' + (me.caseSensitive ? '' : 'i')); me.store.each(function(record, idx) { var td = Ext.fly(me.view.getNode(idx)).down('td'), cell, matches, cellHTML; while(td) { cell = td.down('.x-grid-cell-inner'); matches = cell.dom.innerHTML.match(me.tagsRe); cellHTML = cell.dom.innerHTML.replace(me.tagsRe, me.tagsProtect); // populate indexes array, set currentIndex, and replace wrap matched string in a span cellHTML = cellHTML.replace(me.searchRegExp, function(m) { if (Ext.Array.indexOf(me.indexes, idx) === -1) { me.indexes.push(idx); } if (me.currentIndex === null) { me.currentIndex = idx; } return '' + m + ''; }); // restore protected tags Ext.each(matches, function(match) { cellHTML = cellHTML.replace(me.tagsProtect, match); }); // update cell html cell.dom.innerHTML = cellHTML; td = td.next(); } }, me); if (me.currentIndex !== null) { me.getSelectionModel().select(me.currentIndex); } } // no results found if (me.currentIndex === null) { me.getSelectionModel().deselectAll(); } Ext.getCmp('search').focus(); }, });