GroupGrid.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. /**
  2. * Created by zhouy on 2018/11/8.
  3. */
  4. Ext.define('saas.view.sys.power.GroupGrid', {
  5. extend: 'Ext.grid.Panel',
  6. requires: [
  7. 'saas.view.sys.power.OtherField'
  8. ],
  9. xtype: 'power-grid',
  10. plugins: {
  11. cellediting: {
  12. clicksToEdit: 1
  13. }
  14. },
  15. bind:{
  16. store: '{powergrid}'
  17. },
  18. features : [Ext.create('Ext.grid.feature.Grouping',{
  19. showSummaryRow: true,
  20. startCollapsed: false,
  21. groupHeaderTpl: '{name}'+'模块'
  22. })],
  23. initId:0,
  24. dataUrl:'http://192.168.253.31:8560/api/account/role/power/resource',
  25. selModel:Ext.create('Ext.selection.CheckboxModel', {
  26. checkOnly: true,
  27. listeners: {
  28. 'select': function (selModel, record) {
  29. selModel.view.ownerCt.selectAllPower(record);
  30. },
  31. 'deselect': function (selModel, record) {
  32. selModel.view.ownerCt.deselectAllPower(record);
  33. }
  34. }
  35. }),
  36. viewConfig: {
  37. stripeRows: false,
  38. enableTextSelection: false,
  39. markDirty: false
  40. },
  41. trackMouseOver: false,
  42. columns: [{
  43. header: '单据名称',
  44. dataIndex: 'groupName',
  45. xtype: '',
  46. flex: 1.5,
  47. stopSelection: false
  48. },{
  49. header: '查询',
  50. dataIndex: 'query',
  51. xtype: 'checkcolumn',
  52. headerCheckbox: true,
  53. menuDisabled:true,
  54. flex: 1,
  55. stopSelection: false
  56. }, {
  57. header: '保存',
  58. dataIndex: 'add',
  59. xtype: 'checkcolumn',
  60. headerCheckbox: true,
  61. menuDisabled:true,
  62. flex: 1,
  63. stopSelection: false
  64. }, {
  65. header: '修改',
  66. dataIndex: 'update',
  67. xtype: 'checkcolumn',
  68. headerCheckbox: true,
  69. menuDisabled:true,
  70. flex: 1,
  71. stopSelection: false
  72. }, {
  73. header: '删除',
  74. dataIndex: 'delete',
  75. xtype: 'checkcolumn',
  76. headerCheckbox: true,
  77. menuDisabled:true,
  78. flex: 1,
  79. stopSelection: false
  80. }, {
  81. header: '审核',
  82. dataIndex: 'audit',
  83. xtype: 'checkcolumn',
  84. headerCheckbox: true,
  85. menuDisabled:true,
  86. flex: 1,
  87. stopSelection: false
  88. }, {
  89. header: '反审核',
  90. dataIndex: 'unAudit',
  91. xtype: 'checkcolumn',
  92. headerCheckbox: true,
  93. menuDisabled:true,
  94. flex: 1,
  95. stopSelection: false
  96. }, {
  97. header: '导入',
  98. dataIndex: 'fileImport',
  99. xtype: 'checkcolumn',
  100. headerCheckbox: true,
  101. menuDisabled:true,
  102. flex: 1,
  103. stopSelection: false
  104. }, {
  105. header: '导出',
  106. dataIndex: 'fileExport',
  107. xtype: 'checkcolumn',
  108. headerCheckbox: true,
  109. menuDisabled:true,
  110. flex: 1,
  111. stopSelection: false
  112. }, {
  113. header: '打印',
  114. dataIndex: 'print',
  115. xtype: 'checkcolumn',
  116. headerCheckbox: true,
  117. menuDisabled:true,
  118. flex: 1,
  119. stopSelection: false
  120. },{
  121. text: '其它',
  122. flex: 2.7,
  123. dataIndex:'other',
  124. xtype: 'widgetcolumn',
  125. menuDisabled:true,
  126. producesHTML: false,
  127. widget: {
  128. xtype: 'powerotherfield',
  129. bind:'{record.other}'
  130. }
  131. }],
  132. initComponent: function () {
  133. var me = this;
  134. var formModel = me.$initParent.getViewModel();
  135. me.store = Ext.create('Ext.data.Store',{
  136. fields:[
  137. {name: 'groupId',type:'int'},
  138. {name: 'groupName',type:'string'},
  139. {name: 'moduleName',type:'string'},
  140. {name: 'query',type:'bool'},
  141. {name: 'add', type: 'bool'},
  142. {name: 'delete', type: 'bool'},
  143. {name: 'audit', type: 'bool'},
  144. {name: 'update', type: 'bool'},
  145. {name: 'unAudit', type: 'bool'},
  146. {name: 'fileExport', type: 'bool'},
  147. {name: 'fileImport', type: 'bool'},
  148. {name: 'print', type: 'bool'},
  149. {name: 'other', calculate: function(data) {
  150. var other = data['other'];
  151. return other;
  152. }}
  153. ],
  154. groupField:'moduleName',
  155. proxy: {
  156. timeout:8000,
  157. type: 'ajax',
  158. url: me.dataUrl,
  159. actionMethods: {
  160. read: 'GET'
  161. },
  162. reader: {
  163. type: 'json',
  164. rootProperty: 'data',
  165. }
  166. },
  167. listeners:{
  168. beforeload: function (store, op) {
  169. var id = me.initId;
  170. Ext.apply(store.proxy.extraParams, {
  171. id:id
  172. });
  173. }
  174. }
  175. // data: [{"query":true,"add":false,"delete":false,"audit":true,"resAudit":true,"import":true,"export":true},{"query":true,"add":false,"delete":false,"audit":true,"resAudit":true,"import":true,"export":true,"others":[{'resouceId':1,'text':'权限1','value':'true'}]},
  176. // {"query":true,"add":false,"delete":false,"audit":true,"resAudit":true,"import":true,"export":true,"others":[{'resouceId':100,'text':'权限2','value':true},{'resouceId':101,'text':'权限2.1','value':true}]},
  177. // {"query":true,"add":false,"delete":false,"audit":true,"resAudit":true,"import":true,"export":true,"others":[{'resouceId':1000,text:'权限3','value':true},{'resouceId':1001,'text':'权限3.1','value':true},{'resouceId':1002,'text':'权限1','value':true},{'resouceId':100,'text':'权限3.2','value':true}]}]
  178. }),
  179. formModel.set('powergrid', me.store);
  180. me.callParent(arguments);
  181. },
  182. defaultListenerScope: true,
  183. listeners: {
  184. columnshow: 'onColumnToggle',
  185. columnhide: 'onColumnToggle'
  186. },
  187. selectAllPower: function(record){
  188. var me = this;
  189. me.setAllOthers(record,true);
  190. },
  191. deselectAllPower:function(record){
  192. var me = this;
  193. me.setAllOthers(record,false);
  194. },
  195. setAllOthers:function(record,bool){
  196. var data = {};
  197. data.add = bool;
  198. data.query = bool;
  199. data.delete = bool;
  200. data.audit = bool;
  201. data.update = bool;
  202. data.unAudit= bool;
  203. data.fileExport= bool;
  204. data.fileImport= bool;
  205. data.print= bool;
  206. var other=record.get('other');
  207. Ext.Array.each(other,function(o){
  208. o.checked=bool;
  209. })
  210. data.other = other;
  211. data.id = record.get('id');
  212. data.groupId = record.get('groupId');
  213. data.groupName = record.get('groupName');
  214. data.moduleName = record.get('moduleName');
  215. record.set(data);
  216. }
  217. });