GroupGrid.js 8.5 KB

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