AccountParaSetup.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.co.cost.AccountParaSetup', {
  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. 'co.cost.AccountParaSetup','core.grid.Panel4',
  9. 'core.button.Save','core.button.ResPost',
  10. 'core.trigger.DbfindTrigger','core.toolbar.Toolbar3'
  11. ],
  12. init:function(){
  13. var me = this;
  14. me.gridLastSelected = null;
  15. this.control({
  16. 'erpGridPanel4': {
  17. itemclick: this.onGridItemClick,
  18. afterrender: function(grid){
  19. grid.plugins[0].on('beforeedit', function(e){
  20. if(e.field == 'ps_value'){//监听ps_value
  21. var record = e.record;
  22. var column = e.column;
  23. switch(record.data['ps_fieldtype']){
  24. case "B"://boolean
  25. if(column.xtype == 'booleancolumn'){
  26. break;
  27. }
  28. column.setEditor(new Ext.form.field.ComboBox({
  29. value: e.value,
  30. store: Ext.create('Ext.data.Store', {
  31. fields: ['display', 'value'],
  32. data : [
  33. {"display": $I18N.common.form.yes, "value": 'true'},
  34. {"display": $I18N.common.form.no, "value": 'false'}
  35. ]
  36. }),
  37. displayField: 'display',
  38. valueField: 'value',
  39. queryMode: 'local',
  40. value: 'false',
  41. hideTrigger: false
  42. }));
  43. column.renderer = function(val){
  44. if(column.xtype == 'booleancolumn'){
  45. if(val == 'true'){
  46. return $I18N.common.form.yes;
  47. } else {
  48. return $I18N.common.form.no;
  49. }
  50. }
  51. return val;
  52. };
  53. column.xtype = 'booleancolumn';
  54. break;
  55. case "N"://number
  56. if(column.xtype == 'textcolumn'){
  57. break;
  58. }
  59. column.setEditor(new Ext.form.field.Number({value: e.value}));
  60. column.xtype = 'textcolumn';
  61. break;
  62. case "D"://date
  63. if(column.xtype == 'datecolumn'){
  64. break;
  65. }
  66. column.renderer = function(val){
  67. if(record.data['ps_fieldtype'] == 'D' && column.xtype == 'datecolumn'){
  68. val = (val == null || val == '') ? new Date() : new Date(val);
  69. val = Ext.Date.toString(val);
  70. if(record.data['ps_value'] != val){
  71. record.set('ps_value', val);
  72. }
  73. }
  74. return val;
  75. };
  76. column.setEditor(new Ext.form.field.Date({value: e.value || new Date()}));
  77. column.xtype = 'datecolumn';
  78. //
  79. break;
  80. case "S"://string
  81. if(column.xtype == 'textcolumn'){
  82. break;
  83. }
  84. column.setEditor(new Ext.form.field.Text({value: e.value}));
  85. column.xtype = 'textcolumn';
  86. break;
  87. case "F"://dbfind
  88. // if(column.xtype == 'dbfindcolumn'){
  89. // break;
  90. // }
  91. column.setEditor(new erp.view.core.trigger.DbfindTrigger({value: e.value}));
  92. column.xtype = 'dbfindcolumn';
  93. break;
  94. case "C"://下拉框
  95. if(column.xtype == 'combocolumn'){
  96. break;
  97. }
  98. column.setEditor(new Ext.form.field.ComboBox({
  99. displayField: 'display',
  100. valueField: 'value',
  101. queryMode: 'local',
  102. store: Ext.create('Ext.data.Store', {
  103. fields: ['display', 'value'],
  104. data: [{
  105. display: 'S-001-002',
  106. value: 'S-001-002'
  107. },{
  108. display: 'S-001-003',
  109. value: 'S-001-003'
  110. }]
  111. }),
  112. value: e.value
  113. }));
  114. column.xtype = 'combocolumn';
  115. break;
  116. }
  117. }
  118. });
  119. }
  120. },
  121. 'erpSaveButton': {
  122. click: function(btn){
  123. this.beforeUpdate();
  124. }
  125. }
  126. });
  127. },
  128. onGridItemClick: function(selModel, record){//grid行选择
  129. /* this.gridLastSelected = record;
  130. var grid = Ext.getCmp('grid');
  131. if(record.data[grid.necessaryField] == null || record.data[grid.necessaryField] == ''){
  132. this.gridLastSelected.findable = true;//空数据可以在输入完code,并移开光标后,自动调出该条数据
  133. } else {
  134. this.gridLastSelected.findable = false;
  135. }
  136. this.GridUtil.onGridItemClick(selModel, record);*/
  137. },
  138. getForm: function(btn){
  139. return btn.ownerCt.ownerCt;
  140. },
  141. beforeSave: function(){
  142. this.FormUtil.beforeSave(this);
  143. },
  144. beforeUpdate: function(){
  145. Array.prototype.contains = function(obj) {
  146. var i = this.length;
  147. while (i--) {
  148. if (this[i] === obj) {
  149. return true;
  150. }
  151. }
  152. return false;
  153. };
  154. var grid = Ext.getCmp('grid');
  155. var items = grid.store.data.items;
  156. // console.log(items);
  157. var rowNo = [];
  158. Ext.each(items,function(item,index){
  159. Ext.each(grid.columns, function(c){
  160. if(item.data[c.dataIndex]!=item.raw[c.dataIndex])
  161. {
  162. if(!rowNo.contains(index+1)){
  163. rowNo.push(index+1);
  164. }
  165. }
  166. });
  167. });
  168. if(rowNo.length==0){
  169. Ext.Msg.alert("你未对数据做任何修改!");
  170. return;
  171. }
  172. else{
  173. var result = confirm("第"+rowNo.toString()+"行已经修改,确定更新?");
  174. if(result){
  175. var index = 0;
  176. var jsonGridData = new Array();
  177. var s = grid.getStore().data.items;
  178. for(var i=0;i<s.length;i++){//将grid里面各行的数据获取并拼成jsonGridData
  179. var data = s[i].data;
  180. jsonGridData[index++] = Ext.JSON.encode(data);
  181. }
  182. this.update(jsonGridData.toString());
  183. }
  184. else return;
  185. }
  186. },
  187. update:function(param){
  188. Ext.Ajax.request({
  189. url: basePath+'fa/ars/updateAccountParaSetup.action',
  190. params:{
  191. param:param
  192. },
  193. success: function(response){
  194. var text = response.responseText;
  195. result = Ext.decode(text);
  196. if(result.success){
  197. Ext.Msg.alert("提示","操作成功!"); // 尚未国际化,以后订正。
  198. }
  199. }
  200. });
  201. }
  202. });