Form.js 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.ma.Form', {
  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. 'ma.Form','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. 'erpSyncButton': {
  18. afterrender: function(btn){
  19. btn.autoClearCache = true;
  20. }
  21. },
  22. 'erpSaveButton': {
  23. click: function(btn){
  24. me.save();
  25. }
  26. },
  27. 'erpUpdateButton': {
  28. click: function(btn){
  29. me.update();
  30. }
  31. },
  32. 'erpDeleteButton': {
  33. click: function(btn){
  34. me.FormUtil.onDelete(Ext.getCmp('fo_id').value);
  35. }
  36. },
  37. 'erpCloseButton': {
  38. click: function(btn){
  39. this.FormUtil.beforeClose(this);
  40. }
  41. },
  42. 'mygrid':{
  43. select: function(selModel, record){
  44. this.GridUtil.onGridItemClick(selModel, record);
  45. var grid=Ext.getCmp('grid');
  46. if(record&&record.data.fd_dbfind)
  47. grid.down('erpDbfindButton').setDisabled(false);
  48. else if(record && record.data.fd_type == 'C')
  49. grid.down('erpComboButton').setDisabled(false);
  50. else {
  51. grid.down('erpComboButton').setDisabled(true);
  52. grid.down('erpDbfindButton').setDisabled(true);
  53. }
  54. }
  55. },
  56. 'erpAddButton': {
  57. click: function(){
  58. me.FormUtil.onAdd('addForm', '新增Form', 'jsps/ma/form.jsp');
  59. }
  60. },
  61. 'checkcolumn[dataIndex=fd_dbfind]': {
  62. checkchange: function(cm, rIdx, val){
  63. if(val) {
  64. var grid = cm.up('grid'),
  65. record = grid.store.getAt(rIdx);
  66. grid.selModel.select(record);
  67. }
  68. }
  69. },
  70. 'erpDeleteDetailButton': {
  71. afterrender: function(btn){
  72. btn.ownerCt.add({
  73. xtype:'erpDbfindButton',
  74. });
  75. btn.ownerCt.add({
  76. xtype:'erpComboButton',
  77. });
  78. }
  79. },
  80. /**
  81. * 下拉框设置
  82. */
  83. 'erpComboButton': {
  84. click: function(btn){
  85. var record = btn.ownerCt.ownerCt.selModel.lastSelected;
  86. if(record && record.data.fd_type == 'C') {
  87. btn.comboSet(Ext.getCmp('fo_caller').value, record.data.fd_field,me);
  88. }
  89. }
  90. },
  91. /**
  92. * DBFind设置
  93. */
  94. 'erpDbfindButton': {
  95. click: function(btn){
  96. var record = btn.ownerCt.ownerCt.selModel.lastSelected;
  97. if(record && record.data.fd_dbfind) {
  98. btn.dbfindSetUI(Ext.getCmp('fo_caller').value, record.data.fd_field,me);
  99. }
  100. }
  101. },
  102. 'erpFormPanel textfield[name=fo_table]': {
  103. /*change: function(field){
  104. Ext.getCmp('fo_caller').setValue(field.value);
  105. var grid = Ext.getCmp('grid'),items = grid.store.data.items;
  106. Ext.Array.each(items, function(item){
  107. if(Ext.isEmpty(item.data['fd_table'])) {
  108. item.set('fd_table', field.value);
  109. }
  110. });
  111. field.setValue(field.value.toUpperCase());
  112. }*/
  113. },
  114. 'erpFormPanel textfield[name=fo_detailtable]': {
  115. change: function(field){
  116. field.setValue(field.value.toUpperCase());
  117. }
  118. },
  119. 'multidbfindtrigger': {
  120. render: function(field){
  121. if(field.name == 'fo_button4add' || field.name == 'fo_button4rw'){
  122. var fields = Ext.Object.getKeys($I18N.common.button);
  123. var values = Ext.Object.getValues($I18N.common.button);
  124. var data = [];
  125. Ext.each(fields, function(f, index){
  126. var o = {};
  127. o.value = fields[index];
  128. o.display = values[index];
  129. data.push(o);
  130. });
  131. field.multistore = {fields:['display', 'value'],data:data};
  132. }
  133. }
  134. },
  135. 'multidbfindtrigger[name=fd_field]': {
  136. focus: function(t){
  137. t.setHideTrigger(false);
  138. t.setReadOnly(false);
  139. var record = Ext.getCmp('grid').selModel.getLastSelected();
  140. var code = record.data['fd_table'];
  141. if(code == null || code == ''){
  142. showError("请先选择表单!");
  143. t.setHideTrigger(true);
  144. t.setReadOnly(true);
  145. } else {
  146. t.dbBaseCondition = "ddd_tablename='" + code + "'";
  147. }
  148. },
  149. aftertrigger: function(t) {
  150. var f = Ext.getCmp('fo_table');
  151. var record = Ext.getCmp('grid').selModel.getLastSelected();
  152. var a = record.data['fd_table'];
  153. if(Ext.isEmpty(f.value) && !Ext.isEmpty(a)) {
  154. f.setValue(a.toUpperCase());
  155. }
  156. }
  157. },
  158. 'dbfindtrigger[name=fd_table]': {
  159. aftertrigger: function(t) {
  160. t.autoDbfind = false;
  161. var f = Ext.getCmp('fo_table');
  162. if(Ext.isEmpty(f.value) && !Ext.isEmpty(t.value)) {
  163. f.setValue(t.value.toUpperCase());
  164. }
  165. }
  166. },
  167. 'dbfindtrigger[name=fo_keyfield]': {
  168. afterrender: function(t){
  169. t.autoDbfind = false;
  170. t.dbKey = "fo_table";
  171. t.mappingKey = "ddd_tablename";
  172. t.dbMessage = "请先选择表名!";
  173. }
  174. },
  175. 'dbfindtrigger[name=fo_codefield]': {
  176. afterrender: function(t){
  177. t.autoDbfind = false;
  178. t.dbKey = "fo_table";
  179. t.mappingKey = "ddd_tablename";
  180. t.dbMessage = "请先选择表名!";
  181. }
  182. },
  183. 'dbfindtrigger[name=fo_statusfield]': {
  184. afterrender: function(t){
  185. t.autoDbfind = false;
  186. t.dbKey = "fo_table";
  187. t.mappingKey = "ddd_tablename";
  188. t.dbMessage = "请先选择表名!";
  189. }
  190. },
  191. 'dbfindtrigger[name=fo_statuscodefield]': {
  192. afterrender: function(t){
  193. t.autoDbfind = false;
  194. t.dbKey = "fo_table";
  195. t.mappingKey = "ddd_tablename";
  196. t.dbMessage = "请先选择表名!";
  197. }
  198. },
  199. 'dbfindtrigger[name=fo_detailkeyfield]': {
  200. afterrender: function(t){
  201. t.autoDbfind = false;
  202. t.dbKey = "fo_detailtable";
  203. t.mappingKey = "ddd_tablename";
  204. t.dbMessage = "请先选择从表名!";
  205. }
  206. },
  207. 'dbfindtrigger[name=fo_detailmainkeyfield]': {
  208. afterrender: function(t){
  209. t.autoDbfind = false;
  210. t.dbKey = "fo_detailtable";
  211. t.mappingKey = "ddd_tablename";
  212. t.dbMessage = "请先选择从表名!";
  213. }
  214. },
  215. 'dbfindtrigger[name=fo_detailstatuscode]': {
  216. afterrender: function(t){
  217. t.autoDbfind = false;
  218. t.dbKey = "fo_detailtable";
  219. t.mappingKey = "ddd_tablename";
  220. t.dbMessage = "请先选择从表名!";
  221. }
  222. },
  223. 'dbfindtrigger[name=fo_detailstatus]': {
  224. afterrender: function(t){
  225. t.autoDbfind = false;
  226. t.dbKey = "fo_detailtable";
  227. t.mappingKey = "ddd_tablename";
  228. t.dbMessage = "请先选择从表名!";
  229. }
  230. },
  231. 'dbfindtrigger[name=fo_detaildetnofield]': {
  232. afterrender: function(t){
  233. t.autoDbfind = false;
  234. t.dbKey = "fo_detailtable";
  235. t.mappingKey = "ddd_tablename";
  236. t.dbMessage = "请先选择从表名!";
  237. }
  238. }
  239. });
  240. },
  241. getForm: function(btn){
  242. return btn.ownerCt.ownerCt;
  243. },
  244. onChange: function(field, value){
  245. field.setValue(value);
  246. if(value == 'C'){
  247. }
  248. },
  249. save: function(){
  250. //序列号
  251. Ext.getCmp('fo_seq').setValue(Ext.getCmp('fo_table').value.toUpperCase() + '_SEQ');
  252. var dt = Ext.getCmp('fo_detailtable').value;
  253. if(dt != null && dt != ''){
  254. Ext.getCmp('fo_detailseq').setValue(dt.toUpperCase() + '_SEQ');
  255. var dm = Ext.getCmp('fo_detailmainkeyfield').value;
  256. if(dm == null || dm == ''){
  257. showError("请选择从表与主表关联的字段!");return;
  258. }
  259. }
  260. var grid = Ext.getCmp('grid'), items = grid.store.data.items, dd = new Array(), d = null;
  261. var field = Ext.getCmp('fo_table');
  262. Ext.Array.each(items, function(item){
  263. d = item.data;
  264. if(!Ext.isEmpty(d['fd_field'])){
  265. if(Ext.isEmpty(d['fd_table']))
  266. item.set('fd_table', field.value);
  267. d.fd_readonly = d.fd_readonly ? 'T' : 'F';
  268. d.fd_dbfind = d.fd_dbfind ? 'T' : 'F';
  269. d.fd_allowblank = d.fd_allowblank ? 'T' : 'F';
  270. dd.push(d);
  271. }
  272. });
  273. if(dd.length > 0) {
  274. var form = Ext.getCmp('form');
  275. this.FormUtil.getSeqId(form);
  276. this.FormUtil.save(form.getValues(), Ext.encode(dd));
  277. } else {
  278. showError('请至少配置一个有效字段!');
  279. }
  280. },
  281. update: function(){
  282. var grid = Ext.getCmp('grid');
  283. var field = Ext.getCmp('fo_table'), id = Ext.getCmp('fo_id').value;
  284. grid.store.each(function(item){
  285. if(item.get('deploy') && !Ext.isEmpty(item.get('fd_field'))){
  286. if(item.get('fd_foid') != id)
  287. item.set('fd_foid', id);
  288. if(Ext.isEmpty(item.get('fd_table')))
  289. item.set('fd_table', field.value);
  290. }
  291. });
  292. var me = this;
  293. if(! me.FormUtil.checkForm()){
  294. return;
  295. }
  296. var dd = grid.getChange();
  297. me.FormUtil.update(Ext.getCmp('form').getValues(), Ext.encode(dd.added),
  298. Ext.encode(dd.updated), Ext.encode(dd.deleted));
  299. },
  300. });