GroupGrid.js 14 KB

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