GroupGrid.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. /**
  2. * Created by zhouy on 2018/11/8.
  3. */
  4. Ext.define('saas.view.sys.power.GroupGrid', {
  5. extend: 'Ext.grid.Panel',
  6. xtype: 'power-grid',
  7. bind:{
  8. store: '{powergrid}'
  9. },
  10. tbar:['->',{
  11. xtype:'button',
  12. text:'保存',
  13. name:'savepower',
  14. margin:'0 10 0 2',
  15. style:'background:#34baf6;border-color:#cccccc'
  16. }],
  17. features : [Ext.create('Ext.grid.feature.Grouping',{
  18. collapseTip:null,
  19. collapsible:false,
  20. expandTip:null,
  21. showSummaryRow: false,
  22. startCollapsed: false,
  23. groupHeaderTpl: Ext.create('Ext.XTemplate',
  24. '<div>{rows:this.formatName}</div>',
  25. {
  26. formatName: function(name) {
  27. return name[0].data.moduleName+'模块';
  28. }
  29. }
  30. )
  31. })],
  32. initId:0,
  33. dataUrl:'/api/account/role/power/resource',
  34. selModel: {
  35. showHeaderCheckbox:false,
  36. checkOnly:true,
  37. type:'checkboxmodel',
  38. listeners:{
  39. select:function(selModel,record,c,d){
  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. defaults:{
  55. onTitleElClick:function(a,b,c,d){
  56. var me = this;
  57. var dataIndex = this.dataIndex;
  58. var records = me.ownerCt.ownerCt.store.data.items;
  59. var isAllCheck = true;
  60. Ext.Array.each(records,function(rec){
  61. var data = rec.get(dataIndex);
  62. if(data!=null&&(typeof data)=='boolean'){
  63. if(!data){
  64. isAllCheck = false
  65. }
  66. }
  67. });
  68. Ext.Array.each(records,function(rec){
  69. var data = rec.get(dataIndex);
  70. if(data!=null&&(typeof data)=='boolean'){
  71. if(data!=!isAllCheck){
  72. rec.set(dataIndex,!isAllCheck)
  73. }
  74. }
  75. });
  76. me.setHeaderStatus(!isAllCheck);
  77. },
  78. doUpdateHeaderState: function(e) {
  79. return true;
  80. }
  81. },
  82. items:[{
  83. header: '单据名称',
  84. dataIndex: 'groupName',
  85. xtype: '',
  86. flex: 2,
  87. stopSelection: false,
  88. menuDisabled:true,
  89. },{
  90. header: '查询',
  91. dataIndex: 'query',
  92. xtype: 'checkcolumn',
  93. headerCheckbox: true,
  94. menuDisabled:true,
  95. flex: 1,
  96. stopSelection: false,
  97. }, {
  98. header: '保存',
  99. dataIndex: 'add',
  100. xtype: 'checkcolumn',
  101. headerCheckbox: true,
  102. menuDisabled:true,
  103. flex: 1,
  104. stopSelection: false,
  105. },{
  106. header: '启用/关闭',
  107. dataIndex: 'update',
  108. xtype: 'checkcolumn',
  109. headerCheckbox: true,
  110. menuDisabled:true,
  111. flex: 1.5,
  112. stopSelection: false,
  113. }, {
  114. header: '删除',
  115. dataIndex: 'delete',
  116. xtype: 'checkcolumn',
  117. headerCheckbox: true,
  118. menuDisabled:true,
  119. flex: 1,
  120. stopSelection: false,
  121. }, {
  122. header: '审核',
  123. dataIndex: 'audit',
  124. xtype: 'checkcolumn',
  125. headerCheckbox: true,
  126. menuDisabled:true,
  127. flex: 1,
  128. stopSelection: false,
  129. }, {
  130. header: '反审核',
  131. dataIndex: 'unAudit',
  132. xtype: 'checkcolumn',
  133. headerCheckbox: true,
  134. menuDisabled:true,
  135. flex: 1,
  136. stopSelection: false,
  137. }, {
  138. header: '导入',
  139. dataIndex: 'fileImport',
  140. xtype: 'checkcolumn',
  141. headerCheckbox: true,
  142. menuDisabled:true,
  143. flex: 1,
  144. stopSelection: false,
  145. }, {
  146. header: '导出',
  147. dataIndex: 'fileExport',
  148. xtype: 'checkcolumn',
  149. headerCheckbox: true,
  150. menuDisabled:true,
  151. flex: 1,
  152. stopSelection: false,
  153. }, {
  154. header: '打印',
  155. dataIndex: 'print',
  156. xtype: 'checkcolumn',
  157. headerCheckbox: true,
  158. menuDisabled:true,
  159. flex: 1,
  160. stopSelection: false,
  161. },{
  162. text: '其它',
  163. flex: 2.7,
  164. dataIndex:'other',
  165. xtype: 'widgetcolumn',
  166. menuDisabled:true,
  167. producesHTML: false,
  168. widget: {
  169. xtype: 'powerotherfield',
  170. bind:'{record.other}'
  171. }
  172. }]
  173. },
  174. initComponent: function () {
  175. var me = this;
  176. var formModel = me.$initParent.getViewModel();
  177. me.store = Ext.create('Ext.data.Store',{
  178. fields:[
  179. {name: 'groupId',type:'int'},
  180. {name: 'moduleId',type:'int'},
  181. {name: 'groupName',type:'string'},
  182. {name: 'moduleName',type:'string'},
  183. {name: 'add'},
  184. {name: 'delete'},
  185. {name: 'update'},
  186. {name: 'audit'},
  187. {name: 'unAudit'},
  188. {name: 'fileExport'},
  189. {name: 'fileImport'},
  190. {name: 'print'},
  191. {name: 'other', calculate: function(data) {
  192. var groupId = data['groupId'];
  193. var other = data['other'];
  194. Ext.Array.each(other,function(o){
  195. o.groupId=groupId;
  196. })
  197. return other;
  198. }}
  199. ],
  200. groupDir:'ASC',
  201. groupField:'moduleId',
  202. clearRemovedOnLoad : true,
  203. proxy: {
  204. timeout:8000,
  205. type: 'ajax',
  206. url: me.dataUrl,
  207. actionMethods: {
  208. read: 'GET'
  209. },
  210. reader: {
  211. type: 'json',
  212. rootProperty: 'data',
  213. }
  214. },
  215. listeners:{
  216. beforeload: function (store, op) {
  217. var id = me.initId;
  218. Ext.apply(store.proxy.extraParams, {
  219. id:id
  220. });
  221. }
  222. }
  223. // 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'}]},
  224. // {"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}]},
  225. // {"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}]}]
  226. }),
  227. formModel.set('powergrid', me.store);
  228. me.callParent(arguments);
  229. },
  230. selectAllPower: function(record){
  231. var me = this;
  232. me.setAllOthers(record,true);
  233. },
  234. deselectAllPower:function(record){
  235. var me = this;
  236. me.setAllOthers(record,false);
  237. },
  238. setAllOthers:function(record,bool){
  239. var data = {};
  240. data.add = record.get('add')==null?null:bool;
  241. data.query = record.get('query')==null?null:bool;
  242. data.delete = record.get('delete')==null?null:bool;
  243. data.audit = record.get('audit')==null?null:bool;
  244. data.update = record.get('update')==null?null:bool;
  245. data.unAudit= record.get('unAudit')==null?null:bool;
  246. data.fileExport= record.get('fileExport')==null?null:bool;
  247. data.fileImport= record.get('fileImport')==null?null:bool;
  248. data.print= record.get('print')==null?null:bool;
  249. var other=record.get('other');
  250. Ext.Array.each(other,function(o){
  251. o.checked=bool;
  252. });
  253. data.other = other;
  254. data.id = record.get('id');
  255. data.groupId = record.get('groupId');
  256. data.groupName = record.get('groupName');
  257. data.moduleName = record.get('moduleName');
  258. record.set(data);
  259. }
  260. });