DetailTextField.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. /**
  2. *
  3. */
  4. Ext.define('erp.view.core.form.DetailTextField', {
  5. extend: 'Ext.form.FieldSet',
  6. id: 'dfield',
  7. alias: 'widget.detailtextfield',
  8. autoScroll:true,
  9. minHeight: 220,
  10. collapsible: true,
  11. title: '',
  12. style: 'background:#f1f1f1;',
  13. margin: '2 2 2 2',
  14. tfnumber: 0,
  15. initComponent: function() {
  16. console.log(this);
  17. this.columnWidth = 1;//强制占一行
  18. this.cls = '';
  19. this.callParent(arguments);
  20. this.items.items[0].name = this.name;
  21. this.setTitle('<img src="' + basePath + 'resource/images/icon/detail.png" width=20 height=20/>&nbsp;&nbsp;'+this.fieldLabel);
  22. },
  23. layout:'column',
  24. items: [{
  25. xtype: 'hidden',//该隐藏字段的值(附件在FilePath表的ID,用;隔开)将被保存到数据库
  26. // id: 'file-hidden',
  27. value: '',
  28. fieldLabel: ''
  29. },{
  30. xtype: 'form',
  31. columnWidth: 1,
  32. frame: false,
  33. autoScroll:true,
  34. minHeight: 220,
  35. bodyStyle: 'background:#f1f1f1;',
  36. bbar:[ {
  37. iconCls: 'x-button-icon-add',
  38. id: 'add',
  39. text: '添加记录',
  40. handler: function(btn){
  41. btn.ownerCt.ownerCt.ownerCt.addItem(Ext.create('Ext.form.field.Text', {
  42. xtype: 'textfield',
  43. name: 'text' + ++btn.ownerCt.ownerCt.ownerCt.tfnumber,
  44. id: 'text' + btn.ownerCt.ownerCt.ownerCt.tfnumber,
  45. columnWidth: 0.95,
  46. labelWidth: 50,
  47. value: '',
  48. fieldLabel: '第&nbsp;' + btn.ownerCt.ownerCt.ownerCt.tfnumber +'&nbsp;条',
  49. fieldStyle: 'background:#f0f0f0;border-bottom-style: 1px solid #8B8970;padding:2px 2px;vertical-align:middle;border-top:none;border-right:none;color:#CD661D;border-bottom-style:1px solid;border-left:none; ',
  50. listeners:{
  51. change: function(){
  52. var s = '';
  53. for(var i=1; i<=btn.ownerCt.ownerCt.ownerCt.tfnumber; i++){
  54. if(Ext.getCmp('text'+i).value != null && Ext.getCmp('text'+i).value.toString().trim() != ''){
  55. s += Ext.getCmp('text'+i).value + '==###==';
  56. }
  57. }
  58. btn.ownerCt.ownerCt.ownerCt.value = s;
  59. }
  60. }
  61. }));
  62. btn.ownerCt.ownerCt.ownerCt.addItem(Ext.create('Ext.button.Button', {
  63. text: '清&nbsp;空',
  64. name: 'btn' + btn.ownerCt.ownerCt.ownerCt.tfnumber,
  65. id: 'btn' + btn.ownerCt.ownerCt.ownerCt.tfnumber,
  66. columnWidth: 0.05,
  67. index: btn.ownerCt.ownerCt.ownerCt.tfnumber,
  68. handler: function(btn){
  69. Ext.getCmp('text'+btn.index).setValue('');
  70. }
  71. }));
  72. }
  73. }]
  74. }],
  75. setValue: function(value){
  76. this.value = value;
  77. },
  78. getValue: function(){
  79. var value = '';
  80. for(var i=1; i<=this.tfnumber; i++){
  81. if(Ext.getCmp('text'+i).value != null && Ext.getCmp('text'+i).value.toString().trim() != ''){
  82. value += Ext.getCmp('text'+i).value + '==###==';
  83. }
  84. }
  85. return value;
  86. },
  87. clean: function(index){
  88. Ext.getCmp('text'+index).setValue('');
  89. },
  90. listeners : {
  91. afterrender: function(f){
  92. var me = this;
  93. if(f.value != null && f.value.toString().trim() != ''){
  94. var text = f.value.split('==###==');
  95. me.tfnumber = text.length-1;
  96. for(var i=1; i<=me.tfnumber; i++){
  97. me.addItem(Ext.create('Ext.form.field.Text', {
  98. xtype: 'textfield',
  99. name: 'text' + i,
  100. labelWidth: 50,
  101. id: 'text' + i,
  102. columnWidth: 0.95,
  103. value: text[i-1],
  104. fieldLabel: '第&nbsp;' + i +'&nbsp;条',
  105. fieldStyle: 'background:#f0f0f0;border-bottom-style: 1px solid #8B8970;padding:2px 2px;vertical-align:middle;border-top:none;border-right:none;color:#CD661D;border-bottom-style:1px solid;border-left:none; ',
  106. listeners:{
  107. change: function(){
  108. var s = '';
  109. for(var i=1; i<=me.tfnumber; i++){
  110. if(Ext.getCmp('text'+i).value != null && Ext.getCmp('text'+i).value.toString().trim() != ''){
  111. s += Ext.getCmp('text'+i).value + '==###==';
  112. }
  113. }
  114. me.value = s;
  115. }
  116. }
  117. }));
  118. me.addItem(Ext.create('Ext.button.Button', {
  119. text: '清&nbsp;空',
  120. name: 'btn' + i,
  121. id: 'btn' + i,
  122. index: i,
  123. columnWidth: 0.05,
  124. handler: function(btn){
  125. Ext.getCmp('text'+btn.index).setValue('');
  126. }
  127. }));
  128. }
  129. } else {
  130. me.tfnumber = 3;
  131. for(var i=1; i<=me.tfnumber; i++){
  132. me.addItem(Ext.create('Ext.form.field.Text', {
  133. xtype: 'textfield',
  134. name: 'text' + i,
  135. id: 'text' + i,
  136. labelWidth: 50,
  137. columnWidth: 0.95,
  138. value: '',
  139. fieldLabel: '第&nbsp;' + i +'&nbsp;条',
  140. fieldStyle: 'background:#f0f0f0;border-bottom-style: 1px solid #8B8970;padding:2px 2px;vertical-align:middle;border-top:none;border-right:none;color:#CD661D;border-bottom-style:1px solid;border-left:none; ',
  141. listeners:{
  142. change: function(){
  143. var s = '';
  144. for(var i=1; i<=me.tfnumber; i++){
  145. if(Ext.getCmp('text'+i).value != null && Ext.getCmp('text'+i).value.toString().trim() != ''){
  146. s += Ext.getCmp('text'+i).value + '==###==';
  147. }
  148. }
  149. me.value = s;
  150. }
  151. }
  152. }));
  153. console.log(Ext.getCmp('text'+i));
  154. me.addItem(Ext.create('Ext.button.Button', {
  155. text: '清&nbsp;空',
  156. name: 'btn' + i,
  157. id: 'btn' + i,
  158. index: i,
  159. columnWidth: 0.05,
  160. handler: function(btn){
  161. Ext.getCmp('text'+btn.index).setValue('');
  162. }
  163. }));
  164. }
  165. }
  166. }
  167. },
  168. addItem: function(item){
  169. this.add(item);
  170. }
  171. });