DataList.js 5.4 KB

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