组件的基本应用

原创 2012年03月21日 20:27:07
Ext.onReady(function() {
	/**
	 * 初始化Ext.QuickTips,以使得tip提示可用
	 */
	Ext.QuickTips.init();
	
	
	/**
	 * 底部按钮
	 */
	var enterBtn = new Ext.FormPanel({
		labelWidth : 50,

		frame : true,
		//	title : '上半部分',
		bodyStyle : 'padding:5px 5px 0',
		width : '100%',
		height : 20,
		buttonAlign : "center", 
		margins : '5 5 0',
		split : true,
        buttons: [{
        	
            text: L_submit,
            type: 'submit',
            handler: function(){
            	
            	Ext.MessageBox.confirm('确认提交','你确认提交数据吗?',function(btn){
            		if(btn == "yes"){
            			
            			if(makeOutForm.getForm().isValid()){
            				
	            			var mof = makeOutForm.getForm().getValues();
	            			//将地址真实值赋进对象中
	            			mof.infoStorePlace = makeOutForm.getForm().findField("infoStorePlace").getValue();
	            			
	            			var reaginfo = Ext.util.JSON.encode(mof);      //试剂入库单    
//			            	alert(reaginfo);
			            	            	          	
			            	var reagMxData = new Array();                  //试剂入库详细信息数组
			            	var rowsMx = Ext.getCmp("readMxgrid").store.getCount();    //获得所有的行
			            	var reagRecord;        //存放具体某一行数据
			            	var reagmxinfo;		   //数组中的对象	
			            	for (var i = 0; i < rowsMx; i++) {
			            		reagmxinfo = {};
			            		reagRecord = Ext.getCmp("readMxgrid").store.getAt(i);
			            		
			            		if(reagRecord.get("reagentNum")){
//			            			
			            			reagmxinfo.reagentNum = reagRecord.get("reagentNum");
			            			reagmxinfo.reagentRemark = reagRecord.get("reagentRemark");
			            			reagMxData.push(reagmxinfo);
			            		}
			            	}
			            	//判断FC入库扫描 编号是否重复
			            	for (var i = 0; i < reagMxData.length; i++) {
			            		for (var j = i+1; j < reagMxData.length; j++) {   
			            			if(reagMxData[i].reagentNum == reagMxData[j].reagentNum){
			            				alert(i+','+j);
			            				alert('cBot入库扫描编号:'+reagMxData[i].reagentNum+',在'+(i+1)+','+(j+1)+'行重复!');
			            				return;
			            			}
			            		}
			            	}
			            	
			            	var reagInfoMx = Ext.util.JSON.encode(reagMxData);  		            	
			            	
			            		
	        				/**
			            	 * Ext 效验数据有效性 提交保存数据
			            	 */
			            	Ext.Ajax.request({
			            		url:BasicUrl+'/reagInfo.htm?cmd=checkreaginfo',
			            		method:'POST',
			            		params:{
			            			'reagInfo': reaginfo
			            		},
			            		success:function(result,action){
			            			
			            			var resultJson = Ext.util.JSON.decode(result.responseText);
			            			/**
			            			 *  如果 lot号+批次存在 则查看改入库单是否已检测
			            			 */
			            			//不是状未检测态则弹出对话框直接返回该入库单号,提示已经进入质检状态,不可添加数据。
			            			if(resultJson.resultLot2){
			            				Ext.Msg.alert('提示:',resultJson.resultLot2);
			            				return;
			            			};
			            			//未检测则返回提示,提示已经入库,是否增加新试剂信息,是则继续提交功能。
			            			if(resultJson.resultLot == 'weijiance'){
			            				Ext.MessageBox.confirm('提示','LOT号+入库批次已存在,试剂状态为未检测,是否增加新试剂信息?',function(btn){
			            				
			            					if(btn == 'yes'){
			            						//效验reaginfomx信息
				        						Ext.Ajax.request({
								            		url:BasicUrl+'/reagInfo.htm?cmd=checkreaginfomx',
								            		method:'POST',
								            		params:{
								            			'reagInfoMx': reagInfoMx
								            		},
								            		success:function(result1,action){
								            		
								            			var resultJson2 = Ext.util.JSON.decode(result1.responseText);
								            			
								            			
								            			//如果数据的信息中 在数据库有重复的编号 则回选表格中的行
								            			if(resultJson2.resultReagMxNumber){
									            			//此处还需要 处理 重复行 回选事件
									            			var num = resultJson2.resultReagMxNumber -1 ;	
									            			Ext.Msg.alert("提示:",resultJson2.resultReagMx);
									            			grid.getView().getRow(num).style.backgroundColor = '#F5C0C0';
									            		}
								            			//如果数据的信息中 在数据库没有重复的 则保存数据
								            			if(!resultJson2.resultReagMxNumber){					            				
								            				//保存数据
									            			Ext.Ajax.request({
											            		url:BasicUrl+'/reagInfo.htm?cmd=updatereaginfo',
											            		method:'POST',
											            		params:{
											            			'reagInfo': reaginfo,
											            			'reagInfoMx': reagInfoMx
											            		},
											            		success:function(result3,action){
											            			
											            			var resultJson3 = Ext.util.JSON.decode(result3.responseText);
											            			
											            			if(resultJson3.success){
												            			Ext.Msg.alert("提示:",resultJson3.success);
											            			}										            			
											            		},
											            		failure:function(){
											            			Ext.Msg.alert("提示:","数据保存失败!");
											            		}
											            	}); 
								            			}		            			
								            			
								            		},
								            		failure:function(){
								            			
								            		}
								            	}); 
			            					}
			            					
			            				})  
			            			}
			            			
			            			/**
			            			 * 如果 lot号+批次不存在 则查找是否存在(‘录入编号’)
			            			 */
			            			if(!resultJson.cunzai){
				            			//效验reaginfomx信息
		        						Ext.Ajax.request({
						            		url:BasicUrl+'/reagInfo.htm?cmd=checkreaginfomx',
						            		method:'POST',
						            		params:{
						            			'reagInfoMx': reagInfoMx
						            		},
						            		success:function(result1,action){
						            		
						            			var resultJson2 = Ext.util.JSON.decode(result1.responseText);
						            			
//						            			alert(result1.responseText);
						            			//如果数据的信息中 在数据库有重复的编号 则回选表格中的行
						            			if(resultJson2.resultReagMxNumber){
							            			//此处还需要 处理 重复行 回选事件
							            			var num = resultJson2.resultReagMxNumber -1 ;	
							            			Ext.Msg.alert("提示:",resultJson2.resultReagMx);
							            			grid.getView().getRow(num).style.backgroundColor = '#F5C0C0';
							            			
						            				
						            			}
						            			//如果数据的信息中 在数据库没有重复的 则保存数据
						            			if(!resultJson2.resultReagMxNumber){					            				
						            				//保存数据
							            			Ext.Ajax.request({
									            		url:BasicUrl+'/reagInfo.htm?cmd=add',
									            		method:'POST',
									            		params:{
									            			'reagInfo': reaginfo,
									            			'reagInfoMx': reagInfoMx
									            		},
									            		success:function(result3,action){
									            			var resultJson3 = Ext.util.JSON.decode(result3.responseText);
									            			
									            			if(resultJson3.success){
										            			Ext.Msg.alert("提示:",resultJson3.success);
									            			}										            			
									            		},
									            		failure:function(){
									            			Ext.Msg.alert("提示:",'数据保存失败!');
									            		}
									            	}); 
						            			}
						            		},
						            		failure:function(){
						            			
						            		}
						            	}); 
			            			}
			            		},
			            		failure:function(){
			            			
			            		}
			            	});         			
            			}
		            }            		
            	})
             }
        }]
	});
	
	
	
	var textEditor = new Ext.grid.GridEditor(new Ext.form.TextField());
    
	var arrdata = new Array();
	for (var i = 0; i < 100; i++) {
		arrdata[i] = new Array();
		for (var j = 0; j < 2; j++) {
			arrdata[i][j] = '';
		}
	}	
	
	var proxy = new Ext.data.MemoryProxy(arrdata);
	
	var ReagInfo = Ext.data.Record.create([{
						name:'reagentNum',
                      	type:'string',
                      	mapping:0
                     },{
                    	name:'reagentRemark',
                   	    type:'string',
                   	    mapping:1
                     }]);
		
	var reader = new Ext.data.ArrayReader({},ReagInfo);
                     
    var store = new Ext.data.Store({
        reader: reader,
        proxy:proxy,
        autoLoad:true
    });
    
    var sm = new Ext.grid.CheckboxSelectionModel();
    
    var cm = new Ext.grid.ColumnModel([sm,new Ext.grid.RowNumberer(),
            {
            	id:'reagentNum',
            	dataIndex:'reagentNum', 
             	header: L_info_num,  //FC编号
             	editor: textEditor,
             	width:400
            },   
            {
            	id:'reagentRemark',
            	dataIndex:'reagentRemark', 
             	header: L_info_remark, //备注
             	editor: textEditor,
             	width : 400
            }    
        ]);
    
    /**
     * FC实际入库 grid
     */
    var grid = new Ext.grid.EditorGridPanel({
        loadMask : {
            msg : '加载数据...'
        },
        store: store,
        id:'readMxgrid',
        stripeRows:true,
        sm:sm,
        trackMouseOver : false,
        frame : true,
        region:'center',
        margins: '0 5 5 5',
        remote:true,
        
        clicksToEdit : 1,
        cm: cm,
        
          tbar:[{            
	        	ref: '../deleteBtn',
            	iconCls: 'icon-user-delete',
	            text: '删除',
	            handler: function(){ 	            	
		            	var _record = grid.getSelectionModel().getSelections();    
            					if(_record){
            						Ext.MessageBox.confirm('确认删除','你确定要删除这条数据吗?',function(btn){
            							if(btn == "yes"){           								        					
            					
            								//先删除选择数据,然后再行尾添加一行数据
            								var rsm = grid.getSelectionModel();
            								var view = grid.getView();
            								var storeGrid = grid.getStore();
            								
            								for (var i =  view.getRows().length -1 ; i>=0; i--) {
            									if(rsm.isSelected(i)){
            										storeGrid.remove(storeGrid.getAt(i));
            									}
            								}            								            								
        								    var newRowValue = {
										        reagentNum: '',
										        reagentRemark: ''
									        };
            								var newRecord = new record(newRowValue);
									        grid.getStore().add(newRecord);  
									        
									        view.refresh();
									    }
            						},this);            						
            					}
	            	}            
	        }],
        
	        
	        
        bbar : new Ext.PagingToolbar({
							pageSize : 100,
							store : store,
							displayInfo : true,
							displayMsg : L_from +'{0}' +L_to+' {1}'+','+L_sum +'{2}',
							emptyMsg : L_no_note
						//	displayMsg : '显示记录从 {0} 到 {1} ,共记录数 {2}',
						//	emptyMsg : "没有记录显示"
						})
        
        	  
    });
    
    
    
	
	/**
	* 绑定按钮选择事件
	*/   	
	grid.getSelectionModel().on('selectionchange', function(sm){
              grid.deleteBtn.setDisabled(sm.getCount() != 1);
        });
    
            
    /**
	 * 页面中部的tabs
	 */
	var enterFCTabs = new Ext.TabPanel({
		
		width:'100%',
		height:'100%',
		deferredRender : false,
		activeTab : 0,
		resizeTabs : true, // turn on tab resizing
		minTabWidth : 125,
		enableTabScroll : true,// 挤的时候能够滚动收缩
		margins : '2 5 5 0',
		enableTabScroll : true,
		defaults : {
			autoScroll : false,
			border : false,
			iconCls : 'icon-tabs',
			layout : 'fit'
		},
		region : 'center',
		
		items:[{
			title:L_tbspanel_titleone,
//			title:'FC入库扫描',
			items:grid
		},{
			title:L_tbspanel_titletwo,
//			title:'大开另外一个扫描窗口',
			html:'重新大开一个新的窗体'
		}],
		activeItem:0	
	});
	
	
	
	/**
	 * comboBox入库地点数据源
	 */
	var reagFlowcellInfoStorePlaceStore = new Ext.data.Store({
				url:'js/cBotInfoTransportState.xml',
				reader: new Ext.data.XmlReader({record:'Item'},[{name: 'infoStorePlace',mapping:'infoStorePlace'},{name:'JP',mapping:'JP'}])	
			});
	
	/**
	 * comboBox运输状态数据源
	 */
	var reagFlowcellInfoTransportStateStore = new Ext.data.Store({
				url:'js/cBotInfoStorePlace.xml',
				reader: new Ext.data.XmlReader({record:'Item'},[{name: 'infoTransportState',mapping:'infoTransportState'}])	
			});
	
	/**
	 * comboBox试剂类型数据源
	 */	
	var reagFlowcellInfoTypeStore = new Ext.data.Store({
				url:'js/cBotInfoType.xml',
				reader: new Ext.data.XmlReader({record:'Item'},[{name: 'infoDetailType',mapping:'infoDetailType'}])	
			});			
			
	
	/**
	 * 录入基本信息上部分页面
	 */
	var makeOutForm = new Ext.FormPanel({
		labelWidth : 50,

		frame : true,
		title : L_search_term,
		//	title : '上半部分',
		bodyStyle : 'padding:5px 5px 0',
		width : '100%',
		height : 140,
		margins : '5 5 0',
		split : true,        
		items : [{
			layout : 'column',
			items : [{
						columnWidth : .24,
						layout : 'form',
						labelWidth : 60,
						labelAlign : "right",
						defaults:{
							allowBlank:false,
							blankText: '该项不允许为空!'
						},
						items : [ new Ext.form.ComboBox({
											id : 'infoDetailType',
											fieldLabel :L_info_type,
											triggerAction : 'all',
											store : reagFlowcellInfoTypeStore,
											displayField : 'infoDetailType',
											mode : 'remote',
											handleHeight : 10,											
											anchor : '95%'
										}),
								 {
									xtype : 'textfield',
									fieldLabel : L_info_icebox,
									//fieldLabel : '冰箱号',
									name : 'infoIcebox',
									anchor : '95%'
								},{
									// 实际类型隐藏域
									xtype : 'hidden',
									hidden : true,
									name : 'infoType',
									value : 'CS',
									anchor : '95%'									
								}]
					}, {
						columnWidth : .24,
						layout : 'form',
						labelWidth : 80,
						labelAlign : "right",						
						defaults:{
							allowBlank:false,
							blankText: '该项不允许为空!'
						},
						items : [{
									xtype : 'textfield',									
									regex : /^\d{8,8}$/,
									regexText : "必须输入8位数字!",
									fieldLabel :L_info_batch,
									//	fieldLabel : '入库批次',
									name : 'infoBatch',
									anchor : '95%'
								}, {
									xtype : 'datefield',
									fieldLabel : L_info_store_date,
				       			    format : 'Y-m-d',
									//	fieldLabel : '入库日期',
									name : 'infoStoreDate',
									anchor : '95%'
								}]
					}, {
						columnWidth : .24,
						layout : 'form',
						labelWidth : 80,
						labelAlign : "right",
						defaults:{
							allowBlank:false,
							blankText: '该项不允许为空!'
						},
						items : [{
									xtype : 'textfield',
									fieldLabel : L_info_lot,
									//	fieldLabel : 'lot号',
									name : 'infoLot',
									anchor : '95%'
								},new Ext.form.ComboBox({
											id : 'infoTransportState',
											fieldLabel :L_info_transport_state,
//											fieldLabel :运输状态,
											triggerAction : 'all',
											store : reagFlowcellInfoTransportStateStore,
											displayField : 'infoTransportState',
											mode : 'remote',
											handleHeight : 10,
											anchor : '95%'
										})
								]
					}, {
						columnWidth : .24,
						layout : 'form',
						labelWidth : 80,
						labelAlign : "right",
						defaults:{
							allowBlank:false,
							blankText: '该项不允许为空!'
						},
						items : [{
									xtype : 'datefield',
									fieldLabel : L_info_expiration_date,
									format : 'Y-m-d',
									//	fieldLabel : '保质期',
									name : 'infoExpirationDate',
									anchor : '95%'
								},new Ext.form.ComboBox({
											id : 'infoStorePlace',
											fieldLabel :L_info_store_place,
//											fieldLabel :入库地点,
											triggerAction : 'all',
											store : reagFlowcellInfoStorePlaceStore,
											displayField : 'infoStorePlace',
											valueField:'JP',
											mode : 'remote',
											handleHeight : 10,
											anchor : '95%'
										})
								]
					}]
		}],
        buttons: [{
            text: L_reset,
            handler: function(){
                 makeOutForm.getForm().reset();
            }
        }]
	});
	
	reagFlowcellInfoTypeStore.load();
	reagFlowcellInfoTransportStateStore.load();
	reagFlowcellInfoStorePlaceStore.load();
	
	
	/**
	 * 整个页面窗体视图
	 */
	var layout = new Ext.Viewport({
				title : L_assinment_query,
			    layout : 'fit',
				border : false,
				margins : '2 0 5 0',
				defaults : {
					collapsible : true,
					split : true
				},
				items : [{
							layout : 'border',
							border : false,
							split : true,
							items : [{
									region : "north",
									border : false,
									split : true,
									collapsible : true,
									layout : "fit",
									items : [makeOutForm]
								},{
									region : "center",
									border : false,
									split : true,
									collapsible : true,
									layout : "fit",
									items : [enterFCTabs]
								},{
									region : "south",
									border : false,
									split : true,
									collapsible : true,
									layout : "fit",
									items : [enterBtn]
								}]
						}]
		
			});
	
	
});


/**
 * 去除字符串 左空格
 */
function lTrim(str){
	if (str.charAt(0) == ' '){
		str = str.substring(1, str.length);
		str = lTrim(str); //递归调用
	}
	return str;
}
/**
 * 去除字符串 右空格
 */
function rTrim(str){
	var iLength;	
	iLength = str.length;
	if (str.charAt(iLength - 1) == ' '){
		str = str.substring(0, iLength - 1);
		str = rTrim(str); //递归调用
	}
	return str;
}
/**
 * 去除字符串 左右空格
 */
function trim(str){
	return lTrim(rTrim(str));
}

cBotInfoStorePlace.xml
<?xml version="1.0" encoding="UTF-8"?>
<Data>
  <Items>   
    <Item>
      <infoTransportState>正常</infoTransportState>        
    </Item>
    <Item>
      <infoTransportState>少干冰</infoTransportState>           
    </Item>
    <Item>
      <infoTransportState>无干冰</infoTransportState>           
    </Item>  
  </Items>
</Data>

cBotInfoTransportState.xml

<?xml version="1.0" encoding="UTF-8"?>
<Data>
  <Items>   
    <Item>
      <infoStorePlace>深圳</infoStorePlace>   
      <JP>深圳</JP>     
    </Item>
    <Item>
      <infoStorePlace>上海</infoStorePlace> 
      <JP>上海</JP>          
    </Item>
    <Item>
      <infoStorePlace>北京</infoStorePlace>  
      <JP>北京</JP>         
    </Item>
    <Item>
      <infoStorePlace>香港</infoStorePlace> 
      <JP>香港</JP>          
    </Item>   
  </Items>
</Data>

cBotInfoType.xml

<?xml version="1.0" encoding="UTF-8"?>
<Data>
  <Items>   
    <Item>
      <infoDetailType>SE CGK</infoDetailType>        
    </Item>
    <Item>
      <infoDetailType>SE CGK V3</infoDetailType>           
    </Item>
    <Item>
      <infoDetailType>PE CGK</infoDetailType>           
    </Item>
    <Item>
      <infoDetailType>PE CGK V3</infoDetailType>           
    </Item>
    <Item>
      <infoDetailType>PE Read2 KIT</infoDetailType>           
    </Item>
    <Item>
      <infoDetailType>PE Read2 KIT V3</infoDetailType>           
    </Item>  
  </Items>
</Data>
效果图








                    

Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听

标签: androidbroadcastreceiver短信应用class 2016-04-10 18:16 2734人阅读 评论(0) 收藏 举报 本文章已收录于:   Andro...

Android应用的四大基本组件介绍

看了这么多JavaSE的基础内容,突然回头看Android感觉好陌生。 Android应用通常由一个或多个基本组件组成。(其实这里的组件我就觉得是一个很不清楚的概念,先把组件和UI组件和控件统称为...

Android应用程序的五大基本组件

一、Activity —— 应用表示层( 基类 Activity )          一个活动表示一个可视化的用户界面,关注一个用户从事的事件。例如,一个活动可能表示一个用户可选择的菜单项列表...

Android应用的基本组件介绍

Android应用的基本组件介绍 Activity和View Activity是Android应用中负责与用户交互的组件——大致上可以把它想象成Swing变成中的JFrame控件。不过它与JF...

Web应用的组件化(一)——基本思路

https://github.com/xufei/blog/issues/6 Web应用的组件化(一) 基本思路 1. 为什么要做组件化? 无论前端也好,后端也好,都是整个软件体系的一部分。软件产品也...

Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听

Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听 Android中四大组件的使用时重中之重,我这个阶段也不奢望能...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:组件的基本应用
举报原因:
原因补充:

(最多只允许输入30个字)