DeleteDetail.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /**
  2. * 明细行删除按钮
  3. */
  4. Ext.define('erp.view.core.button.DeleteDetail',{
  5. extend: 'Ext.Button',
  6. alias: 'widget.erpDeleteDetailButton',
  7. iconCls: 'x-button-icon-close',
  8. cls: 'x-btn-tb',
  9. tooltip: $I18N.common.button.erpDeleteDetailButton,
  10. disabled: true,
  11. //width: 90,
  12. initComponent : function(){
  13. this.callParent(arguments);
  14. this.addEvents({//添加[删除明细后]事件
  15. beforedelete: true,
  16. afterdelete: true
  17. });
  18. },
  19. canDelete:true,
  20. handler: function(btn){
  21. var me = this;
  22. var grid = btn.grid ||btn.ownerCt.ownerCt;
  23. var callerConfig = (grid.caller&&grid.caller!='')?grid.caller:caller;
  24. //解决针对两个从表无法控制多个从表的权限
  25. var records = grid.selModel.getSelection();
  26. if(records.length > 0){
  27. if(grid.keyField){
  28. me.fireEvent('beforedelete', records[0].data, records[0], me);
  29. if(me.canDelete){
  30. if(records[0].data[grid.keyField] != null && records[0].data[grid.keyField] > 0){
  31. warnMsg($I18N.common.msg.ask_del, function(btn){
  32. if(btn == 'yes'){
  33. var url = "common/deleteDetail.action?_noc=" + (grid._noc || 0);
  34. grid.setLoading(true);//loading...
  35. Ext.Ajax.request({
  36. url : basePath + url,
  37. params: {
  38. caller:caller,
  39. gridcaller: callerConfig,
  40. condition: grid.keyField + "=" + records[0].data[grid.keyField]
  41. },
  42. method : 'post',
  43. callback : function(options,success,response){
  44. grid.setLoading(false);
  45. var localJson = new Ext.decode(response.responseText);
  46. if(localJson.exceptionInfo){
  47. showError(localJson.exceptionInfo);return;
  48. }
  49. if(localJson.success){
  50. me.fireEvent('afterdelete', records[0].data, records[0], me);//触发删除后事件
  51. grid.store.remove(records[0]);
  52. delSuccess(function(){
  53. });//@i18n/i18n.js
  54. } else {
  55. delFailure();
  56. }
  57. }
  58. });
  59. }
  60. });
  61. } else {
  62. me.fireEvent('afterdelete', records[0].data, records[0], me);
  63. grid.store.remove(records[0]);
  64. }
  65. }
  66. } else {
  67. if(records[0].data[grid.keyField] != null && records[0].data[grid.keyField] > 0){
  68. showError("grid未配置keyField,无法删除该行数据!");
  69. } else {
  70. grid.store.remove(records[0]);
  71. }
  72. }
  73. }
  74. },
  75. autoSetSequence: false,//删除明细行后,自动调整detno排序字段
  76. listeners: {
  77. afterdelete: function(d, r, btn){
  78. var grid = btn.ownerCt.ownerCt;
  79. if(btn.autoSetSequence || grid.autoSetSequence) {
  80. btn.setSequence(grid, r);
  81. }
  82. }
  83. },
  84. setSequence: function(grid, record){
  85. if(grid.detno) {
  86. if(grid.keyField && record.data[grid.keyField] != null && record.data[grid.keyField] > 0){
  87. if(grid.mainField) {
  88. Ext.Ajax.request({
  89. url: basePath + 'common/setDetailDetno.action',
  90. params: {
  91. caller: caller,
  92. dfield: grid.detno,
  93. mfield: grid.mainField,
  94. id: record.data[grid.mainField],
  95. detno: record.data[grid.detno]
  96. },
  97. callback: function(opt, s, r){
  98. var res = Ext.decode(r.responseText);
  99. if(res.exceptionInfo) {
  100. showError(res.exceptionInfo);
  101. }
  102. }
  103. });
  104. }
  105. }
  106. var items = grid.store.data.items;
  107. Ext.each(items, function(item){
  108. if(item.index != record.index && item.data[grid.detno] > record.data[grid.detno]) {
  109. item.set(grid.detno, item.data[grid.detno] - 1);
  110. }
  111. });
  112. }
  113. }
  114. });