GroupGrid.js 9.1 KB

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