GroupGrid.js 7.1 KB

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