ext表格分组

本文介绍了一个员工考核系统的实现细节,包括使用Ext框架构建界面、数据加载及处理逻辑、考核评分规则等。系统能够动态获取考核指标,并根据评分情况自动计算总分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var zhpj=0;
function add_assess(data,year,qm,tid,flag){
    var zhpj=0,qzdf=0; 
	var gridURL=basePath+'/SystemListener?className=cn.com.perfor.emplAssess.service.EmplAssessService&methodName=getEmplAssess¶mCount=6¶m_0='+data.STB_ROLE_PASSIVE_ID+'¶m_1='+year+'¶m_2='+qm+'¶m_3='+tid+'¶m_4='+flag+'¶m_5='+userid;	
	var reader;
	if(flag=='add'){
		reader=new Ext.data.JsonReader({
			fields:[{name:'F_CON',type:'string'},{name:'STB_ASSESS_CRIT_FRAC',type:'float'},
					{name:'STB_ASSESS_CRIT_STAND',type:'string'},{name:'STB_ASSESS_CRIT_ID',type:'int'},
					{name:'STB_ASSESS_CON',type:'string'},{name:'STB_ASSESS_SCORE',type:'float'},{name:'STB_ASSESS_DEFEN',type:'float'},{name:'STB_ASSESS_REASON',type:'string'},
					{name:'SELF_ASSESS',type:'float'},{name:'F_STATE',type:'float'}]
		})	
	}else if(flag=='edit'){
		reader=new Ext.data.JsonReader({
			fields:[{name:'F_CON',type:'string'},{name:'STB_ASSESS_CRIT_FRAC',type:'float'},
					{name:'STB_ASSESS_CRIT_STAND',type:'string'},{name:'STB_ASSESS_CRIT_ID',type:'int'},
					{name:'STB_ASSESS_CON',type:'string'},{name:'STB_ASSESS_SCORE',type:'float'},{name:'STB_ASSESS_DEFEN',type:'float'},{name:'STB_ASSESS_REASON',type:'string'},
					{name:'SELF_ASSESS',type:'float'},{name:'F_STATE',type:'float'}]
		})	
	}
	
	var store=new Ext.data.GroupingStore({
	 	id:'storeID',
		proxy:new Ext.data.HttpProxy({url:gridURL}),
		reader:reader,
		groupField:'F_CON'
		
	})	

	store.load();
	
	var score_blur=false;
	
	store.on('load',function(store,records,options){
		
//		    var girdcount=0;
//	        store.each(function(r){
//	            if(r.get('STB_ASSESS_CON')=='一票否决项')
//	            {
//	                grid.getView().getRow(0).style.backgroundColor='#FFFF00';
//	            }
//	            girdcount=girdcount+1;
//	        });
		        
		for(var i=0;i<records.length;i++){
			if(flag=='add')
		       records[i].data.STB_ASSESS_DEFEN=records[i].get('STB_ASSESS_CRIT_FRAC')-records[i].get('STB_ASSESS_SCORE')
		  	else if(flag=='edit'){
			 	records[i].data.STB_ASSESS_SCORE=records[i].get('STB_ASSESS_CRIT_FRAC')-records[i].get('STB_ASSESS_DEFEN')
			 	
			 }		
		}

	})
	
	var summary = new Ext.ux.grid.GroupSummary();	
	var cm=new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(),
		{header:'考核ID',id:'STB_ASSESS_CRIT_ID',dataIndex:'STB_ASSESS_CRIT_ID',hidden:true},
		{header:'F_STATE',id:'F_STATE',dataIndex:'F_STATE',summaryType:'average',hidden:true},
		{header:'考核分类',id:'F_CON',dataIndex:'F_CON',hidden:true},		
		{header:'<div style="text-align:center">考核项目</div>',id:'STB_ASSESS_CON',dataIndex:'STB_ASSESS_CON',width:100
		,renderer: function(value, meta, record) 
			{     
              	 
              	 if(value=="一票否决项")
              	 {
              	 	meta.attr = 'style="white-space:normal;"';
              	 	return '<font style="color:red">'+value+'</font>'
              	 }else
              	 {
	              	 meta.attr = 'style="white-space:normal;"';	
			         return value;      
              	 }
		    } 
		
		},

		{header:'<div style="text-align:center">考核内容</div>',id:'STB_ASSESS_CRIT_STAND',dataIndex:'STB_ASSESS_CRIT_STAND',width:400,
				renderer: function(value, meta, record) { 
			     	meta.attr = 'style="white-space:normal;"';
		         return value;      
		    } },
		{header:'标准分值',id:'STB_ASSESS_CRIT_FRAC',align:'center',width:50,dataIndex:'STB_ASSESS_CRIT_FRAC',summaryType: 'sum',
			summaryRenderer: function(v, params, data){
				
                    return ((v === 0 || v > 1) ? '总分(' + v +')' : '(1 分)');
                }
         },	
              
	 {header:'扣分',id:'STB_ASSESS_SCORE',dataIndex:'STB_ASSESS_SCORE',align:'center',width:50,
                editor: new Ext.form.NumberField({
                	id:'STB_ASSESS_SCORE',
                    allowBlank: false,
				    listeners : {
						'blur' : function() {
							 score_blur=true;
						}
					}
                }),<span style="color:#ffff99;">summaryType: 'sum',
			summaryRenderer: function(v, params, record){
					
                    return ((v === 0 || v > 1) ? '<font style="color:red">扣分(' + v +')</font>'  : '(1 分)');
                },
</span>				renderer : function(value, cellmeta, record, rowIndex)
				  { 
					if(score_blur)
						{
						 if(record.data.STB_ASSESS_CON=="一票否决项")
						  {   
							var count=Ext.getCmp('grid_id').getStore().getCount();
							for(var i=0;i<count;i++)
							{
								
								Ext.getCmp('grid_id').getStore().getAt(i).set("STB_ASSESS_DEFEN",0);
								Ext.getCmp('grid_id').getStore().getAt(1).set("STB_ASSESS_DEFEN",0);
								
							}
						   	record.data.STB_ASSESS_DEFEN=0;
						 }else
						  {
					 	    record.data.STB_ASSESS_DEFEN=record.get('STB_ASSESS_CRIT_FRAC')-value
					 	    score_blur=false;
						  }
					 }				
					return value;
				}	},
        {header:'得分',id:'STB_ASSESS_DEFEN',align:'center',width:50,dataIndex:'STB_ASSESS_DEFEN',summaryType: 'sum',
			summaryRenderer: function(v, params, record){
					if(record.data.F_STATE==2){
						zhpj=v*0.2;
					}else{
						qzdf=v*0.4;
					}
				 	Ext.getCmp('U_NM1').setValue(Math.round((qzdf+zhpj)*1000)/1000)
                    return ((v === 0 || v > 1) ? '得分(' + v +')' : '(1 分)');
                }
         },	
        {header:'扣分原因',id:'STB_ASSESS_REASON',dataIndex:'STB_ASSESS_REASON',align:'center',width:250,
                editor: new Ext.form.TextArea({
                	id:'STB_ASSESS_REASON',
                   allowBlank: false
                }),
				renderer: function(value, meta, record) { 
			     	meta.attr = 'style="white-space:normal;"';
		         return value;      
		    } }]
	)
	
	var u_nm_text=new TEXTFIELD('U_NM','',100,true,false,data.U_NM);
		 
	var u_nm_text1= new Ext.form.TextField({
										id:"U_NM1",
										fieldLabel:"",
										readOnly : true ,
										width:90
									})
	var save=new Ext.Action({
			text : '保存',
			id : 'save',
			handler : function() {
				save_data(data.STB_ROLE_PASSIVE_ID);
			},
			iconCls : 'save'
		})	
	
	var grid=new Ext.grid.EditorGridPanel({
	 	id:'grid_id',
		border:true,
		frame:false,
		store:store,
		cm:cm,
        view: new Ext.grid.GroupingView({
            forceFit: true,
            showGroupName: false,
            enableNoGroups: false,
			enableGroupingMenu: false,
            hideGroupedColumn: true
        }),   
        plugins: summary,
		tbar:['被考核人姓名:',u_nm_text,'-',save]//    ,'->','总得分:',u_nm_text1]
	})
	
	var tabTitle="人员考核";
	addMCPanel = new Ext.Panel({
				id:"paneladd",
				title : tabTitle,
				iconCls: 'tabs',
				tabWidth: 385,
				closable:true,
				layout : "fit",
				frame:true,
				border:false,		
				items:[grid]
			});	
			
	tabs.add(addMCPanel);		
	tabs.setActiveTab(addMCPanel);	
	
function save_data(id){	
	var rows="";
	var STB_ASSESS_USER_ID=id;
	var U_ID=userid;

	for(var i=0;i<store.data.length;i++){
		var STB_ASSESS_CRIT_ID=store.getAt(i).get('STB_ASSESS_CRIT_ID');
		var STB_ASSESS_CON=store.getAt(i).get('STB_ASSESS_CON');
		var STB_ASSESS_CRIT_FRAC=store.getAt(i).get('STB_ASSESS_CRIT_FRAC');
		var STB_ASSESS_DEFEN=store.getAt(i).get('STB_ASSESS_DEFEN');
		var STB_ASSESS_REASON=store.getAt(i).get('STB_ASSESS_REASON');
		 
		if(STB_ASSESS_DEFEN>STB_ASSESS_CRIT_FRAC){
			Ext.Msg.show({
				title : '提示',
				msg : STB_ASSESS_CON+'评分不能超过标准分!',
				buttons : Ext.Msg.OK,
				icon : Ext.MessageBox.INFO
			});		
			return;
		}

								
		rows+=STB_ASSESS_CRIT_ID+"_"+STB_ASSESS_DEFEN+"_"+encodeURIComponent(encodeURIComponent(STB_ASSESS_REASON))+"\|";
	}
	 
	var obj=new Object();
	obj.STB_ASSESS_USER_ID=STB_ASSESS_USER_ID;
	obj.STB_YEAR_VALUE=year;
	obj.STB_QM_VALUE=qm;
	obj.STB_DATESTATE=tid;
	obj.U_ID=U_ID;
	obj.ROWS=rows;
  
	var param_0=Ext.util.JSON.encode(obj);
	var saveUrl=basePath+'/SystemListener?className=cn.com.perfor.emplAssess.service.EmplAssessService&methodName=save_data¶mCount=1¶m_0='+param_0;
	
	Ext.Ajax.request({
		url:saveUrl,
		success:function(response,result){
			var data = response.responseText;
			if(data=="1"){
				Ext.Msg.show({
					title : '提示',
					msg : '保存成功!',
					buttons : Ext.Msg.OK,
					icon : Ext.MessageBox.INFO
				});
				tabs.items.each(function(item) {if (item.closable ){tabs.remove(item);}});
				var year=Ext.getCmp('year_combo').getValue();
				var qm=Ext.getCmp('quarterOrMonth_combo').getValue();
				assess_gridURL=path+'jsp/perfor/emplAssess/empl_assess/data/assess_data.jsp?user_id='+userid+'&role_id='+roleid+'&tid='+tid+'&year='+year+'&qm='+qm;	
				updateGRID('assess_grid_id',assess_gridURL);				
				
			}else{
				Ext.Msg.show({
					title : '提示',
					msg : '保存失败!',
					buttons : Ext.Msg.OK,
					icon : Ext.MessageBox.ERROR
				});	
			}

		}
	})	
}	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值