UseableReplace.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  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. console.log(grid.necessaryFields);
  134. Ext.each(records, function(record, index){
  135. if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  136. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)){
  137. bool = true;
  138. var o = new Object();
  139. if(grid.keyField){
  140. o[grid.keyField] = record.data[grid.keyField];
  141. } else {
  142. params.id[index] = record.data[form.fo_detailMainKeyField];
  143. }
  144. if(grid.toField){
  145. Ext.each(grid.toField, function(f, index){
  146. var v = Ext.getCmp(f).value;
  147. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  148. o[f] = v;
  149. }
  150. });
  151. }
  152. if(grid.necessaryFields){
  153. Ext.each(grid.necessaryFields, function(f, index){
  154. var v = record.data[f];
  155. if(Ext.isDate(v)){
  156. v = Ext.Date.toString(v);
  157. }
  158. o[f] = v;
  159. });
  160. }
  161. data.push(o);
  162. }
  163. });
  164. if(bool){
  165. //下达操作
  166. var qty=lastselected.data.ad_qty;
  167. var yqty=lastselected.data.ad_yqty;
  168. var realcount=0;
  169. for(var i=0;i<data.length;i++){
  170. realcount+=data.mr_realqty;
  171. }
  172. if(realcount>(qty-yqty)){
  173. Ext.Msg.alert('提示','下达总数不能超过'+(qty-yqty));
  174. }else {
  175. var params = new Object();
  176. params.data = unescape(Ext.JSON.encode(data).replace(/\\/g,"%"));
  177. params.purchasecode=formvalues.pu_code;
  178. params.apdata=unescape(Ext.JSON.encode(lastselected.data).replace(/\\/g,"%"));
  179. ; Ext.Ajax.request({
  180. method:'post',
  181. params:params,
  182. url:basePath+'pm/mps/turnReplaceProd.action',
  183. callback : function(options,success,response){
  184. var localJson = new Ext.decode(response.responseText);
  185. if(localJson.exceptionInfo){
  186. var str = localJson.exceptionInfo;
  187. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){
  188. str = str.replace('AFTERSUCCESS', '');
  189. grid.multiselected = new Array();
  190. Ext.getCmp('dealform').onQuery();
  191. }
  192. showError(str);return;
  193. }
  194. if(localJson.success){
  195. if(localJson.log){
  196. showMessage("提示", localJson.log);
  197. Ext.getCmp('dealform').onQuery();
  198. btn.ownerCt.ownerCt.close();
  199. }
  200. }
  201. }
  202. });
  203. }
  204. }
  205. }
  206. },{
  207. xtype:'button',
  208. text: $I18N.common.button.erpCloseButton,
  209. iconCls: 'x-button-icon-close',
  210. cls: 'x-btn-gray',
  211. width: 60,
  212. style: {
  213. marginLeft: '10px'
  214. },
  215. handler:function(btn){
  216. btn.ownerCt.ownerCt.close();
  217. }
  218. }]
  219. }).show();
  220. }else{
  221. Ext.Msg.alert('提示','请先选择查看记录或选中记录不存在替代料!');
  222. }
  223. }
  224. });