CustomForm.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.oa.custom.CustomForm', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. GridUtil: Ext.create('erp.util.GridUtil'),
  6. BaseUtil: Ext.create('erp.util.BaseUtil'),
  7. views:[
  8. 'oa.custom.CustomForm','oa.custom.CustomGrid','core.form.Panel','core.grid.Panel2','ma.MyGrid',
  9. 'core.button.UUListener','core.button.Sync',
  10. 'core.button.Add','core.button.Save','core.button.Close','core.button.Update','core.button.Delete','core.button.DeleteDetail',
  11. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.toolbar.Toolbar','core.trigger.MultiDbfindTrigger',
  12. 'core.grid.TfColumn','core.button.DbfindButton','core.button.ComboButton', 'core.form.YnField'
  13. ],
  14. init:function(){
  15. var me = this;
  16. this.control({
  17. 'erpSaveButton': {
  18. click: function(btn){
  19. me.save();
  20. }
  21. },
  22. 'erpCloseButton':{
  23. beforerender:function(btn){
  24. btn.handler=function(){
  25. parent.Ext.getCmp('singlewin').close();
  26. };
  27. }
  28. },
  29. 'erpUpdateButton': {
  30. click: function(btn){
  31. me.update();
  32. }
  33. },
  34. 'erpDeleteButton': {
  35. click: function(btn){
  36. me.FormUtil.onDelete(Ext.getCmp('fo_id').value);
  37. }
  38. },
  39. 'mygrid':{
  40. select: function(selModel, record){
  41. this.GridUtil.onGridItemClick(selModel, record);
  42. var grid=Ext.getCmp('grid');
  43. if(record&&record.data.fd_dbfind)
  44. grid.down('erpDbfindButton').setDisabled(false);
  45. else if(record && record.data.fd_type == 'C')
  46. grid.down('erpComboButton').setDisabled(false);
  47. else {
  48. grid.down('erpComboButton').setDisabled(true);
  49. grid.down('erpDbfindButton').setDisabled(true);
  50. }
  51. }
  52. },
  53. 'erpAddButton': {
  54. click: function(){
  55. me.FormUtil.onAdd('addForm', '新增Form', 'jsps/ma/form.jsp');
  56. }
  57. },
  58. 'checkcolumn[dataIndex=fd_dbfind]': {
  59. checkchange: function(cm, rIdx, val){
  60. if(val) {
  61. var grid = cm.up('grid'),
  62. record = grid.store.getAt(rIdx);
  63. grid.selModel.select(record);
  64. }
  65. }
  66. },
  67. 'erpDeleteDetailButton': {
  68. afterrender: function(btn){
  69. btn.ownerCt.add({
  70. xtype:'erpDbfindButton',
  71. });
  72. btn.ownerCt.add({
  73. xtype:'erpComboButton',
  74. });
  75. }
  76. },
  77. /**
  78. * 下拉框设置
  79. */
  80. 'erpComboButton': {
  81. click: function(btn){
  82. var record = btn.ownerCt.ownerCt.selModel.lastSelected;
  83. if(record && record.data.fd_type == 'C') {
  84. btn.comboSet(Ext.getCmp('fo_caller').value, record.data.fd_field,me);
  85. }
  86. }
  87. },
  88. /**
  89. * DBFind设置
  90. */
  91. 'erpDbfindButton': {
  92. click: function(btn){
  93. var record = btn.ownerCt.ownerCt.selModel.lastSelected;
  94. if(record && record.data.fd_dbfind) {
  95. btn.dbfindSetUI(Ext.getCmp('fo_caller').value, record.data.fd_field,me);
  96. }
  97. }
  98. },
  99. 'erpFormPanel textfield[name=fo_table]': {
  100. /*change: function(field){
  101. Ext.getCmp('fo_caller').setValue(field.value);
  102. var grid = Ext.getCmp('grid'),items = grid.store.data.items;
  103. Ext.Array.each(items, function(item){
  104. if(Ext.isEmpty(item.data['fd_table'])) {
  105. item.set('fd_table', field.value);
  106. }
  107. });
  108. field.setValue(field.value.toUpperCase());
  109. }*/
  110. },
  111. 'erpFormPanel textfield[name=fo_detailtable]': {
  112. change: function(field){
  113. field.setValue(field.value.toUpperCase());
  114. }
  115. },
  116. 'multidbfindtrigger': {
  117. render: function(field){
  118. if(field.name == 'fo_button4add' || field.name == 'fo_button4rw'){
  119. var fields = Ext.Object.getKeys($I18N.common.button);
  120. var values = Ext.Object.getValues($I18N.common.button);
  121. var data = [];
  122. Ext.each(fields, function(f, index){
  123. var o = {};
  124. o.value = fields[index];
  125. o.display = values[index];
  126. data.push(o);
  127. });
  128. field.multistore = {fields:['display', 'value'],data:data};
  129. }
  130. }
  131. },
  132. 'multidbfindtrigger[name=fd_field]': {
  133. focus: function(t){
  134. t.setHideTrigger(false);
  135. t.setReadOnly(false);
  136. var record = Ext.getCmp('grid').selModel.getLastSelected();
  137. var code = record.data['fd_table'];
  138. if(code == null || code == ''){
  139. showError("请先选择表单!");
  140. t.setHideTrigger(true);
  141. t.setReadOnly(true);
  142. } else {
  143. t.dbBaseCondition = "ddd_tablename='" + code + "'";
  144. }
  145. },
  146. aftertrigger: function(t) {
  147. var f = Ext.getCmp('fo_table');
  148. var record = Ext.getCmp('grid').selModel.getLastSelected();
  149. var a = record.data['fd_table'];
  150. if(Ext.isEmpty(f.value) && !Ext.isEmpty(a)) {
  151. f.setValue(a.toUpperCase());
  152. }
  153. }
  154. }
  155. });
  156. },
  157. getForm: function(btn){
  158. return btn.ownerCt.ownerCt;
  159. },
  160. onChange: function(field, value){
  161. field.setValue(value);
  162. if(value == 'C'){
  163. }
  164. },
  165. save: function(){
  166. //默认流程CAllER 和页面caller一致;
  167. var flowcaller=Ext.getCmp('fo_flowcaller');
  168. if(!flowcaller.value){
  169. flowcaller.setValue(Ext.getCmp('fo_caller').value);
  170. }
  171. Ext.getCmp('fo_detailmainkeyfield').setValue("");
  172. var grid = Ext.getCmp('grid');
  173. var dd = grid.getChange();
  174. if(dd.added.length > 0) {
  175. var form = Ext.getCmp('form');
  176. this.FormUtil.getSeqId(form);
  177. this.FormUtil.save(form.getValues(), Ext.encode(dd.added));
  178. } else {
  179. showError('请至少配置一个有效字段!');
  180. }
  181. },
  182. update: function(){
  183. var grid = Ext.getCmp('grid'), items = grid.store.data.items;
  184. var field = Ext.getCmp('fo_table'), id = Ext.getCmp('fo_id').value;
  185. Ext.Array.each(items, function(item){
  186. if(item.data['fd_field'] != null && item.data['fd_field'] != ''){
  187. item.set('fd_table', field.value);
  188. item.set('fd_foid', id);
  189. }
  190. });
  191. var me = this;
  192. if(! me.FormUtil.checkForm()){
  193. return;
  194. }
  195. var dd = grid.getChange();
  196. me.FormUtil.update(Ext.getCmp('form').getValues(), Ext.encode(dd.added),
  197. Ext.encode(dd.updated), Ext.encode(dd.deleted));
  198. },
  199. });