123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- /**
- * PDA 权限分配Grid
- */
- Ext.define('erp.view.core.grid.PDAGroupPower',{
- extend: 'Ext.grid.Panel',
- alias: 'widget.grouppower',
- requires: ['erp.view.core.grid.HeaderFilter'],
- layout : 'fit',
- id: 'grid',
- emptyText : $I18N.common.grid.emptyText,
- columnLines : true,
- autoScroll : true,
- iconCls: 'icon-grid',
- frame: true,
- bodyStyle:'background-color:#f1f1f1;',
- features: [Ext.create('Ext.grid.feature.Grouping',{
- startCollapsed: false,
- groupHeaderTpl: '{name} ({rows.length})'
- })],
- plugins: [Ext.create('erp.view.core.grid.HeaderFilter')],
- store: Ext.create('Ext.data.Store', {
- fields: [{
- name: 'em_id',
- type: 'number'
- },{
- name: 'jo_orgid',
- type: 'number'
- },{
- name:'jo_orgname',
- type:'string'
- },{
- name:'jo_description',
- type:'string'
- },{
- name:'jo_name',
- type:'string'
- },{
- name:'jo_id',
- type:'number'
- },{
- name:'ejp_see',
- type:'bool'
- },{
- name:'ejp_seeother',
- type:'bool'
- }],
- groupField: 'jo_orgname'
- }),
- defaultColumns: [{
- text: 'ID',
- hidden: true,
- dataIndex: 'jo_id'
- },{
- text: '组织ID',
- hidden: true,
- dataIndex: 'jo_orgid'
- },{
- text: '组织名称',
- hidden: true,
- dataIndex: 'jo_orgname'
- },{
- text: '岗位名称',
- width: 220,
- cls: 'x-grid-header',
- dataIndex: 'jo_name',
- filter: {xtype: 'textfield', filterName: 'jo_name'},
- setPadding: Ext.emptyFn
- },{
- text: '操作名称',
- columns: [{
- text: '<br>浏览',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'ejp_see'
- },{
- text: '<br>浏览<br>他人',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'ejp_seeother'
- }]
- }],
- tbar: [{
- xtype: 'tbtext',
- id: 'power_title'
- },'->',{
- xtype: 'combo',
- fieldLabel: '搜索岗位',
- margin: '0 5 0 0',
- width: 300,
- labelWidth: 80,
- id: 'job_combo',
- displayField: 'display',
- valueField: 'value',
- queryMode: 'local',
- anyMatch: true,
- store: new Ext.data.Store({
- fields: ['display', 'value']
- }),
- listeners: {
- change: function(c) {
- var v = c.value, grid = c.ownerCt.ownerCt;
- if(!Ext.isEmpty(v)) {
- grid.store.clearFilter(true);
- if(v != ' ') {
- grid.store.filter(new Ext.util.Filter({
- filterFn: function(item) {
- return item.get('jo_name') == v;
- }
- }));
- } else {
- grid.store.filter(new Ext.util.Filter({
- filterFn: function(item) {
- return true;
- }
- }));
- }
- }
- }
- }
- },{
- iconCls: 'tree-save',
- cls: 'x-btn-blue',
- text: $I18N.common.button.erpSaveButton,
- handler: function(){
- var grid = Ext.getCmp('grid'),set = grid.powerSet;
- var positionpowers = [];
- var positionpower = null;
- Ext.each(grid.store.data.items, function(d){
- if(this.dirty){
- positionpower = new Object();
- positionpower.ejp_caller = grid.ejp_caller;
- positionpower.ejp_id = d.data['ejp_id'];
- positionpower.ejp_joid = d.data['jo_id'];
- Ext.each(set, function(s){
- positionpower[s] = d.data[s] ? 1 : 0;
- });
- positionpowers.push(positionpower);
- }
- });
- if(positionpowers.length > 0){
- grid.setLoading(true);
- Ext.Ajax.request({//拿到grid的columns
- url : basePath + 'hr/employee/updatePDAJobPower.action',
- params: {
- update: Ext.encode(positionpowers),
- _self: grid._self
- },
- method : 'post',
- timeout : 240000,
- callback : function(options,success,response){
- grid.setLoading(false);
- var res = new Ext.decode(response.responseText);
- if(res.exception || res.exceptionInfo){
- showError(res.exceptionInfo);
- return;
- }
- if(res.success){
- updateSuccess(function(){
- grid.getGroupData();
- });
- }
- }
- });
- }
- }
- }, '->'],
- initComponent : function(){
- this.columns = this.defaultColumns;
- this.callParent(arguments);
- },
- listeners: {//滚动条有时候没反应,添加此监听器
- scrollershow: function(scroller) {
- if (scroller && scroller.scrollEl) {
- scroller.clearManagedListeners();
- scroller.mon(scroller.scrollEl, 'scroll', scroller.onElScroll, scroller);
- }
- }
- },
- powerSet: ['ejp_see', 'ejp_seeother'],
- getGroupData: function(){
- var me = this;
- me.setLoading(true);
- Ext.Ajax.request({
- url : basePath + 'hr/employee/getPDAHrJob.action',
- params: {
- caller: me.ejp_caller
- },
- method : 'post',
- callback : function(options,success,response){
- me.setLoading(false);
- var res = new Ext.decode(response.responseText);
- if(res.exception || res.exceptionInfo){
- showError(res.exceptionInfo);
- return;
- }
- if(!res.hrjob){
- return;
- } else {
- var data = new Array();
- Ext.each(res.hrjob, function(){
- var j = this;
- Ext.each(res.pdapositionpower, function(pp){
- if(j.jo_id == pp.ejp_joid){
- j = Ext.Object.merge(j, pp);
- j.ejp_id = pp.ejp_id;
- Ext.each(me.powerSet, function(s){
- j[s] = pp[s] == 1;
- });
- }
- });
- data.push(j);
- });
- me.store.loadData(data);
- var cm = me.down('gridcolumn[dataIndex=jo_name]');
- cm.setText('岗位名称');
- me._self = false;
- me.reconfigure(me.store, me.defaultColumns);
- me.filterJob(res.hrjob);
- me.resetHeaderChecker();
- me.rememberLastFilter();
- me.plugins[0].renderFilters();
- }
- }
- });
- },
- rememberLastFilter: function() {
- var me = this, filter = this.store.filters.findBy(function(filter){
- return filter.property == '$all';
- });
- if(filter && filter.filterArr) {
- me.headerFilters = {};
- Ext.Array.each(filter.filterArr, function(f){
- me.headerFilters[f.property] = f.value;
- });
- }
- },
- resetHeaderChecker: function() {
- var columns = this.headerCt.getGridColumns();
- Ext.Array.each(columns, function(c){
- if(c.headerCheckable) {
- var ch = Ext.get(c.dataIndex + '-checkbox');
- ch && (ch.dom.checked = false);
- }
- });
- },
- selModel: Ext.create('Ext.selection.CheckboxModel',{
- listeners:{
- 'select': function(selModel, record){
- selModel.view.ownerCt.selectAllPower(record);
- },
- 'deselect': function(selModel, record){
- selModel.view.ownerCt.deselectAllPower(record);
- }
- },
- onHeaderClick: function(headerCt, header, e) {
- var grid = headerCt.ownerCt;
- if (header.isCheckerHd) {
- var isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');
- if (!isChecked) {
- grid.store.each(function(item){
- grid.selectAllPower(item);
- });
- grid.selModel.selectAll();
- } else {
- grid.store.each(function(item){
- grid.deselectAllPower(item);
- });
- grid.selModel.deselectAll();
- }
- }
-
- }
- }),
- selectAllPower: function(record){
- var me = this, set = me.powerSet;
- Ext.each(set, function(s){
- record.set(s, true);
- });
- },
- deselectAllPower: function(record){
- var me = this, set = me.powerSet;
- Ext.each(set, function(s){
- record.set(s, false);
- });
- },
- filterJob: function(jobs) {
- var c = this.down('#job_combo');
- this.jobs = jobs;
- if(!c.store || c.store.data.length == 0) {
- var ns = Ext.Array.pluck(jobs, 'jo_name'), data = new Array(), fd = new Array();
- data.push({display: '--所有--', value: ' '});
- Ext.each(ns, function(){
- if(!Ext.Array.contains(fd, String(this))) {
- data.push({display: this, value: this});
- fd.push(String(this));
- }
- });
- c.store.loadData(data);
- }
- var v = c.value;
- if(!Ext.isEmpty(v)) {
- grid.store.clearFilter(true);
- if(v != ' ') {
- this.store.filter(new Ext.util.Filter({
- filterFn: function(item) {
- return item.get('jo_name') == v;
- }
- }));
- } else {
- grid.store.filter(new Ext.util.Filter({
- filterFn: function(item) {
- return true;
- }
- }));
- }
- }
- }
- });
|