CustomForm.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  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','core.button.FormBook','core.form.CheckBoxGroup',
  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 != 'F') {
  44. grid.down('erpDbfindButton').setDisabled(false);
  45. grid.down('erpComboButton').setDisabled(true);
  46. }else if(record && record.data.fd_type == 'C') {
  47. grid.down('erpComboButton').setDisabled(false);
  48. grid.down('erpDbfindButton').setDisabled(true);
  49. }else {
  50. grid.down('erpComboButton').setDisabled(true);
  51. grid.down('erpDbfindButton').setDisabled(true);
  52. }
  53. }
  54. },
  55. 'erpAddButton': {
  56. click: function(){
  57. me.FormUtil.onAdd('addForm', '新增Form', 'jsps/ma/form.jsp');
  58. }
  59. },
  60. /*'checkcolumn[dataIndex=fd_dbfind]': {
  61. checkchange: function(cm, rIdx, val){
  62. if(val) {
  63. var grid = cm.up('grid'),
  64. record = grid.store.getAt(rIdx);
  65. grid.selModel.select(record);
  66. }
  67. }
  68. },*/
  69. 'erpDeleteDetailButton': {
  70. afterrender: function(btn){
  71. btn.ownerCt.add({
  72. xtype:'erpDbfindButton'
  73. });
  74. btn.ownerCt.add({
  75. xtype:'erpComboButton'
  76. });
  77. }
  78. },
  79. /**
  80. * 下拉框设置
  81. */
  82. 'erpComboButton': {
  83. click: function(btn){
  84. var record = btn.ownerCt.ownerCt.selModel.lastSelected;
  85. if(record && record.data.fd_type == 'C') {
  86. btn.comboSet(Ext.getCmp('fo_caller').value, record.data.fd_field,me);
  87. }
  88. }
  89. },
  90. /**
  91. * DBFind设置
  92. */
  93. 'erpDbfindButton': {
  94. click: function(btn){
  95. var record = btn.ownerCt.ownerCt.selModel.lastSelected;
  96. if(record && record.data.fd_dbfind != 'F') {
  97. btn.dbfindSetUI(Ext.getCmp('fo_caller').value, record.data.fd_field,me);
  98. }
  99. }
  100. },
  101. 'erpFormPanel textfield[name=fo_table]': {
  102. /*change: function(field){
  103. Ext.getCmp('fo_caller').setValue(field.value);
  104. var grid = Ext.getCmp('grid'),items = grid.store.data.items;
  105. Ext.Array.each(items, function(item){
  106. if(Ext.isEmpty(item.data['fd_table'])) {
  107. item.set('fd_table', field.value);
  108. }
  109. });
  110. field.setValue(field.value.toUpperCase());
  111. }*/
  112. },
  113. 'erpFormPanel textfield[name=fo_detailtable]': {
  114. change: function(field){
  115. field.setValue(field.value.toUpperCase());
  116. }
  117. },
  118. 'multidbfindtrigger': {
  119. render: function(field){
  120. if(field.name == 'fo_button4add' || field.name == 'fo_button4rw'){
  121. var fields = Ext.Object.getKeys($I18N.common.button);
  122. var values = Ext.Object.getValues($I18N.common.button);
  123. var data = [];
  124. Ext.each(fields, function(f, index){
  125. var o = {};
  126. o.value = fields[index];
  127. o.display = values[index];
  128. data.push(o);
  129. });
  130. field.multistore = {fields:['display', 'value'],data:data};
  131. }
  132. }
  133. },
  134. 'multidbfindtrigger[name=fd_field]': {
  135. focus: function(t){
  136. t.setHideTrigger(false);
  137. t.setReadOnly(false);
  138. var record = Ext.getCmp('grid').selModel.getLastSelected();
  139. var code = record.data['fd_table'];
  140. if(code == null || code == ''){
  141. showError("请先选择表单!");
  142. t.setHideTrigger(true);
  143. t.setReadOnly(true);
  144. } else {
  145. t.dbBaseCondition = "ddd_tablename='" + code + "'";
  146. }
  147. },
  148. aftertrigger: function(t) {
  149. var f = Ext.getCmp('fo_table');
  150. var record = Ext.getCmp('grid').selModel.getLastSelected();
  151. var a = record.data['fd_table'];
  152. if(Ext.isEmpty(f.value) && !Ext.isEmpty(a)) {
  153. f.setValue(a.toUpperCase());
  154. }
  155. }
  156. }
  157. });
  158. },
  159. getForm: function(btn){
  160. return btn.ownerCt.ownerCt;
  161. },
  162. onChange: function(field, value){
  163. field.setValue(value);
  164. if(value == 'C'){
  165. }
  166. },
  167. save: function(){
  168. //默认流程CAllER 和页面caller一致;
  169. var flowcaller=Ext.getCmp('fo_flowcaller');
  170. if(!flowcaller.value){
  171. flowcaller.setValue(Ext.getCmp('fo_caller').value);
  172. }
  173. Ext.getCmp('fo_detailmainkeyfield').setValue("");
  174. var grid = Ext.getCmp('grid'),items = grid.store.data.items,added = new Array();
  175. Ext.each(items, function(item){
  176. d = item.data;
  177. if(d['deploy'] == true) {
  178. if(d['fd_field']=='CT_CALLER'){
  179. d['fd_defaultvalue']=Ext.getCmp('fo_caller').value;
  180. }
  181. if(d['fd_field']=='ct_sourcekind'){
  182. d['fd_defaultvalue']=Ext.getCmp('fo_title').value;
  183. }
  184. added.push(grid.removeKey(d, 'deploy'));
  185. }
  186. });
  187. if(added.length > 0) {
  188. var form = Ext.getCmp('form');
  189. this.FormUtil.getSeqId(form);
  190. //单表界面,清空FORM中从表配置信息
  191. var formStore=form.getValues();
  192. formStore.fo_button4rw="erpAddButton#erpUpdateButton#erpDeleteButton#erpSubmitButton" +
  193. "#erpResSubmitButton#erpAuditButton#erpResAuditButton#erpCloseButton";
  194. formStore.fo_detailkeyfield='';
  195. formStore.fo_detailseq='';
  196. formStore.fo_detailstatus='';
  197. formStore.fo_detailstatuscode='';
  198. formStore.fo_detailtable='';
  199. formStore.fo_detaildetnofield='';
  200. this.FormUtil.save(formStore, Ext.encode(added));
  201. } else {
  202. showError('请至少配置一个有效字段!');
  203. }
  204. },
  205. update: function(){
  206. var grid = Ext.getCmp('grid'), items = grid.store.data.items;
  207. var field = Ext.getCmp('fo_table'), id = Ext.getCmp('fo_id').value;
  208. Ext.Array.each(items, function(item){
  209. if(item.data['fd_field'] != null && item.data['fd_field'] != ''){
  210. item.set('fd_table', field.value);
  211. item.set('fd_foid', id);
  212. }
  213. });
  214. var me = this;
  215. if(! me.FormUtil.checkForm()){
  216. return;
  217. }
  218. var dd = grid.getChange();
  219. me.FormUtil.update(Ext.getCmp('form').getValues(), Ext.encode(dd.added),
  220. Ext.encode(dd.updated), Ext.encode(dd.deleted));
  221. }
  222. });