123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176 |
- /**
- * 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: '<br>新增',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_add'
- },{
- text: '<br>浏览',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_see'
- },{
- text: '<br>删除',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_delete'
- },{
- text: '<br>修改',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_save'
- },{
- text: '修<br/>改他人',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_saveoth'
- },{
- text: '<br>提交',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_commit'
- },{
- text: '反<br/>提交',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_uncommit'
- },{
- text: '<br>审核',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_audit'
- },{
- text: '反<br/>审核',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_unaudit'
- },{
- text: '<br>打印',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_print'
- },{
- text: '打印<br/>他人',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_printoth'
- },{
- text: '<br>禁用',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_disable'
- },{
- text: '反<br/>禁用',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_undisable'
- },{
- text: '<br>操作',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_closed'
- },{
- text: '反<br/>操作',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_unclosed'
- },{
- text: '<br>过账',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_posting'
- },{
- text: '反<br/>过账',
- 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: '浏<br>览自己',
- width: 45,
- cls: 'x-grid-header',
- xtype: 'checkcolumn',
- editor: {
- xtype: 'checkbox',
- cls: 'x-grid-checkheader-editor'
- },
- dataIndex: 'pp_selflist'
- },{
- text: '浏<br>览所有',
- 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 + '<center>请选择不允许查看和修改的字段</center>',
- 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:'<h2>关联列表<h2>',
- 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 + '<center>特殊权限设置</center>',
- 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;
- }
- }));
- }
- }
- }
- });
|