DataList.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.ma.DataList', {
  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.DataList','core.form.Panel','ma.MyDataList',
  9. 'core.button.Add','core.button.Save','core.button.Close','core.button.Sync','core.button.ComboButton',
  10. 'core.button.Upload','core.button.Update','core.button.Delete','core.button.DeleteDetail',
  11. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.toolbar.Toolbar', 'core.grid.YnColumn'
  12. ],
  13. init:function(){
  14. var me = this;
  15. this.control({
  16. 'erpSyncButton': {
  17. afterrender: function(btn){
  18. btn.autoClearCache = true;
  19. }
  20. },
  21. 'erpSaveButton': {
  22. click: function(btn){
  23. var f=me.check('save');
  24. if(f){
  25. this.FormUtil.beforeSave(me);
  26. };
  27. }
  28. },
  29. 'erpUpdateButton': {
  30. click: function(btn){
  31. var f=me.check('update');
  32. if(f){
  33. me.save();
  34. }
  35. }
  36. },
  37. 'erpAddButton': {
  38. click: function(){
  39. me.FormUtil.onAdd('addDataList', '新增DataList配置', 'jsps/ma/dataList.jsp');
  40. }
  41. },
  42. 'erpCloseButton': {
  43. click: function(btn){
  44. this.FormUtil.beforeClose(me);
  45. }
  46. },
  47. 'mydatalist': {
  48. itemclick: function(selModel, record){
  49. this.GridUtil.onGridItemClick(selModel, record);
  50. },
  51. select:function(selModel,record){
  52. var grid=selModel.view.ownerCt.ownerCt;
  53. if(record && record.data.dld_fieldtype == 'C'){
  54. grid.down('erpComboButton').setDisabled(false);
  55. }else {
  56. grid.down('erpComboButton').setDisabled(true);
  57. }
  58. }
  59. },
  60. 'erpFormPanel textfield[name=dl_caller]': {
  61. change: function(field){//主表dl_caller值变更时,对应从表字段也变更
  62. var grid = Ext.getCmp('grid');
  63. Ext.Array.each(grid.store.data.items, function(item){
  64. item.set('dld_caller',field.value);
  65. });
  66. }
  67. },
  68. 'erpFormPanel textfield[name=dl_tablename]': {
  69. change: function(field){//主表dl_tablename值变更时,对应从表字段也变更
  70. var grid = Ext.getCmp('grid');
  71. Ext.Array.each(grid.store.data.items, function(item){
  72. item.set('dld_table',field.value);
  73. });
  74. }
  75. },
  76. 'erpComboButton': {
  77. click: function(btn){
  78. var grid = btn.ownerCt.ownerCt;
  79. var record = grid.selModel.lastSelected;
  80. if(record) {
  81. if(record.data.dld_fieldtype == 'C') {
  82. btn.comboSet(whoami, record.data.dld_field);
  83. }
  84. }
  85. }
  86. },
  87. '#erpSetComboButton': {
  88. click: function(btn) {
  89. var grid = btn.ownerCt.ownerCt,
  90. record = grid.selModel.lastSelected;
  91. if(record && record.get('dld_fieldtype') == 'C') {
  92. warnMsg('确定重置下拉框数据?', function(b){
  93. if(b == 'ok' || b == 'yes') {
  94. Ext.Ajax.request({
  95. url: basePath + 'ma/resetCombo.action',
  96. params: {
  97. caller: whoami,
  98. field: record.get('dld_field')
  99. },
  100. callback: function(opt, s, r) {
  101. if(s) {
  102. var rs = Ext.decode(r.responseText);
  103. if(rs.error) {
  104. alert(rs.error);
  105. } else {
  106. alert('设置成功!');
  107. }
  108. }
  109. }
  110. });
  111. }
  112. });
  113. }
  114. }
  115. }
  116. });
  117. },
  118. check:function(type){//检查table主键中字段是否配置
  119. var keyField=Ext.getCmp('dl_keyfield').value;
  120. var keyArr=new Array();
  121. if(keyField != null && keyField != ''){
  122. if(keyField.indexOf('+') > 0) {
  123. var arr = keyField.split('+');
  124. Ext.Array.each(arr, function(r){
  125. ff = r.split('@');
  126. keyArr.push(ff[1]);
  127. });
  128. } else {
  129. keyArr.push(keyField);
  130. }
  131. }
  132. var items=Ext.getCmp('grid').store.data.items,dd= new Array(),flag=true;
  133. Ext.Array.each(items, function(item){
  134. d = item.data;
  135. if(type=='save'){
  136. if(!Ext.isEmpty(d['dld_field'])){
  137. dd.push(d);
  138. }
  139. }else if(type=='update'){
  140. if(d['deploy'] == true){
  141. dd.push(d);
  142. }
  143. }
  144. });
  145. if(dd.length > 0) {
  146. Ext.Array.each(keyArr,function(key){
  147. flag=false;
  148. for(var i=0;i<dd.length;i++){
  149. if(key==dd[i]['dld_field']){
  150. flag=true;
  151. break;
  152. }
  153. }
  154. if(!flag){
  155. showError('未配置table主键字段:'+key);
  156. return flag;
  157. }
  158. });
  159. } else {
  160. showError('请至少配置一个有效字段!');
  161. return false;
  162. }
  163. return flag;
  164. },
  165. getForm: function(btn){
  166. return btn.ownerCt.ownerCt;
  167. },
  168. save: function(){
  169. var detail = Ext.getCmp('grid'),records = detail.store.data.items;
  170. field = Ext.getCmp('dl_tablename'),val = field.value.split(' ')[0];
  171. Ext.Array.each(records, function(item){
  172. if(item.data['dld_field'] != null && item.data['dld_field'] != '' && Ext.isEmpty('dld_table')){
  173. item.set('dld_table', val);
  174. }
  175. });
  176. var me = this;
  177. if(! me.FormUtil.checkForm()){
  178. return;
  179. }
  180. var de = detail.getChange();
  181. me.FormUtil.update(Ext.getCmp('form').getValues(), Ext.encode(de.added),
  182. Ext.encode(de.updated), Ext.encode(de.deleted));
  183. }
  184. });