HrOrgSelectField.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. Ext.define('erp.view.core.form.HrOrgSelectField', {
  2. extend: 'Ext.form.FieldContainer',
  3. alias: 'widget.HrOrgSelectfield',
  4. requires:['erp.view.oa.doc.OrgTreePanel','erp.view.oa.doc.ItemSelector'],
  5. layout: 'column',
  6. hideLabel:true,
  7. autoScroll:false,
  8. style:"border-right:1px solid #D5D5D5;border-top:1px solid #D5D5D5;border-bottom:1px solid #D5D5D5;",
  9. initComponent : function(){
  10. this.callParent(arguments);
  11. this.cls='';
  12. var me = this;
  13. me.insert(0, {
  14. xtype: 'htmleditor',
  15. enableColors: false,
  16. enableAlignments: false,
  17. columnWidth:1,
  18. enableFont: false,
  19. enableFontSize: false,
  20. enableFormat: false,
  21. enableLinks: false,
  22. enableLists: false,
  23. enableSourceEdit: false,
  24. labelSeparator :'',
  25. fieldLabel:'<div style="margin-top:63px">'+this.fieldLabel+'</div>',
  26. name:me.name,
  27. editable: false,
  28. allowBlank:false,
  29. readOnly:true,
  30. autoHeight:true,
  31. height:120,
  32. labelWidth:105,
  33. labelStyle:'background-color:#D5D5D5;height:153px;margin-right:2px !important;',
  34. value:me.value,
  35. listeners:{
  36. afterrender:function(editor){
  37. editor.getToolbar().hide();
  38. }
  39. }
  40. });
  41. me.insert(1,{ xtype: 'label',
  42. readOnly:true,
  43. labelWidth:400,
  44. labelSeparator:'',
  45. columnWidth:0.6,
  46. padding:'0 0 0 105',
  47. height:28,
  48. fieldStyle : 'background:#f0f0f0;border-bottom:none;vertical-align:middle;border-top:none;border-right:none;border-left:none;',
  49. html: '『<a href="#" class="terms">选择</a>』(选择需要相应的人员、岗位或组织)',
  50. //style:"border-bottom:2px solid #D5D5D5;border-right:1px solid #D5D5D5",
  51. columnWidth:1,
  52. listeners: {
  53. /*click: {
  54. //element: 'labelEl',
  55. fn: function(e) {}
  56. },*/
  57. render : function() {//渲染后添加click事件
  58. Ext.fly(this.el).on('click',
  59. function(e, t) {
  60. var target = e.getTarget('.terms'),
  61. win;
  62. if (target) {
  63. var data=new Array(),value,display;
  64. me.secondvalue=me.secondvalue!=undefined?me.secondvalue:Ext.getCmp(me.logic).value;
  65. if(me.secondvalue){
  66. value=me.secondvalue.split(";");
  67. var displayfield=me.items.items[0];
  68. if(displayfield.value==''){
  69. displayfield.checkChange();
  70. displayfield.initValue();
  71. me.value=displayfield.value;
  72. }
  73. var displayvalue=me.value;
  74. displayvalue=!displayvalue && displayvalue!=''?displayvalue:me.items.items[0].value;
  75. display=displayvalue.substring(displayvalue.indexOf(">")+1,me.value.lastIndexOf("<")).split(";");
  76. }
  77. Ext.Array.each(value,function(item,index){
  78. data.push({
  79. text:display[index],
  80. value:item
  81. })
  82. });
  83. win = Ext.widget('window', {
  84. title: '<div align="center" class="WindowTitle">选择对象</div>',
  85. modal: true,
  86. width:'80%',
  87. height:'90%',
  88. layout:'border',
  89. requires:['erp.view.oa.doc.ItemSelector'],
  90. items:[{
  91. region:'center',
  92. layout:'border',
  93. items:[{
  94. region:'north',
  95. xtype:'form',
  96. bodyPadding: 10,
  97. layout:'column',
  98. bodyStyle:'background:#fafafa;',
  99. items:[{
  100. xtype:'textfield',
  101. margin:'0 0 0 20',
  102. fieldLabel:'快速搜索',
  103. labelStyle:'font-weight:bold;',
  104. columnWidth:0.8
  105. },{
  106. xtype:'button',
  107. id:'search',
  108. text:'搜索',
  109. cls:'button1 pill',
  110. style:'margin-left:5px;',
  111. width:60,
  112. handler:function(btn){
  113. btn.setDisabled(true);
  114. var likestring=btn.ownerCt.items.items[0].value;
  115. if(!likestring) {
  116. showMessage('提示','请输入需要搜索的信息!',1000);
  117. btn.setDisabled(false);
  118. return;
  119. }
  120. Ext.Ajax.request({//查询数据
  121. url : basePath + 'common/ProcessQueryPersons.action',
  122. params:{
  123. likestring:likestring
  124. },
  125. callback : function(options,success,response){
  126. var res = new Ext.decode(response.responseText);
  127. if(res.data){
  128. Ext.getCmp('itemselector-field').fromField.store.loadData(res.data);
  129. btn.setDisabled(false);
  130. } else if(res.exceptionInfo){
  131. showError(res.exceptionInfo);
  132. }
  133. }
  134. });
  135. }
  136. }]
  137. },{
  138. region:'center',
  139. xtype: 'itemselector',
  140. data:data,
  141. anchor: '100%',
  142. id: 'itemselector-field',
  143. displayField: 'text',
  144. valueField: 'value',
  145. allowBlank: false,
  146. msgTarget: 'side',
  147. listeners:{
  148. afterrender:function(field){
  149. field.toField.store.loadData(data);
  150. }
  151. }
  152. }],
  153. buttonAlign:'center',
  154. buttons:['->',{
  155. cls:'button1 pill',
  156. style:'margin-left:5px;',
  157. text:'确认',
  158. scope:this,
  159. handler:function(btn){
  160. var itemselector=Ext.getCmp('itemselector-field');
  161. var value=itemselector.getRawValue();
  162. if(value.length<1){
  163. showMessage('提示','选择需要设置对象',1000);
  164. }else {
  165. var toField=itemselector.toField,displayValue;
  166. if (toField) {
  167. displayValue = Ext.Array.map(toField.boundList.getStore().getRange(), function(model) {
  168. return model.get(itemselector.displayField);
  169. });
  170. }
  171. me.setFieldValue(displayValue,value);
  172. btn.ownerCt.ownerCt.ownerCt.close();
  173. }
  174. }
  175. },{
  176. cls:'button1 pill',
  177. style:'margin-left:5px;',
  178. text:'关闭',
  179. handler:function(btn){
  180. btn.ownerCt.ownerCt.ownerCt.close();
  181. }
  182. },'->']
  183. },{
  184. region:'west',
  185. width:'40%',
  186. margins: '0 0 0 0',
  187. border:'0 0 0 0',
  188. layout: 'accordion',
  189. items: [{
  190. title: '公司组织架构',
  191. xtype:'erpOrgTreePanel',
  192. bodyStyle:'background:#fafafa;'
  193. },{
  194. title: '个人通讯组',
  195. itemId:'personal'
  196. },{
  197. title: '最近联系人',
  198. itemId:'recent'
  199. }]
  200. }]
  201. });
  202. win.show();
  203. e.preventDefault();
  204. }
  205. })
  206. }
  207. }
  208. });
  209. this.firstField=this.items.items[0];
  210. },
  211. isValid: function(){
  212. return this.firstField.isValid();
  213. },
  214. setValue: function(value){
  215. this.firstField.setValue(value);
  216. },
  217. getValue: function(){
  218. return this.value;
  219. },
  220. setFieldValue:function(displayValue,rawValue){
  221. var me=this;
  222. me.items.items[0].setValue('<font size="2.5">'+displayValue.join(";")+"</font>");
  223. Ext.getCmp(me.secondname).setValue(rawValue.join(";"));
  224. me.value='<font size="2.5">'+displayValue.join(";")+"</font>";
  225. me.secondvalue=rawValue.join(";");
  226. }
  227. });