PublicAddressGrid.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. Ext.define('erp.view.oa.attention.PublicAddressGrid',{
  2. extend: 'Ext.grid.Panel',
  3. alias: 'widget.PublicAddressGridPanel',
  4. emptyText : '无数据',
  5. columnLines : true,
  6. autoScroll : true,
  7. store: [],
  8. columns: [],
  9. multiselected: [],
  10. searchValue: null,
  11. indexes: [],
  12. currentIndex: null,
  13. searchRegExp: null,
  14. caseSensitive: false,
  15. regExpMode: false,
  16. matchCls: 'x-livesearch-match',
  17. tagsRe: /<[^>]*>/gm,
  18. tagsProtect: '\x0f',
  19. regExpProtect: /\\|\/|\+|\\|\.|\[|\]|\{|\}|\?|\$|\*|\^|\|/gm,
  20. bodyStyle: 'background: #f1f1f1;',
  21. GridUtil: Ext.create('erp.util.GridUtil'),
  22. BaseUtil: Ext.create('erp.util.BaseUtil'),
  23. plugins: Ext.create('Ext.grid.plugin.CellEditing', {
  24. clicksToEdit: 1
  25. }),
  26. /**selModel: Ext.create('Ext.selection.CheckboxModel',{
  27. ignoreRightMouseSelection : false,
  28. listeners:{
  29. selectionchange:function(selectionModel, selected, options){
  30. }
  31. },
  32. onRowMouseDown: function(view, record, item, index, e) {//改写的onRowMouseDown方法
  33. var me = Ext.getCmp('AttentionGridPanel');
  34. var bool = true;
  35. var items = me.selModel.getSelection();
  36. Ext.each(items, function(item, index){
  37. if(item.data == record.data){
  38. bool = false;
  39. me.selModel.deselect(record);
  40. Ext.Array.remove(items, item);
  41. Ext.Array.remove(me.multiselected, record);
  42. }
  43. });
  44. Ext.each(me.multiselected, function(item, index){
  45. items.push(item);
  46. });
  47. me.selModel.select(items);
  48. if(bool){
  49. view.el.focus();
  50. var checkbox = item.childNodes[0].childNodes[0].childNodes[0];
  51. if(checkbox.getAttribute('class') == 'x-grid-row-checker'){
  52. me.multiselected.push(record);
  53. items.push(record);
  54. me.selModel.select(items);
  55. } else {
  56. me.selModel.deselect(record);
  57. Ext.Array.remove(me.multiselected, record);
  58. }
  59. }
  60. if(items.length>0){
  61. Ext.getCmp('deleteuser').setDisabled(false);
  62. Ext.getCmp('moveto').setDisabled(false);
  63. }else {Ext.getCmp('deleteuser').setDisabled(true);
  64. Ext.getCmp('moveto').setDisabled(true);
  65. }
  66. },
  67. onHeaderClick: function(headerCt, header, e) {
  68. if (header.isCheckerHd) {
  69. e.stopEvent();
  70. var isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');
  71. if (isChecked) {
  72. this.deselectAll(true);
  73. var grid = Ext.getCmp('AttentionGridPanel');
  74. this.deselect(grid.multiselected);
  75. grid.multiselected = new Array();
  76. var els = Ext.select('div[@class=x-grid-row-checker-checked]').elements;
  77. Ext.each(els, function(el, index){
  78. el.setAttribute('class','x-grid-row-checker');
  79. });
  80. header.el.removeCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个
  81. } else {
  82. header.el.addCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个
  83. var grid = Ext.getCmp('AttentionGridPanel');
  84. this.deselect(grid.multiselected);
  85. grid.multiselected = new Array();
  86. var els = Ext.select('div[@class=x-grid-row-checker-checked]').elements;
  87. Ext.each(els, function(el, index){
  88. el.setAttribute('class','x-grid-row-checker');
  89. });
  90. this.selectAll(true);
  91. header.el.addCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个
  92. }
  93. }
  94. }
  95. }),**/
  96. listeners:{
  97. show:function(grid){
  98. var gridParam = {caller: grid.caller, condition: grid.condition};
  99. this.GridUtil.getGridColumnsAndStore(this, 'common/singleGridPanel.action?', gridParam, "");
  100. }
  101. },
  102. initComponent : function(){
  103. this.callParent(arguments);
  104. },
  105. viewConfig: {
  106. stripeRows: true
  107. },
  108. loadNewStore: function(grid, param){
  109. var me = this;
  110. var main = parent.Ext.getCmp("content-panel");
  111. if(!main)
  112. main = parent.parent.Ext.getCmp("content-panel");
  113. if(main){
  114. main.getActiveTab().setLoading(true);//loading...
  115. }
  116. Ext.Ajax.request({//拿到grid的columns
  117. url : basePath + "common/loadNewGridStore.action",
  118. params: param,
  119. method : 'post',
  120. callback : function(options,success,response){
  121. if(main){
  122. main.getActiveTab().setLoading(false);
  123. }
  124. var res = new Ext.decode(response.responseText);
  125. if(res.exceptionInfo){
  126. showError(res.exceptionInfo);return;
  127. }
  128. var data = res.data;
  129. if(!data || data.length == 0){
  130. data = [];
  131. me.add10EmptyData(grid.detno, data);
  132. me.add10EmptyData(grid.detno, data);//添20条吧
  133. }
  134. grid.store.loadData(data);
  135. //自定义event
  136. grid.addEvents({
  137. storeloaded: true
  138. });
  139. grid.fireEvent('storeloaded', grid);
  140. }
  141. });
  142. },
  143. add10EmptyData: function(detno, data){
  144. if(detno){
  145. var index = data.length == 0 ? 0 : Number(data[data.length-1][detno]);
  146. for(var i=0;i<10;i++){
  147. var o = new Object();
  148. o[detno] = index + i + 1;
  149. data.push(o);
  150. }
  151. } else {
  152. for(var i=0;i<10;i++){
  153. var o = new Object();
  154. data.push(o);
  155. }
  156. }
  157. },
  158. getSearchValue: function() {
  159. var me = this,
  160. value = Ext.getCmp('search').getValue();
  161. if (value === '') {
  162. return null;
  163. }
  164. if (!me.regExpMode) {
  165. value = value.replace(me.regExpProtect, function(m) {
  166. return '\\' + m;
  167. });
  168. } else {
  169. try {
  170. new RegExp(value);
  171. } catch (error) {
  172. me.statusBar.setStatus({
  173. text: error.message,
  174. iconCls: 'x-status-error'
  175. });
  176. return null;
  177. }
  178. // this is stupid
  179. if (value === '^' || value === '$') {
  180. return null;
  181. }
  182. }
  183. return value;
  184. },
  185. });