GroupGrid.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  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: '{name}'+'模块'
  24. })],
  25. initId:0,
  26. dataUrl:'/api/account/role/power/resource',
  27. selModel: {
  28. showHeaderCheckbox:false,
  29. checkOnly:true,
  30. type:'checkboxmodel',
  31. listeners:{
  32. select:function(selModel,record,c,d){
  33. selModel.view.ownerCt.selectAllPower(record);
  34. },
  35. deselect:function(selModel,record){
  36. selModel.view.ownerCt.deselectAllPower(record);
  37. }
  38. }
  39. },
  40. viewConfig: {
  41. stripeRows: false,
  42. enableTextSelection: false,
  43. markDirty: false
  44. },
  45. trackMouseOver: false,
  46. columns: [{
  47. header: '单据名称',
  48. dataIndex: 'groupName',
  49. xtype: '',
  50. flex: 2,
  51. stopSelection: false,
  52. menuDisabled:true,
  53. },{
  54. header: '查询',
  55. dataIndex: 'query',
  56. xtype: 'checkcolumn',
  57. headerCheckbox: true,
  58. menuDisabled:true,
  59. flex: 1,
  60. stopSelection: false,
  61. onTitleElClick:function(a,b,c,d){
  62. var me = this;
  63. var records = me.ownerCt.ownerCt.store.data.items;
  64. var first = 'null',isAllCheck = true;
  65. Ext.Array.each(records,function(rec){
  66. var data = rec.get('query');
  67. if(data!=null&&(typeof data)=='boolean'){
  68. if(first=='null'){
  69. first = data;
  70. }else{
  71. if(first!=data){
  72. isAllCheck = false
  73. }
  74. }
  75. rec.set('query',!data)
  76. }
  77. });
  78. if(isAllCheck){
  79. me.setHeaderStatus(!first)
  80. }
  81. },
  82. doUpdateHeaderState: function(e) {
  83. return true;
  84. }
  85. }, {
  86. header: '保存',
  87. dataIndex: 'add',
  88. xtype: 'checkcolumn',
  89. headerCheckbox: true,
  90. menuDisabled:true,
  91. flex: 1,
  92. stopSelection: false,
  93. onTitleElClick:function(a,b,c,d){
  94. var me = this;
  95. var records = me.ownerCt.ownerCt.store.data.items;
  96. var first = 'null',isAllCheck = true;
  97. Ext.Array.each(records,function(rec){
  98. var data = rec.get('add');
  99. if(data!=null&&(typeof data)=='boolean'){
  100. if(first=='null'){
  101. first = data;
  102. }else{
  103. if(first!=data){
  104. isAllCheck = false
  105. }
  106. }
  107. rec.set('add',!data)
  108. }
  109. });
  110. if(isAllCheck){
  111. me.setHeaderStatus(!first)
  112. }
  113. },
  114. doUpdateHeaderState: function(e) {
  115. return true;
  116. }
  117. }, {
  118. header: '修改',
  119. dataIndex: 'update',
  120. xtype: 'checkcolumn',
  121. headerCheckbox: true,
  122. menuDisabled:true,
  123. flex: 1,
  124. stopSelection: false,
  125. onTitleElClick:function(a,b,c,d){
  126. var me = this;
  127. var records = me.ownerCt.ownerCt.store.data.items;
  128. var first = 'null',isAllCheck = true;
  129. Ext.Array.each(records,function(rec){
  130. var data = rec.get('update');
  131. if(data!=null&&(typeof data)=='boolean'){
  132. if(first=='null'){
  133. first = data;
  134. }else{
  135. if(first!=data){
  136. isAllCheck = false
  137. }
  138. }
  139. rec.set('update',!data)
  140. }
  141. });
  142. if(isAllCheck){
  143. me.setHeaderStatus(!first)
  144. }
  145. },
  146. doUpdateHeaderState: function(e) {
  147. return true;
  148. }
  149. }, {
  150. header: '删除',
  151. dataIndex: 'delete',
  152. xtype: 'checkcolumn',
  153. headerCheckbox: true,
  154. menuDisabled:true,
  155. flex: 1,
  156. stopSelection: false,
  157. onTitleElClick:function(a,b,c,d){
  158. var me = this;
  159. var records = me.ownerCt.ownerCt.store.data.items;
  160. var first = 'null',isAllCheck = true;
  161. Ext.Array.each(records,function(rec){
  162. var data = rec.get('delete');
  163. if(data!=null&&(typeof data)=='boolean'){
  164. if(first=='null'){
  165. first = data;
  166. }else{
  167. if(first!=data){
  168. isAllCheck = false
  169. }
  170. }
  171. rec.set('delete',!data)
  172. }
  173. });
  174. if(isAllCheck){
  175. me.setHeaderStatus(!first)
  176. }
  177. },
  178. doUpdateHeaderState: function(e) {
  179. return true;
  180. }
  181. }, {
  182. header: '审核',
  183. dataIndex: 'audit',
  184. xtype: 'checkcolumn',
  185. headerCheckbox: true,
  186. menuDisabled:true,
  187. flex: 1,
  188. stopSelection: false,
  189. onTitleElClick:function(a,b,c,d){
  190. var me = this;
  191. var records = me.ownerCt.ownerCt.store.data.items;
  192. var first = 'null',isAllCheck = true;
  193. Ext.Array.each(records,function(rec){
  194. var data = rec.get('audit');
  195. if(data!=null&&(typeof data)=='boolean'){
  196. if(first=='null'){
  197. first = data;
  198. }else{
  199. if(first!=data){
  200. isAllCheck = false
  201. }
  202. }
  203. rec.set('audit',!data)
  204. }
  205. });
  206. if(isAllCheck){
  207. me.setHeaderStatus(!first)
  208. }
  209. },
  210. doUpdateHeaderState: function(e) {
  211. return true;
  212. }
  213. }, {
  214. header: '反审核',
  215. dataIndex: 'unAudit',
  216. xtype: 'checkcolumn',
  217. headerCheckbox: true,
  218. menuDisabled:true,
  219. flex: 1,
  220. stopSelection: false,
  221. onTitleElClick:function(a,b,c,d){
  222. var me = this;
  223. var records = me.ownerCt.ownerCt.store.data.items;
  224. var first = 'null',isAllCheck = true;
  225. Ext.Array.each(records,function(rec){
  226. var data = rec.get('unAudit');
  227. if(data!=null&&(typeof data)=='boolean'){
  228. if(first=='null'){
  229. first = data;
  230. }else{
  231. if(first!=data){
  232. isAllCheck = false
  233. }
  234. }
  235. rec.set('unAudit',!data)
  236. }
  237. });
  238. if(isAllCheck){
  239. me.setHeaderStatus(!first)
  240. }
  241. },
  242. doUpdateHeaderState: function(e) {
  243. return true;
  244. }
  245. }, {
  246. header: '导入',
  247. dataIndex: 'fileImport',
  248. xtype: 'checkcolumn',
  249. headerCheckbox: true,
  250. menuDisabled:true,
  251. flex: 1,
  252. stopSelection: false,
  253. onTitleElClick:function(a,b,c,d){
  254. var me = this;
  255. var records = me.ownerCt.ownerCt.store.data.items;
  256. var first = 'null',isAllCheck = true;
  257. Ext.Array.each(records,function(rec){
  258. var data = rec.get('fileImport');
  259. if(data!=null&&(typeof data)=='boolean'){
  260. if(first=='null'){
  261. first = data;
  262. }else{
  263. if(first!=data){
  264. isAllCheck = false
  265. }
  266. }
  267. rec.set('fileImport',!data)
  268. }
  269. });
  270. if(isAllCheck){
  271. me.setHeaderStatus(!first)
  272. }
  273. },
  274. doUpdateHeaderState: function(e) {
  275. return true;
  276. }
  277. }, {
  278. header: '导出',
  279. dataIndex: 'fileExport',
  280. xtype: 'checkcolumn',
  281. headerCheckbox: true,
  282. menuDisabled:true,
  283. flex: 1,
  284. stopSelection: false,
  285. onTitleElClick:function(a,b,c,d){
  286. var me = this;
  287. var records = me.ownerCt.ownerCt.store.data.items;
  288. var first = 'null',isAllCheck = true;
  289. Ext.Array.each(records,function(rec){
  290. var data = rec.get('fileExport');
  291. if(data!=null&&(typeof data)=='boolean'){
  292. if(first=='null'){
  293. first = data;
  294. }else{
  295. if(first!=data){
  296. isAllCheck = false
  297. }
  298. }
  299. rec.set('fileExport',!data)
  300. }
  301. });
  302. if(isAllCheck){
  303. me.setHeaderStatus(!first)
  304. }
  305. },
  306. doUpdateHeaderState: function(e) {
  307. return true;
  308. }
  309. }, {
  310. header: '打印',
  311. dataIndex: 'print',
  312. xtype: 'checkcolumn',
  313. headerCheckbox: true,
  314. menuDisabled:true,
  315. flex: 1,
  316. stopSelection: false,
  317. onTitleElClick:function(a,b,c,d){
  318. var me = this;
  319. var records = me.ownerCt.ownerCt.store.data.items;
  320. var first = 'null',isAllCheck = true;
  321. Ext.Array.each(records,function(rec){
  322. var data = rec.get('print');
  323. if(data!=null&&(typeof data)=='boolean'){
  324. if(first=='null'){
  325. first = data;
  326. }else{
  327. if(first!=data){
  328. isAllCheck = false
  329. }
  330. }
  331. rec.set('print',!data)
  332. }
  333. });
  334. if(isAllCheck){
  335. me.setHeaderStatus(!first)
  336. }
  337. },
  338. doUpdateHeaderState: function(e) {
  339. return true;
  340. }
  341. },{
  342. text: '其它',
  343. flex: 2.7,
  344. dataIndex:'other',
  345. xtype: 'widgetcolumn',
  346. menuDisabled:true,
  347. producesHTML: false,
  348. widget: {
  349. xtype: 'powerotherfield',
  350. bind:'{record.other}'
  351. }
  352. }],
  353. initComponent: function () {
  354. var me = this;
  355. var formModel = me.$initParent.getViewModel();
  356. me.store = Ext.create('Ext.data.Store',{
  357. fields:[
  358. {name: 'groupId',type:'int'},
  359. {name: 'groupName',type:'string'},
  360. {name: 'moduleName',type:'string'},
  361. {name: 'add'},
  362. {name: 'delete'},
  363. {name: 'audit'},
  364. {name: 'update'},
  365. {name: 'unAudit'},
  366. {name: 'fileExport'},
  367. {name: 'fileImport'},
  368. {name: 'print'},
  369. {name: 'other', calculate: function(data) {
  370. var groupId = data['groupId'];
  371. var other = data['other'];
  372. Ext.Array.each(other,function(o){
  373. o.groupId=groupId;
  374. })
  375. return other;
  376. }}
  377. ],
  378. groupField:'moduleName',
  379. proxy: {
  380. timeout:8000,
  381. type: 'ajax',
  382. url: me.dataUrl,
  383. actionMethods: {
  384. read: 'GET'
  385. },
  386. reader: {
  387. type: 'json',
  388. rootProperty: 'data',
  389. }
  390. },
  391. listeners:{
  392. beforeload: function (store, op) {
  393. var id = me.initId;
  394. Ext.apply(store.proxy.extraParams, {
  395. id:id
  396. });
  397. }
  398. }
  399. // 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'}]},
  400. // {"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}]},
  401. // {"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}]}]
  402. }),
  403. formModel.set('powergrid', me.store);
  404. me.callParent(arguments);
  405. },
  406. selectAllPower: function(record){
  407. var me = this;
  408. me.setAllOthers(record,true);
  409. },
  410. deselectAllPower:function(record){
  411. var me = this;
  412. me.setAllOthers(record,false);
  413. },
  414. setAllOthers:function(record,bool){
  415. var data = {};
  416. data.add = record.get('add')==null?null:bool;
  417. data.query = record.get('query')==null?null:bool;
  418. data.delete = record.get('delete')==null?null:bool;
  419. data.audit = record.get('audit')==null?null:bool;
  420. data.update = record.get('update')==null?null:bool;
  421. data.unAudit= record.get('unAudit')==null?null:bool;
  422. data.fileExport= record.get('fileExport')==null?null:bool;
  423. data.fileImport= record.get('fileImport')==null?null:bool;
  424. data.print= record.get('print')==null?null:bool;
  425. var other=record.get('other');
  426. Ext.Array.each(other,function(o){
  427. o.checked=bool;
  428. });
  429. data.other = other;
  430. data.id = record.get('id');
  431. data.groupId = record.get('groupId');
  432. data.groupName = record.get('groupName');
  433. data.moduleName = record.get('moduleName');
  434. record.set(data);
  435. }
  436. });