CheckListBase.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. Ext.define('erp.view.plm.test.CheckListBase',{
  2. extend: 'Ext.Viewport',
  3. layout: 'fit',
  4. id:'CheckListBase',
  5. hideBorders: true,
  6. initComponent : function(){
  7. var me = this;
  8. Ext.apply(me, {
  9. items: [{
  10. layout: 'anchor',
  11. items: [{
  12. xtype: 'erpFormPanel',
  13. anchor: '100% 30%',
  14. saveUrl: 'plm/check/saveCheckListBase.action',
  15. deleteUrl: 'plm/check/deleteCheckListBase.action',
  16. updateUrl: 'plm/check/updateCheckListBase.action',
  17. endUrl: '/plm/test/EndProject.action',
  18. resAuditUrl: 'plm/check/resAuditCheckListBase.action',
  19. auditUrl: 'plm/check/auditCheckListBase.action',
  20. submitUrl: 'plm/check/submitCheckListBase.action',
  21. resSubmitUrl: 'plm/check/resSubmitCheckListBase.action',
  22. getIdUrl: 'common/getId.action?seq=CheckListBase_SEQ',
  23. keyField: 'cb_id',
  24. codeField:'cb_code'
  25. },
  26. {
  27. xtype: 'erpGridPanel2',
  28. anchor: '100% 70%',
  29. detno: 'cbd_detno',
  30. keyField:'cbd_id',
  31. mainField: 'cbd_cbid',
  32. multiselected:new Array(),
  33. allowExtraButtons:true,
  34. listeners: {
  35. scrollershow: function(scroller) {
  36. if (scroller && scroller.scrollEl) {
  37. scroller.clearManagedListeners();
  38. scroller.mon(scroller.scrollEl, 'scroll', scroller.onElScroll, scroller);
  39. }
  40. }
  41. },
  42. plugins: [Ext.create('erp.view.core.grid.HeaderFilter', {
  43. remoteFilter: true
  44. }),
  45. Ext.create('Ext.grid.plugin.CellEditing', {
  46. clicksToEdit: 1,
  47. listeners:{
  48. 'edit':function(editor,e,Opts){
  49. var record=e.record;
  50. if(e.originalValue!=e.value){
  51. Ext.MessageBox.show({
  52. title:'保存修改?',
  53. msg: '数据已修改需要保存吗?',
  54. buttons: Ext.Msg.YESNO,
  55. icon: Ext.Msg.WARNING,
  56. fn: function(btn){
  57. if(btn == 'yes'){
  58. var grid=Ext.getCmp('grid');
  59. Ext.Ajax.request({
  60. url:basePath+'plm/test/updateResult.action',
  61. params: {
  62. data:e.value,
  63. field:e.field,
  64. keyValue:record.data[grid.keyField]
  65. },
  66. method : 'post',
  67. callback : function(options,success,response){
  68. var local=Ext.decode(response.responseText);
  69. if(local.success) {
  70. grid.GridUtil.loadNewStore(grid,{
  71. caller:caller,
  72. condition:grid.mainField+"="+record.data[grid.mainField]
  73. })
  74. showMessage('提示', '保存成功!', 1000);
  75. }else {
  76. showError(local.exceptionInfo);
  77. }
  78. }
  79. });
  80. } else if(btn == 'no'){
  81. //不保存
  82. e.record.reject();
  83. } else {
  84. return;
  85. }
  86. }
  87. });
  88. }
  89. }
  90. }
  91. }), Ext.create('erp.view.core.plugin.CopyPasteMenu')],
  92. selModel: Ext.create('Ext.selection.CheckboxModel',{
  93. ignoreRightMouseSelection : false,
  94. listeners:{
  95. selectionchange:function(selectionModel, selected, options){
  96. }
  97. },
  98. getEditor: function(){
  99. return null;
  100. },
  101. onRowMouseDown: function(view, record, item, index, e) {//改写的onRowMouseDown方法
  102. var me = Ext.getCmp('grid');
  103. var bool = true;
  104. var items = me.selModel.getSelection();
  105. Ext.each(items, function(item, index){
  106. if(item && record && item.data.cbd_id == record.data.cbd_id){
  107. bool = false;
  108. me.selModel.deselect(record);
  109. Ext.Array.remove(items, item);
  110. Ext.Array.remove(me.multiselected, record);
  111. }
  112. });
  113. Ext.each(me.multiselected, function(item, index){
  114. items.push(item);
  115. });
  116. if(bool){
  117. view.el.focus();
  118. var checkbox = item.childNodes[0].childNodes[0].childNodes[0];
  119. if(checkbox.getAttribute && checkbox.getAttribute('class') == 'x-grid-row-checker'){
  120. me.multiselected.push(record);
  121. items.push(record);
  122. me.selModel.select(me.multiselected);
  123. } else {
  124. me.selModel.deselect(record);
  125. Ext.Array.remove(me.multiselected, record);
  126. }
  127. }
  128. if(items.length>0){
  129. Ext.getCmp('set').setDisabled(false);
  130. Ext.getCmp('updatetestresult').setDisabled(false);
  131. }else {
  132. Ext.getCmp('set').setDisabled(true);
  133. Ext.getCmp('updatetestresult').setDisabled(true);
  134. }
  135. },
  136. onHeaderClick: function(headerCt, header, e) {
  137. if (header.isCheckerHd) {
  138. e.stopEvent();
  139. var isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');
  140. if (isChecked) {
  141. this.deselectAll(true);
  142. var grid = Ext.getCmp('grid');
  143. this.deselect(grid.multiselected);
  144. grid.multiselected = new Array();
  145. var els = Ext.select('div[@class=x-grid-row-checker-checked]').elements;
  146. Ext.each(els, function(el, index){
  147. el.setAttribute('class','x-grid-row-checker');
  148. });
  149. Ext.getCmp('set').setDisabled(true);
  150. header.el.removeCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个
  151. } else {
  152. header.el.addCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个
  153. var grid = Ext.getCmp('grid');
  154. this.deselect(grid.multiselected);
  155. grid.multiselected = new Array();
  156. var els = Ext.select('div[@class=x-grid-row-checker-checked]').elements;
  157. Ext.each(els, function(el, index){
  158. el.setAttribute('class','x-grid-row-checker');
  159. });
  160. this.selectAll(true);
  161. Ext.getCmp('set').setDisabled(false);
  162. header.el.addCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个
  163. }
  164. }
  165. }
  166. }),
  167. getMultiSelected: function(){
  168. var grid = this;
  169. var items = grid.selModel.getSelection();
  170. Ext.each(items, function(item, index){
  171. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  172. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  173. grid.multiselected.push(item);
  174. }
  175. });
  176. var records=Ext.Array.unique(grid.multiselected);
  177. var params = new Object();
  178. params.caller = caller;
  179. var data = new Array();
  180. Ext.each(records, function(record, index){
  181. if(grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  182. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  183. bool = true;
  184. var o = new Object();
  185. o[grid.keyField] = record.data[grid.keyField];
  186. if(grid.necessaryFields){
  187. Ext.each(grid.necessaryFields, function(f, index){
  188. var v = record.data[f];
  189. if(Ext.isDate(v)){
  190. v = Ext.Date.toString(v);
  191. }
  192. o[f] = v;
  193. });
  194. }
  195. data.push(o);
  196. }
  197. });
  198. params.data = Ext.encode(data);
  199. return params;
  200. }
  201. }
  202. ]
  203. }]
  204. });
  205. me.callParent(arguments);
  206. }
  207. });