UseableReplace.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. Ext.define('erp.view.core.button.UseableReplace',{
  2. extend: 'Ext.Button',
  3. alias: 'widget.erpUseableReplaceButton',
  4. text: $I18N.common.button.erpUseableReplaceButton,
  5. iconCls: 'x-button-icon-check',
  6. cls: 'x-btn-gray',
  7. id: 'erpUseableReplaceButton',
  8. initComponent : function(){
  9. this.callParent(arguments);
  10. },
  11. width: 100,
  12. requires:['erp.view.pm.mps.MrpReplaceGrid'],
  13. handler:function(){
  14. var lastselected=Ext.getCmp('batchDealGridPanel').selModel.lastSelected;
  15. var formvalues=Ext.getCmp('dealform').getValues();
  16. if(!lastselected){
  17. Ext.Msg.alert('提示','请选择查看行');
  18. }
  19. var value=lastselected.data.ad_mdid;
  20. if(lastselected){
  21. Ext.create('Ext.window.Window', {
  22. title: '可用替代料',
  23. height:400,
  24. width: 908,
  25. id:'win',
  26. layout: 'fit',
  27. items: {
  28. xtype: 'MrpReplaceGrid',
  29. border: false,
  30. caller:'MRPReplace!Application',
  31. condition:"mr_mdid="+value,
  32. id:'replacegrid',
  33. multiselected:new Array(),
  34. plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
  35. clicksToEdit: 1
  36. })],
  37. getMultiSelected: function(){
  38. var grid = this;
  39. var items = grid.selModel.getSelection();
  40. Ext.each(items, function(item, index){
  41. if(this.data.mr_id != null && this.data.mr_id != ''
  42. && this.data.mr_id != '0' && this.data.mr_id != 0&&this.data.mr_realqty!='0'&& this.data.mr_realqty != ''){
  43. grid.multiselected.push(item);
  44. }
  45. });
  46. return this.unique(grid.multiselected);
  47. },
  48. unique: function(items) {
  49. var d = new Object();
  50. Ext.Array.each(items, function(item){
  51. d[item.id] = item;
  52. });
  53. return Ext.Object.getValues(d);
  54. },
  55. selModel: Ext.create('Ext.selection.CheckboxModel',{
  56. ignoreRightMouseSelection : false,
  57. listeners:{
  58. selectionchange:function(selectionModel, selected, options){
  59. }
  60. },
  61. getEditor: function(){
  62. return null;
  63. },
  64. onRowMouseDown: function(view, record, item, index, e) {//改写的onRowMouseDown方法
  65. var me = Ext.getCmp('replacegrid');
  66. var bool = true;
  67. var items = me.selModel.getSelection();
  68. Ext.each(items, function(item, index){
  69. if(this.index == record.index){
  70. bool = false;
  71. me.selModel.deselect(record);
  72. Ext.Array.remove(items, item);
  73. Ext.Array.remove(me.multiselected, record);
  74. }
  75. });
  76. Ext.each(me.multiselected, function(item, index){
  77. items.push(item);
  78. });
  79. me.selModel.select(items);
  80. if(bool){
  81. view.el.focus();
  82. var checkbox = item.childNodes[0].childNodes[0].childNodes[0];
  83. if(checkbox.getAttribute && checkbox.getAttribute('class') == 'x-grid-row-checker'){
  84. me.multiselected.push(record);
  85. items.push(record);
  86. me.selModel.select(items);
  87. } else {
  88. me.selModel.deselect(record);
  89. Ext.Array.remove(me.multiselected, record);
  90. }
  91. }
  92. },
  93. onHeaderClick: function(headerCt, header, e) {
  94. if (header.isCheckerHd) {
  95. e.stopEvent();
  96. var isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');
  97. if (isChecked) {
  98. this.deselectAll(true);
  99. var grid = Ext.getCmp('replacegrid');
  100. this.deselect(grid.multiselected);
  101. grid.multiselected = new Array();
  102. var els = Ext.select('div[@class=x-grid-row-checker-checked]').elements;
  103. Ext.each(els, function(el, index){
  104. el.setAttribute('class','x-grid-row-checker');
  105. });
  106. header.el.removeCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个
  107. } else {
  108. var grid = Ext.getCmp('replacegrid');
  109. this.deselect(grid.multiselected);
  110. grid.multiselected = new Array();
  111. var els = Ext.select('div[@class=x-grid-row-checker-checked]').elements;
  112. Ext.each(els, function(el, index){
  113. el.setAttribute('class','x-grid-row-checker');
  114. });
  115. this.selectAll(true);
  116. header.el.addCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个
  117. }
  118. }
  119. }
  120. })
  121. },
  122. buttonAlign:'center',
  123. buttons:[{
  124. xtype:'button',
  125. iconCls: 'x-button-icon-turn',
  126. cls: 'x-btn-gray',
  127. text:'下达',
  128. handler:function(){
  129. var records=Ext.getCmp('replacegrid').getMultiSelected();
  130. var data = new Array();
  131. var bool = false;
  132. var grid = Ext.getCmp('replacegrid');
  133. Ext.each(records, function(record, index){
  134. if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  135. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)){
  136. bool = true;
  137. var o = new Object();
  138. if(grid.keyField){
  139. o[grid.keyField] = record.data[grid.keyField];
  140. } else {
  141. params.id[index] = record.data[form.fo_detailMainKeyField];
  142. }
  143. if(grid.toField){
  144. Ext.each(grid.toField, function(f, index){
  145. var v = Ext.getCmp(f).value;
  146. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  147. o[f] = v;
  148. }
  149. });
  150. }
  151. if(grid.necessaryFields){
  152. Ext.each(grid.necessaryFields, function(f, index){
  153. var v = record.data[f];
  154. if(Ext.isDate(v)){
  155. v = Ext.Date.toString(v);
  156. }
  157. o[f] = v;
  158. });
  159. }
  160. data.push(o);
  161. }
  162. });
  163. if(bool){
  164. //下达操作
  165. var qty=lastselected.data.ad_qty;
  166. var yqty=lastselected.data.ad_yqty;
  167. var realcount=0;
  168. for(var i=0;i<data.length;i++){
  169. realcount+=data.mr_realqty;
  170. }
  171. if(realcount>(qty-yqty)){
  172. Ext.Msg.alert('提示','下达总数不能超过'+(qty-yqty));
  173. }else {
  174. var params = new Object();
  175. params.data = unescape(Ext.JSON.encode(data).replace(/\\/g,"%"));
  176. params.purchasecode=formvalues.pu_code;
  177. params.apdata=unescape(Ext.JSON.encode(lastselected.data).replace(/\\/g,"%"));
  178. ; Ext.Ajax.request({
  179. method:'post',
  180. params:params,
  181. url:basePath+'pm/mps/turnReplaceProd.action',
  182. callback : function(options,success,response){
  183. var localJson = new Ext.decode(response.responseText);
  184. if(localJson.exceptionInfo){
  185. var str = localJson.exceptionInfo;
  186. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){
  187. str = str.replace('AFTERSUCCESS', '');
  188. grid.multiselected = new Array();
  189. Ext.getCmp('dealform').onQuery();
  190. }
  191. showError(str);return;
  192. }
  193. if(localJson.success){
  194. if(localJson.log){
  195. showMessage("提示", localJson.log);
  196. Ext.getCmp('dealform').onQuery();
  197. btn.ownerCt.ownerCt.close();
  198. }
  199. }
  200. }
  201. });
  202. }
  203. }
  204. }
  205. },{
  206. xtype:'button',
  207. text: $I18N.common.button.erpCloseButton,
  208. iconCls: 'x-button-icon-close',
  209. cls: 'x-btn-gray',
  210. width: 60,
  211. style: {
  212. marginLeft: '10px'
  213. },
  214. handler:function(btn){
  215. btn.ownerCt.ownerCt.close();
  216. }
  217. }]
  218. }).show();
  219. }else{
  220. Ext.Msg.alert('提示','请先选择查看记录或选中记录不存在替代料!');
  221. }
  222. }
  223. });