/** * Created by zhouy on 2018/11/8. */ Ext.define('saas.view.sys.power.GroupGrid', { extend: 'Ext.grid.Panel', xtype: 'power-grid', focusable:false, bind:{ store: '{powergrid}' }, bufferedRenderer:false, tbar:['->',{ xtype:'button', text:'保存', name:'savepower', margin:'0 10 0 2', style:'background:#fff;border-color:#34baf6' }], features : [Ext.create('Ext.grid.feature.Grouping',{ collapsible:false, showSummaryRow: false })], dataUrl:'/api/account/role/power/resource', selModel: { showHeaderCheckbox:false, checkOnly:true, type:'checkboxmodel', listeners:{ select:function(selModel,record,c,d){ selModel.view.ownerCt.selectAllPower(record); }, deselect:function(selModel,record){ selModel.view.ownerCt.deselectAllPower(record); } } }, viewConfig: { stripeRows: false, enableTextSelection: false, markDirty: false }, trackMouseOver: false, columns: { defaults:{ onTitleElClick:function(a,b,c,d){ var me = this; var dataIndex = this.dataIndex; var records = me.ownerCt.ownerCt.store.data.items; var isAllCheck = true; Ext.Array.each(records,function(rec){ var data = rec.get(dataIndex); if(data!=null&&(typeof data)=='boolean'){ if(!data){ isAllCheck = false } } }); Ext.Array.each(records,function(rec){ var data = rec.get(dataIndex); if(data!=null&&(typeof data)=='boolean'){ if(data!=!isAllCheck){ rec.set(dataIndex,!isAllCheck) } } }); me.setHeaderStatus(!isAllCheck); }, doUpdateHeaderState: function(e) { return true; } }, items:[{ header: '单据名称', dataIndex: 'groupName', xtype: '', flex: 2.7, stopSelection: false, menuDisabled:true, },{ header: '查询', dataIndex: 'query', xtype: 'checkcolumn', headerCheckbox: true, menuDisabled:true, flex: 1, stopSelection: false, }, { header: '保存', dataIndex: 'add', xtype: 'checkcolumn', headerCheckbox: true, menuDisabled:true, flex: 1, stopSelection: false, },{ header: '启用/关闭', dataIndex: 'update', xtype: 'checkcolumn', headerCheckbox: true, menuDisabled:true, flex: 1.5, stopSelection: false, }, { header: '删除', dataIndex: 'delete', xtype: 'checkcolumn', headerCheckbox: true, menuDisabled:true, flex: 1, stopSelection: false, }, { header: '审核', dataIndex: 'audit', xtype: 'checkcolumn', headerCheckbox: true, menuDisabled:true, flex: 1, stopSelection: false, }, { header: '反审核', dataIndex: 'unAudit', xtype: 'checkcolumn', headerCheckbox: true, menuDisabled:true, flex: 1, stopSelection: false, }, { header: '导入', dataIndex: 'fileImport', xtype: 'checkcolumn', headerCheckbox: true, menuDisabled:true, flex: 1, stopSelection: false, }, { header: '导出', dataIndex: 'fileExport', xtype: 'checkcolumn', headerCheckbox: true, menuDisabled:true, flex: 1, stopSelection: false, }, { header: '打印', dataIndex: 'print', xtype: 'checkcolumn', headerCheckbox: true, menuDisabled:true, flex: 1, stopSelection: false, },{ text: '其它', flex: 2.7, dataIndex:'other', xtype: 'widgetcolumn', menuDisabled:true, widget: { xtype: 'powerotherfield', bind:'{record.other}' } }] }, initComponent: function () { var me = this; var formModel = me.$initParent.getViewModel(); me.store = Ext.create('Ext.data.Store',{ fields:[ {name: 'groupId',type:'int'}, {name: 'moduleId',type:'int'}, {name: 'groupName',type:'string'}, {name: 'moduleName',type:'string'}, {name: 'add'}, {name: 'delete'}, {name: 'update'}, {name: 'audit'}, {name: 'unAudit'}, {name: 'fileExport'}, {name: 'fileImport'}, {name: 'print'}, {name: 'other', calculate: function(data) { var groupId = data['groupId']; var other = data['other']; Ext.Array.each(other,function(o){ o.groupId=groupId; }) return other; }} ], groupField:'moduleId', proxy: { timeout:8000, type: 'ajax', url: me.dataUrl, actionMethods: { read: 'GET' }, reader: { type: 'json', rootProperty: 'data', }, listeners: { exception: function(proxy, response, operation, eOpts) { if(operation.success) { if(response.timedout) { saas.util.BaseUtil.showErrorToast('请求超时'); } }else { if(response.timedout) { saas.util.BaseUtil.showErrorToast('请求超时'); }else{ saas.util.BaseUtil.showErrorToast('查询失败:' + (response.responseJson?response.responseJson.message:'请求超时')); } } } } }, listeners:{ beforeload: function (store, op) { var id = me.initId; Ext.apply(store.proxy.extraParams, { id:id }); } } // 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'}]}, // {"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}]}, // {"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}]}] }), formModel.set('powergrid', me.store); me.callParent(arguments); }, selectAllPower: function(record){ var me = this; me.setAllOthers(record,true); }, deselectAllPower:function(record){ var me = this; me.setAllOthers(record,false); }, setAllOthers:function(record,bool){ var data = {}; data.add = record.get('add')==null?null:bool; data.query = record.get('query')==null?null:bool; data.delete = record.get('delete')==null?null:bool; data.audit = record.get('audit')==null?null:bool; data.update = record.get('update')==null?null:bool; data.unAudit= record.get('unAudit')==null?null:bool; data.fileExport= record.get('fileExport')==null?null:bool; data.fileImport= record.get('fileImport')==null?null:bool; data.print= record.get('print')==null?null:bool; var other=record.get('other'); Ext.Array.each(other,function(o){ o.checked=bool; }); data.other = other; data.id = record.get('id'); data.groupId = record.get('groupId'); data.groupName = record.get('groupName'); data.moduleName = record.get('moduleName'); record.set(data); } });