HrOrgSelectField.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  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. initComponent : function(){
  9. this.callParent(arguments);
  10. this.cls='';
  11. this.style="border-right:2px solid #D5D5D5;border-top:2px solid #D5D5D5;";
  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:165px;margin-right:-5px !important;',
  34. value:me.value
  35. });
  36. me.insert(1,{ xtype: 'textfield',
  37. readOnly:true,
  38. labelWidth:400,
  39. labelSeparator:'',
  40. columnWidth:0.6,
  41. padding:'0 0 0 105',
  42. fieldStyle : 'background:#f0f0f0;border-bottom:none;vertical-align:middle;border-top:none;border-right:none;border-bottom-style:1px solid;border-left:none;',
  43. fieldLabel: '『<a href="#" class="terms">选择</a>』(选择需要设置人员、岗位或组织)',
  44. style:"border-bottom:2px solid #D5D5D5;border-right:1px solid #D5D5D5",
  45. columnWidth:1,
  46. listeners: {
  47. click: {
  48. element: 'labelEl',
  49. fn: function(e) {
  50. var target = e.getTarget('.terms'),
  51. win;
  52. if (target) {
  53. var data=new Array(),value,display;
  54. me.secondvalue=me.secondvalue!=undefined?me.secondvalue:Ext.getCmp(me.logic).value;
  55. if(me.secondvalue){
  56. value=me.secondvalue.split(";");
  57. var displayfield=me.items.items[0];
  58. if(displayfield.value==''){
  59. displayfield.checkChange();
  60. displayfield.initValue();
  61. me.value=displayfield.value;
  62. }
  63. var displayvalue=me.value;
  64. displayvalue=!displayvalue && displayvalue!=''?displayvalue:me.items.items[0].value;
  65. display=displayvalue.substring(displayvalue.indexOf(">")+1,me.value.lastIndexOf("<")).split(";");
  66. }
  67. Ext.Array.each(value,function(item,index){
  68. data.push({
  69. text:display[index],
  70. value:item
  71. })
  72. });
  73. win = Ext.widget('window', {
  74. title: '<div align="center" class="WindowTitle">选择对象</div>',
  75. modal: true,
  76. width:'80%',
  77. height:'90%',
  78. layout:'border',
  79. requires:['erp.view.oa.doc.ItemSelector'],
  80. items:[{
  81. region:'center',
  82. layout:'border',
  83. items:[{
  84. region:'north',
  85. xtype:'form',
  86. bodyPadding: 10,
  87. layout:'column',
  88. bodyStyle:'background:#fafafa;',
  89. items:[{
  90. xtype:'textfield',
  91. margin:'0 0 0 20',
  92. fieldLabel:'快速搜素',
  93. labelStyle:'font-weight:bold;',
  94. columnWidth:0.8
  95. },{
  96. xtype:'button',
  97. id:'search',
  98. text:'搜索',
  99. cls:'button1 pill',
  100. style:'margin-left:5px;',
  101. width:60,
  102. handler:function(btn){
  103. btn.setDisabled(true);
  104. var likestring=btn.ownerCt.items.items[0].value;
  105. if(!likestring) {
  106. showMessage('提示','请输入需要搜索的信息!',1000);
  107. btn.setDisabled(false);
  108. return;
  109. }
  110. Ext.Ajax.request({//查询数据
  111. url : basePath + 'common/ProcessQueryPersons.action',
  112. params:{
  113. likestring:likestring
  114. },
  115. callback : function(options,success,response){
  116. var res = new Ext.decode(response.responseText);
  117. if(res.data){
  118. Ext.getCmp('itemselector-field').fromField.store.loadData(res.data);
  119. btn.setDisabled(false);
  120. } else if(res.exceptionInfo){
  121. showError(res.exceptionInfo);
  122. }
  123. }
  124. });
  125. }
  126. }]
  127. },{
  128. region:'center',
  129. xtype: 'itemselector',
  130. data:data,
  131. anchor: '100%',
  132. id: 'itemselector-field',
  133. displayField: 'text',
  134. valueField: 'value',
  135. allowBlank: false,
  136. msgTarget: 'side',
  137. listeners:{
  138. afterrender:function(field){
  139. field.toField.store.loadData(data);
  140. }
  141. }
  142. }],
  143. buttonAlign:'center',
  144. buttons:['->',{
  145. cls:'button1 pill',
  146. style:'margin-left:5px;',
  147. text:'确认',
  148. scope:this,
  149. handler:function(btn){
  150. var itemselector=Ext.getCmp('itemselector-field');
  151. var value=itemselector.getRawValue();
  152. if(value.length<1){
  153. showMessage('提示','选择需要设置对象',1000);
  154. }else {
  155. var toField=itemselector.toField,displayValue;
  156. if (toField) {
  157. displayValue = Ext.Array.map(toField.boundList.getStore().getRange(), function(model) {
  158. return model.get(itemselector.displayField);
  159. });
  160. }
  161. me.setFieldValue(displayValue,value);
  162. btn.ownerCt.ownerCt.ownerCt.close();
  163. }
  164. }
  165. },{
  166. cls:'button1 pill',
  167. style:'margin-left:5px;',
  168. text:'关闭',
  169. handler:function(btn){
  170. btn.ownerCt.ownerCt.ownerCt.close();
  171. }
  172. },'->']
  173. },{
  174. region:'west',
  175. width:'40%',
  176. xtype:'erpOrgTreePanel',
  177. bodyStyle:'background:#fafafa;'
  178. }]
  179. });
  180. win.show();
  181. e.preventDefault();
  182. }
  183. }
  184. }
  185. }
  186. });
  187. },
  188. isValid: function(){
  189. return this.firstField.isValid();
  190. },
  191. setValue: function(value){
  192. this.firstField.setValue(value);
  193. },
  194. getValue: function(){
  195. return this.value;
  196. },
  197. setFieldValue:function(displayValue,rawValue){
  198. var me=this;
  199. me.items.items[0].setValue('<font size="2.5">'+displayValue.join(";")+"</font>");
  200. Ext.getCmp(me.secondname).setValue(rawValue.join(";"));
  201. me.value='<font size="2.5">'+displayValue.join(";")+"</font>";
  202. me.secondvalue=rawValue.join(";");
  203. }
  204. });