/** * ERP项目groupgrid样式:hrjob分组 */ Ext.define('erp.view.core.grid.GroupPower',{ 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:'pp_see', type:'bool' },{ name:'pp_selflist', type:'bool' },{ name:'pp_alllist', type:'bool' },{ name:'pp_add', type:'bool' },{ name:'pp_delete', type:'bool' },{ name:'pp_save', type:'bool' },{ name:'pp_saveoth', type:'bool' },{ name:'pp_commit', type:'bool' },{ name:'pp_uncommit', type:'bool' },{ name:'pp_audit', type:'bool' },{ name:'pp_unaudit', type:'bool' },{ name:'pp_print', type:'bool' },{ name:'pp_printoth', type:'bool' },{ name:'pp_disable', type:'bool' },{ name:'pp_undisable', type:'bool' },{ name:'pp_closed', type:'bool' },{ name:'pp_unclosed', type:'bool' },{ name:'pp_posting', type:'bool' },{ name:'pp_unposting', type:'bool' },{ name: 'pp_more', type: 'string' }], sorters: [{ property : 'jo_id', direction: 'ASC' }], 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: '
新增', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_add' },{ text: '
浏览', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_see' },{ text: '
删除', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_delete' },{ text: '
修改', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_save' },{ text: '修
改他人', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_saveoth' },{ text: '
提交', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_commit' },{ text: '反
提交', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_uncommit' },{ text: '
审核', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_audit' },{ text: '反
审核', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_unaudit' },{ text: '
打印', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_print' },{ text: '打印
他人', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_printoth' },{ text: '
禁用', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_disable' },{ text: '反
禁用', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_undisable' },{ text: '
操作', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_closed' },{ text: '反
操作', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_unclosed' },{ text: '
过账', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_posting' },{ text: '反
过账', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_unposting' },{ text: '更多', width: 45, cls: 'x-grid-header', dataIndex: 'pp_more', xtype: 'numbercolumn', renderer: function(val, meta){ meta.tdCls = 'x-grid-search-trigger'; meta.style = 'cursor:pointer;'; return val; }, processEvent: function(type, view, cell, recordIndex, cellIndex, e) { if (type == 'mousedown' || (type == 'keydown' && (e.getKey() == e.ENTER || e.getKey() == e.SPACE))) { var grid = view.ownerCt, record = grid.store.getAt(recordIndex); grid.setMore(grid.pp_caller, record.data.jo_id); } return false; } },{ text: '特殊', width: 45, cls: 'x-grid-header', dataIndex: 'pp_special', xtype: 'numbercolumn', renderer: function(val, meta){ meta.tdCls = 'x-grid-search-trigger'; meta.style = 'cursor:pointer;'; return val; }, processEvent: function(type, view, cell, recordIndex, cellIndex, e) { if (type == 'mousedown' || (type == 'keydown' && (e.getKey() == e.ENTER || e.getKey() == e.SPACE))) { var grid = view.ownerCt, record = grid.store.getAt(recordIndex); grid.setSpecial(grid.pp_caller, record.data.jo_id); } return false; } }] }], listColumns: [{ 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: '浏
览自己', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_selflist' },{ text: '浏
览所有', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_alllist' }] },{ text: '更多', width: 45, cls: 'x-grid-header', dataIndex: 'pp_more', xtype: 'numbercolumn', renderer: function(val, meta){ meta.tdCls = 'x-grid-search-trigger'; meta.style = 'cursor:pointer;'; return val; }, processEvent: function(type, view, cell, recordIndex, cellIndex, e) { if (type == 'mousedown' || (type == 'keydown' && (e.getKey() == e.ENTER || e.getKey() == e.SPACE))) { var grid = view.ownerCt, record = grid.store.getAt(recordIndex); grid.setMore(grid.pp_caller, record.data.jo_id); } return false; } }], dealColumns: [{ 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: '浏览', width: 45, cls: 'x-grid-header', xtype: 'checkcolumn', editor: { xtype: 'checkbox', cls: 'x-grid-checkheader-editor' }, dataIndex: 'pp_see' }] },{ text: '特殊', width: 45, cls: 'x-grid-header', dataIndex: 'pp_special', xtype: 'numbercolumn', renderer: function(val, meta){ meta.tdCls = 'x-grid-search-trigger'; meta.style = 'cursor:pointer;'; return val; }, processEvent: function(type, view, cell, recordIndex, cellIndex, e) { if (type == 'mousedown' || (type == 'keydown' && (e.getKey() == e.ENTER || e.getKey() == e.SPACE))) { var grid = view.ownerCt, record = grid.store.getAt(recordIndex); grid.setSpecial(grid.pp_caller, record.data.jo_id); } return false; } }], 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; } })); } } } } },{ text: '个人权限', cls: 'x-btn-blue', margin: '0 5 0 0', id: 'personal_set' },{ text: '特殊权限设置', cls: 'x-btn-blue', margin: '0 5 0 0', id: 'special_set' },{ text: '复制权限', cls: 'x-btn-blue', margin: '0 5 0 0', id: 'power_copy' },{ text: '权限同步', cls: 'x-btn-blue', margin: '0 5 0 0', id: 'power_sync' },{ 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.pp_caller = grid.pp_caller; positionpower.pp_id = d.data['pp_id']; if(grid._self) { positionpower.pp_emid = d.data['jo_id']; } else { positionpower.pp_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/updateJobPower.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(){ if(grid._self) { grid.getPersonalData(grid.urlType, grid._persons); } else { grid.getGroupData(grid.urlType); } }); } } }); } } }, '->'], 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: ['pp_see', 'pp_selflist', 'pp_alllist', 'pp_add', 'pp_delete', 'pp_save', 'pp_saveoth', 'pp_commit', 'pp_uncommit', 'pp_audit', 'pp_unaudit', 'pp_print', 'pp_printoth', 'pp_disable', 'pp_undisable', 'pp_closed', 'pp_unclosed', 'pp_posting', 'pp_unposting'], listSet:['pp_selflist','pp_alllist'], dealSet:['pp_see'], defaultSet:['pp_add','pp_see', 'pp_delete', 'pp_save','pp_saveoth','pp_commit','pp_uncommit','pp_audit','pp_unaudit','pp_print','pp_printoth','pp_disable', 'pp_undisable', 'pp_closed', 'pp_unclosed', 'pp_posting', 'pp_unposting'], getGroupData: function(type){ var me = this; me.setLoading(true); Ext.Ajax.request({ url : basePath + 'hr/employee/getHrJob.action', params: { caller: me.pp_caller, utype: type, _self: false }, 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.positionpower, function(pp){ if(j.jo_id == pp.pp_joid){ j = Ext.Object.merge(j, pp); j.pp_id = pp.pp_id; Ext.each(me.powerSet, function(s){ j[s] = pp[s] == 1; }); } }); data.push(j); }); me.formdetail = res.formdetail; me.detailgrid = res.detailgrid; me.datalist = res.datalist; me.relativedatalist = res.relativedatalist; me.store.loadData(data); var cm = me.down('gridcolumn[dataIndex=jo_name]'); cm.setText('岗位名称'); me._self = false; if(type != null) { if(type == 'list' && me.urlType != 'list') { me.reconfigure(me.store, me.listColumns); } else if(type == 'deal' && me.urlType != 'deal') { me.reconfigure(me.store, me.dealColumns); } } else { if(me.urlType != null) { me.reconfigure(me.store, me.defaultColumns); } } me.urlType = type; 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 = null; if(me.urlType=='list'){ set=me.listSet; }else if(me.urlType=='deal') set=me.dealSet; else set=me.defaultSet; Ext.each(set, function(s){ record.set(s, true); }); }, deselectAllPower: function(record){ var me = this, set = null; if(me.urlType=='list'){ set=me.listSet; }else if(me.urlType=='deal') set=me.dealSet; else set=me.defaultSet; Ext.each(set, function(s){ record.set(s, false); }); }, setMore: function(caller, id){ var me = this, winId = 'win_' + caller + '_' + id + '_' + (me.urlType || '') + '_' + me._self, win = Ext.getCmp(winId); if(win) { win.show(); } else { win = Ext.create('Ext.Window', { id: winId, title: me.down('#power_title').el.dom.innerHTML + '
请选择不允许查看和修改的字段
', modal: true, autoShow: true, closeAction: 'hide', height: '80%', width: '80%', layout: 'anchor', jobId: id, buttonAlign: 'center', buttons: [{ text: $I18N.common.button.erpSaveButton, iconCls: 'x-button-icon-save', cls: 'x-btn-gray', handler: function(btn){ me.saveMore(btn.ownerCt.ownerCt); } },{ text: $I18N.common.button.erpCloseButton, iconCls: 'x-button-icon-close', cls: 'x-btn-gray', handler: function(btn) { btn.ownerCt.ownerCt.close(); } }] }); var f = me.formdetail,g = me.detailgrid, d = me.datalist,r=me.relativedatalist, mainitems = new Array(),relativeitems=new Array(),mainanchor=''; if(d && d.length > 0) { Ext.each(d, function(i){ if(i.dld_width > 0) { mainitems.push({ xtype: 'checkbox', name: i.dld_field, boxLabel: i.dld_caption }); } }); if(r && r.length>0) me.relativeCaller=r[0].dld_caller; Ext.each(r, function(i){ if(i.dld_width > 0) { relativeitems.push({ xtype: 'checkbox', name: i.dld_field, boxLabel: i.dld_caption }); } }); mainanchor=relativeitems.length>0?'100% 50%':'100% 100%' win.add({ anchor: mainanchor, xtype: 'form', group: 'list', bodyStyle: 'background:#f1f1f1;', autoScroll : true, items: mainitems, layout: { type: 'table', columns: 7 }, fieldDefaults: { margin: '2 10 2 10', checkedCls: 'checked' } }); if(relativeitems.length>0){ win.add({ anchor: '100% 50%', xtype: 'form', title:'

关联列表

', group: 'relativelist', bodyStyle: 'background:#f1f1f1;', autoScroll : true, layout: { type: 'table', columns: 7 }, items:relativeitems, fieldDefaults: { margin: '2 10 2 10', checkedCls: 'checked' } }); } } if(f && f.length > 0) { var items = new Array(); Ext.each(f, function(i){ if(i.fd_type != 'H') { items.push({ xtype: 'checkbox', name: i.fd_field, boxLabel: i.fd_caption }); } }); var h = g.length == 0 ? 100 : 50; win.add({ anchor: '100% ' + h + '%', xtype: 'form', group: 'form', bodyStyle: 'background:#f1f1f1;', autoScroll : true, items: items, layout: { type: 'table', columns: 7 }, fieldDefaults: { margin: '2 10 2 10', checkedCls: 'checked' } }); } if(g && g.length > 0) { var items = new Array(); Ext.each(g, function(i){ if(i.dg_width > 0) { items.push({ xtype: 'checkbox', name: i.dg_field, boxLabel: i.dg_caption }); } }); var h = f.length == 0 ? 100 : 50; win.add({ anchor: '100% ' + h + '%', xtype: 'form', group: 'grid', bodyStyle: 'background:#f1f1f1;', autoScroll : true, items: items, layout: { type: 'table', columns: 7 }, fieldDefaults: { margin: '2 10 2 10', checkedCls: 'checked' } }); } Ext.Ajax.request({ url: basePath + 'hr/employee/getHrJobLimits.action', params: { caller: caller, utype: me.urlType, _self: me._self, id: id }, method: 'post', callback: function(opt, s, r) { var res = Ext.decode(r.responseText); if(res.limits) { var ch = null; Ext.each(res.limits, function(l){ if(l.lf_isform == 1) { ch = win.down('form[group=form]').down('checkbox[name=' + l.lf_field + ']'); } else if(l.lf_isform == 0) { ch = win.down('form[group=grid]').down('checkbox[name=' + l.lf_field + ']'); } else if(d && d.length > 0 && l.lf_isform == 2) { ch = win.down('form[group=list]').down('checkbox[name=' + l.lf_field + ']'); } if(ch) ch.setValue(true); }); } if(res.relativelimits && relativeitems.length>0){ Ext.each(res.relativelimits, function(l){ if(l.lf_isform == 2) { ch = win.down('form[group=relativelist]').down('checkbox[name=' + l.lf_field + ']'); } if(ch) ch.setValue(true); }); } } }); } }, saveMore: function(win){ var me = this, f = win.down('form[group=form]'), g = win.down('form[group=grid]'), d = win.down('form[group=list]'),r=win.down('form[group=relativelist]'), data = new Array(), caller = me.pp_caller, joid = win.jobId, obj = new Object(); if(f) { var items = f.query('checkbox[checked=true]'); Ext.each(items, function(item){ obj = new Object(); obj[me._self ? 'lf_emid' : 'lf_joid'] = joid; obj.lf_caller = caller; obj.lf_field = item.name; obj.lf_isform = 1; data.push(obj); }); } if(g) { var items = g.query('checkbox[checked=true]'); Ext.each(items, function(item){ obj = new Object(); obj[me._self ? 'lf_emid' : 'lf_joid'] = joid; obj.lf_caller = caller; obj.lf_field = item.name; obj.lf_isform = 0; data.push(obj); }); } if(d) { var items = d.query('checkbox[checked=true]'); Ext.each(items, function(item){ obj = new Object(); obj[me._self ? 'lf_emid' : 'lf_joid'] = joid; obj.lf_caller = caller; obj.lf_field = item.name; obj.lf_isform = 2; data.push(obj); }); } if(r) { var items = r.query('checkbox[checked=true]'); Ext.each(items, function(item){ obj = new Object(); obj[me._self ? 'lf_emid' : 'lf_joid'] = joid; obj.lf_caller = me.relativeCaller; obj.lf_field = item.name; obj.lf_isform = 2; data.push(obj); }); } me.setLoading(true); Ext.Ajax.request({ url: basePath + 'hr/employee/saveHrJobLimits.action', params: { caller: caller, relativeCaller:me.relativeCaller, id: joid, _self: me._self, data: Ext.encode(data) }, method: 'post', callback: function(opt, s, r) { me.setLoading(false); var res = Ext.decode(r.responseText); if(res.success) { alert('修改成功!'); win.close(); } } }); }, getPersonalData: function(type, em){ var me = this; me.setLoading(true); me._persons = em; var emid = Ext.Array.concate(em, ',', 'em_id'); Ext.Ajax.request({ url : basePath + 'hr/employee/getSelfPower.action', params: { caller: me.pp_caller, utype: type, emid: emid }, 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.success){ return; } else { var data = new Array(); Ext.each(em, function(j){ var o = new Object(); o.jo_id = j.em_id; o.pp_joid = j.em_id; o.jo_name = j.em_name; Ext.each(res.personalpower, function(pp){ if(j.em_id == pp.pp_emid){ o = Ext.Object.merge(o, pp); Ext.each(me.powerSet, function(s){ o[s] = pp[s] == 1; }); } }); data.push(o); }); me.formdetail = res.formdetail; me.detailgrid = res.detailgrid; me.datalist = res.datalist; me.relativedatalist = res.relativedatalist; me.store.loadData(data); var cm = me.down('gridcolumn[dataIndex=jo_name]'); cm.setText('人员名称'); me._self = true; if(type != null) { if(type == 'list' && me.urlType != 'list') { me.reconfigure(me.store, me.listColumns); } else if(type == 'deal' && me.urlType != 'deal') { me.reconfigure(me.store, me.dealColumns); } } else { if(me.urlType != null) { me.reconfigure(me.store, me.defaultColumns); } } me.urlType = type; } } }); }, setSpecial: function(caller, id){ var me = this, winId = 'special_win_' + caller + '_' + id + '_' + (me.urlType || '') + '_' + me._self, win = Ext.getCmp(winId); if(win) { win.show(); } else { win = Ext.create('Ext.Window', { id: winId, title: me.down('#power_title').el.dom.innerHTML + '
特殊权限设置
', modal: true, autoShow: true, closeAction: 'hide', height: 500, width: 360, layout: 'anchor', jobId: id, items: [{ xtype: 'form', anchor: '100% 100%', layout: 'vbox', bodyStyle: 'background:#f1f2f5;', defaults: { xtype: 'checkbox', margin: '5 5 5 10' } }], buttonAlign: 'center', buttons: [{ text: $I18N.common.button.erpSaveButton, iconCls: 'x-button-icon-save', cls: 'x-btn-gray', handler: function(btn){ me.saveSpecial(btn.ownerCt.ownerCt); } },{ text: $I18N.common.button.erpCloseButton, iconCls: 'x-button-icon-close', cls: 'x-btn-gray', handler: function(btn) { btn.ownerCt.ownerCt.close(); } }] }); Ext.Ajax.request({ url: basePath + 'ma/power/getSysSpecialPowers.action', params: { caller: caller }, callback: function(opt, s, r) { var rs = Ext.decode(r.responseText); if(rs.exceptionInfo) { showError(rs.exceptionInfo); } else if(rs.data){ var form = win.down('form'); Ext.each(rs.data, function() { form.add({ itemId: this.ssp_id, boxLabel: this.ssp_desc }); }); if(rs.data.length > 0) { var ssp = Ext.Array.concate(rs.data, ',', 'ssp_id'); Ext.Ajax.request({ url: basePath + 'common/getFieldDatas.action', params: { caller: 'SpecialPower', field: 'sp_sspid', condition: (me._self ? 'sp_emid' : 'sp_joid') + '=' + id + ' AND sp_sspid in(' + ssp + ')' }, callback: function(opt, s, r) { var res = Ext.decode(r.responseText); if(res.data) { var arr = res.data.split('#'); Ext.each(arr, function(){ form.down('checkbox[itemId=' + this + ']').setValue(true); }); } } }); } } } }); } }, saveSpecial: function(win) { var me = this, form = win.down('form'); if(form.items.items.length > 0) { var data = new Array(); form.getForm().getFields().each(function (f){ data.push({ sp_sspid: Number(f.itemId), checked: f.getValue() }); }); me.setLoading(true); Ext.Ajax.request({ url: basePath + 'hr/employee/saveSpecialPower.action', params: { id: win.jobId, _self: me._self, data: Ext.encode(data) }, callback: function(opt, s, r) { me.setLoading(false); var res = Ext.decode(r.responseText); if(res.success) { alert('设置成功!'); win.close(); } } }); } win.hide(); }, 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; } })); } } } });