Explorar el Código

[WMS]条码补打生成界面增加

caosy hace 1 año
padre
commit
2d02acd203

+ 549 - 0
WebContent/app/controller/scm/reserve/ProdCreateBarcode.js

@@ -0,0 +1,549 @@
+Ext.QuickTips.init();
+Ext.define('erp.controller.scm.reserve.ProdCreateBarcode', {
+    extend: 'Ext.app.Controller',
+    requires: ['erp.util.FormUtil', 'erp.util.GridUtil', 'erp.util.BaseUtil'],
+    views:[
+      		'core.form.Panel','common.CommonPage','core.grid.Panel2','core.toolbar.Toolbar','core.trigger.MultiDbfindTrigger','core.trigger.HrOrgTreeDbfindTrigger',
+      		'core.button.Close','core.trigger.DbfindTrigger','core.grid.YnColumn','core.button.GenerateBarcode'
+      	],
+    init:function(){
+    	var me = this;
+    	me.FormUtil = Ext.create('erp.util.FormUtil');
+    	me.GridUtil = Ext.create('erp.util.GridUtil');
+    	me.BaseUtil = Ext.create('erp.util.BaseUtil');
+    	this.control({
+    		'#barCode': {
+    			specialkey: function(f, e){//按ENTER自动复制到下一行
+    				if (e.getKey() == e.ENTER) {
+    					if(f.value != null && f.value != ''){
+    						me.getBarInfo();
+    							Ext.getCmp('pr_partNumber').focus(false, 100);
+        				}
+    				}
+    			}
+    		},
+    		'erpProdCreateBarcode': {
+    		},
+    		'erpGenerateBarcodeButton': {
+    			click: function(btn){
+    				var pr_code = Ext.getCmp('pr_code').value;
+    				var number = Ext.getCmp('pr_partNumber').value;
+					var zxbzNumber = Ext.getCmp('pr_zxbzNumber').value;
+    				if(pr_code == null || pr_code ==''){
+						Ext.Msg.alert('温馨提示',
+						'请先选择物料编号');
+						return;
+    				}else if(number == null || number ==''){
+						Ext.Msg.alert('温馨提示',
+						'请输入数量');
+						return;
+					}else if(zxbzNumber == null || zxbzNumber ==''){
+						Ext.Msg.alert('温馨提示',
+							'请输入最小包装数量');
+						return;
+					}
+    				var re=/^\d+(,\d+)*$/;
+					var sum=0;
+					number=number.replace(/,/ig,',');
+					if(re.test(number)){
+						var str = new Array(); 
+						str = number.split( "," );
+						for (var i = 0; i < str.length; i++ )
+						{
+							if(str[i] <= 0){
+								Ext.Msg.alert('温馨提示',
+								'数量必须大于0');
+								return;
+							}
+							 sum+=parseFloat(str[i]);
+					}}else{
+						showError("请输入正确的数量,例如20");
+						return;
+					}
+					if(!re.test(zxbzNumber)){
+						showError("请输入正确的数量,例如20");
+						return;
+					}
+					if(zxbzNumber<0){
+						Ext.Msg.alert('温馨提示',
+							'最小包装数量必须大于0');
+						return;
+					}
+				    if (sum <= 0) {
+						Ext.Msg.alert('温馨提示',
+								'数量必须大于0');
+						return;
+					}
+				  if(pr_code && number){
+					  Ext.getCmp("pr_partNumber").setValue('');
+					  var batchcode = Ext.getCmp('batchCode').value;
+					  if(batchcode != null && batchcode != ''){						  
+						  me.batchGenerateBarcode(pr_code,number,batchcode,zxbzNumber);
+					  }else{
+						  me.batchGenerateBarcode(pr_code,number,'',zxbzNumber);
+					  } 
+				  }  
+    			}
+    		},
+    		'erpCloseButton': {
+    			click: function(btn){
+    				me.FormUtil.beforeClose(me);
+    			}
+    		}
+    	});
+    }, 
+    onGridItemClick: function(selModel, record){//grid行选择
+    	this.GridUtil.onGridItemClick(selModel, record);
+    },
+	getForm: function(btn){
+		return btn.ownerCt.ownerCt;
+	},
+    resize: function(form, grid){
+    	if(!this.resized && form && grid && form.items.items.length > 0){
+    		var height = window.innerHeight, 
+    			fh = form.getEl().down('.x-panel-body>.x-column-inner').getHeight();
+			if(Ext.isIE){
+				height = screen.height*0.75;
+			}
+			form.setHeight(70 + fh);
+			grid.setHeight(height - fh - 70);
+			this.resized = true;
+		}
+    },
+	 setLoading : function(b) {
+			var mask = this.mask;
+			if (!mask) {
+				this.mask = mask = new Ext.LoadMask(Ext.getBody(), {
+					msg : "处理中,请稍后...",
+					msgCls : 'z-index:10000;'
+				});
+			}
+			if (b)
+				mask.show();
+			else
+				mask.hide();
+  },
+    batchGenerateBarcode: function(pr_code,number,batchcode,zxbzNumber){
+		var me=this;
+		me.setLoading(true);
+		console.log(basePath);
+		Ext.Ajax.request({
+	    	url : basePath +'scm/reserve/batchGenerateBarcode.action',
+			params: {
+				pr_code:pr_code,
+				number:number,
+				batchcode:batchcode,
+				zxbzNumber:zxbzNumber
+			},
+			method : 'post',
+			callback : function(options,success,response){
+				me.setLoading(false);
+				var res = new Ext.decode(response.responseText);
+				if(res.success){
+					var data = res.data;
+					Ext.MessageBox.alert('提示', '条码生成成功!',function(){
+						var win = new Ext.window.Window({
+				             id: 'winBar',
+				             height: '75%',
+				             width: '75%',
+				             maximizable: false,
+				             title:'<span>条码打印</span>',
+				             buttonAlign: 'center',
+				             layout: 'column',
+				             bodyStyle:"background-color:#F5F5F5;",
+				             items: [{
+									xtype: 'gridpanel',
+									id: 'grid',
+									anchor : '100% 70%',
+									columnWidth:1,
+									multiSelect: true,
+									multiselected: [],
+									forceFit : true,
+									checkOnly:true,
+									columns: [
+									{
+										style :"text-align:center",
+										text: 'ID',
+										width: 0,
+										hidden : true,
+										dataIndex: 'bar_id',
+										ignore: true,
+									},{
+										style :"text-align:center",
+										text: '条码',
+										flex : 7,
+										dataIndex: 'bar_code',
+										logic:"necessaryField",
+										editor: {
+											xtype: "displayfield",
+							                hideTrigger: true,
+							                store: null,
+							                queryMode: "local"
+							            }
+									},{
+										style :"text-align:center",
+										text: '数量',
+										logic:"necessaryField",
+										flex : 3,
+										dataIndex: 'bar_remain',
+										editor: {
+							                xtype: "displayfield",
+							                hideTrigger: true,
+							                store: null,
+							                queryMode: "local"
+							            },
+							            xtype: 'numbercolumn',
+							            align: "left",
+							            format: ""
+									}],
+									GridUtil: Ext.create('erp.util.GridUtil'),
+									listeners:{
+									        beforeedit:function(editor, e, eOpts){
+									            return false;//不可编辑
+									        }
+									    },
+									selType:'checkboxmodel',
+									dbfinds: [],
+									columnLines: true,
+									plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
+								        clicksToEdit: 10
+								    }),
+								    Ext.create('erp.view.core.plugin.CopyPasteMenu')],
+									store: new Ext.data.Store({
+										fields: ['bar_id', 'bar_code', 'bar_remain'],
+										data: []
+									}),
+								   onGridItemClick: function(selModel, record){// grid行选择
+									     	this.GridUtil.onGridItemClick(selModel, record);
+									  },
+				             }],
+						    buttons : [{
+										text : '打印条码',
+										id : 'printNew',
+										iconCls: 'x-button-icon-print',
+										disabled : true, 
+											handler : function(btn) {
+											var me = this;
+											caller = 'Barcode!BaPrint';
+											me.idS = '';
+											var	lps_Barcaller = 'Barcode!Print';
+											var bool = false;
+											var grid = Ext.getCmp('grid');
+											var items = grid.selModel.getSelection();
+										    var idArray = [];
+										    Ext.each(items, function(item, index){
+									        	if(this.data['bar_id'] != null && this.data['bar_id'] != ''
+									        		&& this.data['bar_id'] != '0' && this.data['bar_id'] != 0){
+									        		bool = true;  
+									        		idArray.push(this.data['bar_id']);
+									        	}
+									        });
+										  if(bool){
+										  	var idS = idArray.toString();
+										  	//me.print(idS,lps_Barcaller);
+										  	me.idS = idS;
+										  	me.zplPrint(lps_Barcaller);
+										  }else{
+											  showError("没有需要打印的行");
+										  }
+										  },
+										  zplPrint:function(caller){//zpl打印语句
+										   		// 获取选择打印文件,用户选择分辨率,和打印机
+												var me = this;
+												if(!me.window){
+										    		setup_web_print(function(printers,selected_printer){
+										    			me.window = Ext.create('Ext.window.Window', {
+															autoShow: true,
+															title: '选择打印模板',
+															width: 400,
+															height: 300,
+															layout: 'anchor',
+															id :'template-win4',
+															closeAction:'hide',
+															items: [{ 							    					
+																  anchor:'100% 100%',
+																  xtype:'form',  							
+																  buttonAlign : 'center',
+																  items:[{
+																        xtype: 'combo',
+																		id: 'printers',
+																		fieldLabel: '打印机列表', 									
+																		store: Ext.create('Ext.data.Store', {
+																			autoLoad: true,
+																		    fields: ['display', 'value'],
+																		    data:printers 									 
+																		}),
+																		queryMode: 'local',
+																	    displayField: 'display',
+																	    valueField: 'value',
+																		width:361,
+																	    allowBlank:false,
+																	    value:selected_printer.uid,
+																	    selectOnFocus:true,//用户不能自己输入,只能选择列表中有的记录  
+																		style:'margin-left:15px;margin-top:15px;'
+																  },{
+																        xtype: 'combo',
+																		id: 'dpi',
+																		fieldLabel: '打印机分辨率', 		
+																		style:'margin-left:15px;margin-top:15px;',
+																		store: Ext.create('Ext.data.Store', {
+																		   fields: ['display', 'value'],
+																		   data : [{"display": '203dpi', "value": '203'},
+																		           {"display": '300dpi', "value": '300'},
+																		           {"display": '600dpi', "value": '600'},
+																		           {"display": '1200dpi', "value": '1200'}]
+																	   }),
+																	    displayField: 'display',
+																	    valueField: 'value',
+																	    queryMode: 'local',
+																	    value:resolutionCookie||'203',
+																		width:361,
+																	    allowBlank:false,
+																	    selectOnFocus:true//用户不能自己输入,只能选择列表中有的记录  
+																	}]	 							    	     				    							           	
+															 }], 
+															buttonAlign: 'center',
+															buttons: [{
+																text: '确定',
+																handler: function(b) {
+																	var printers = Ext.getCmp('printers');
+																	var dpi = Ext.getCmp('dpi');
+																	if(printers && printers.value!= null){
+																		me.zebraPrint(caller,printers.value,dpi.value);
+																		b.ownerCt.ownerCt.close();
+																	}else{
+																		alert("请选择打印机 ");
+																	}   
+																}
+															}, {
+																text: '取消',
+																handler: function(b) {
+																	b.ownerCt.ownerCt.close();
+																}
+															}]
+														});   			
+										    		});
+												}else if(me.window.isHidden()){
+													me.window.show();
+												}
+										   	},
+										   zebraPrint:function(caller,printer,dpi){
+										   	    var me = this;
+										    	var params = new Object();
+										    	params['condition'] = 'bar_id in ('+me.idS +")";
+										    	sendData(caller,printer,dpi,params);
+											 }
+						            },
+								  {
+									text : '取消',
+									id : 'cancle',
+									handler : function(btn) {
+										var win = btn.ownerCt.ownerCt;
+										win.close();
+									}
+								}
+								],
+						         });
+				    	  win.show();
+						var ids = new Array();
+						for(var i= 0;i<data.length;i++){
+							ids.push(data[i].BAR_ID);
+						}
+						me.loadData(ids);
+						Ext.getCmp('printNew').enable();
+							
+							var	lps_Barcaller = 'Barcode!Print';
+							var grid = Ext.getCmp("grid");
+					    	var items = grid.store.data.items;
+					    	var idArray = [];
+					    	Ext.each(items, function(item, index){
+			    				var id=item.data['bar_id'];
+			    				if(id != null && id != ''&& id != '0' && id != 0){
+			    					idArray.push(id);
+			    				}
+			    			})
+					    	var idS = idArray.toString();
+						  	//me.print(idS,lps_Barcaller);
+						  	me.idS = idS;
+						  	Ext.MessageBox.confirm('提示', '是否自动打印?',function(btn){
+						  		if(btn=='yes'){			   						
+						  			me.zplPrint(lps_Barcaller);
+			   						}
+						  	});
+					});
+				}else if(res.exceptionInfo){
+					showError(res.exceptionInfo);
+					return;
+				}
+			}
+	    });
+	},
+	getBarInfo: function(){
+        var bar = Ext.getCmp('barCode');
+        if(bar && bar.value != null && bar.value != ''){
+     	   var me=this;
+    		me.setLoading(true); 
+    		Ext.Ajax.request({
+    	    	url : basePath +'scm/reserve/getBarInfo.action',
+    			params: {
+    				bar_code:bar.value,
+    			},
+    			method : 'post',
+    			callback : function(options,success,response){
+    				me.setLoading(false);
+    				var res = new Ext.decode(response.responseText);
+    				if(res.success){
+    					var data = res.data;
+    					var prod = data['prodcode'];
+    					var batch = data['batchcode'];
+    					var remain = data['remain'];
+    					var errMsg = data['errmsg'];
+    					Ext.getCmp("pr_code").setValue(prod);
+    					Ext.getCmp("batchCode").setValue(batch);
+    					Ext.getCmp("pr_partNumber").setValue(remain);
+    					Ext.getCmp("errMsg").setValue(errMsg);
+    					Ext.getCmp('errMsg').setFieldStyle('color:#FF0000;');
+    					if(errMsg == null || errMsg ==''){
+    						Ext.getCmp("errMsg").setValue('条码: '+Ext.getCmp('barCode').value+' 采集成功!');  
+    						Ext.getCmp('errMsg').setFieldStyle('color:#22C32E;');
+    					}
+    				}else if(res.exceptionInfo){
+    					showError(res.exceptionInfo);
+    					return;
+    				}
+    			}
+    	    });
+        }
+     } ,
+	loadData: function(value) {
+		var me = this;
+		me.getFieldsValues("barcode",
+				'bar_id, bar_code, bar_remain', "bar_id in (" +value+") order by bar_id desc", [], function(data){
+			var datas = Ext.JSON.decode(data), _datas = [];
+			var grid = Ext.getCmp('grid');
+			if(datas.length > 0) {
+				var keys = Ext.Object.getKeys(datas[0]);
+				Ext.Array.each(datas, function(d){
+					var obj = {};
+					Ext.Array.each(keys, function(key){
+						obj[key.toLowerCase()] = d[key];
+					});
+					_datas.push(obj);
+				});
+			}
+				store = grid.getStore();
+			_datas.length > 0 && grid.store.loadData(_datas);
+			grid.store.each(function(){
+				this.dirty = true;
+			});
+		});
+	},
+	getFieldsValues: function(caller, fields, condition, data, fn){
+		Ext.Ajax.request({
+			url : basePath + 'common/getFieldsDatas.action',
+			async: false,
+			params: {
+				caller: caller,
+				fields: fields,
+				condition: condition
+			},
+			method : 'post',
+			callback : function(options,success,response){
+				var localJson = new Ext.decode(response.responseText);
+				if(localJson.exceptionInfo){
+					showError(localJson.exceptionInfo);return;
+				}
+				if(localJson.success){
+					data = localJson.data;
+					fn && fn.call(null, localJson.data);
+				}
+			}
+		});
+	},
+	 zplPrint:function(caller){//zpl打印语句
+	   		// 获取选择打印文件,用户选择分辨率,和打印机
+			var me = this;
+			if(!me.window){
+	    		setup_web_print(function(printers,selected_printer){
+	    			me.window = Ext.create('Ext.window.Window', {
+						autoShow: true,
+						title: '选择打印模板',
+						width: 400,
+						height: 300,
+						layout: 'anchor',
+						id :'template-win5',
+						closeAction:'hide',
+						items: [{ 							    					
+							  anchor:'100% 100%',
+							  xtype:'form',  							
+							  buttonAlign : 'center',
+							  items:[{
+							        xtype: 'combo',
+									id: 'printers',
+									fieldLabel: '打印机列表', 									
+									store: Ext.create('Ext.data.Store', {
+										autoLoad: true,
+									    fields: ['display', 'value'],
+									    data:printers 									 
+									}),
+									queryMode: 'local',
+								    displayField: 'display',
+								    valueField: 'value',
+									width:361,
+								    allowBlank:false,
+								    value:selected_printer.uid,
+								    selectOnFocus:true,//用户不能自己输入,只能选择列表中有的记录  
+									style:'margin-left:15px;margin-top:15px;'
+							  },{
+							        xtype: 'combo',
+									id: 'dpi',
+									fieldLabel: '打印机分辨率', 		
+									style:'margin-left:15px;margin-top:15px;',
+									store: Ext.create('Ext.data.Store', {
+									   fields: ['display', 'value'],
+									   data : [{"display": '203dpi', "value": '203'},
+									           {"display": '300dpi', "value": '300'},
+									           {"display": '600dpi', "value": '600'},
+									           {"display": '1200dpi', "value": '1200'}]
+								   }),
+								    displayField: 'display',
+								    valueField: 'value',
+								    queryMode: 'local',
+								    value:resolutionCookie||'203',
+									width:361,
+								    allowBlank:false,
+								    selectOnFocus:true//用户不能自己输入,只能选择列表中有的记录  
+								}]	 							    	     				    							           	
+						 }], 
+						buttonAlign: 'center',
+						buttons: [{
+							text: '确定',
+							handler: function(b) {
+								var printers = Ext.getCmp('printers');
+								var dpi = Ext.getCmp('dpi');
+								if(printers && printers.value!= null){
+									me.zebraPrint(caller,printers.value,dpi.value);
+									b.ownerCt.ownerCt.close();
+								}else{
+									alert("请选择打印机 ");
+								}   
+							}
+						}, {
+							text: '取消',
+							handler: function(b) {
+								b.ownerCt.ownerCt.close();
+							}
+						}]
+					});   			
+	    		});
+			}else if(me.window.isHidden()){
+				me.window.show();
+			}
+	   	},
+	   zebraPrint:function(caller,printer,dpi){
+	   	    var me = this;
+	    	var params = new Object();
+	    	params['condition'] = 'bar_id in ('+me.idS +")";
+	    	sendData(caller,printer,dpi,params);
+		 }
+});

+ 64 - 0
WebContent/app/view/scm/reserve/ProdCreateBarcode.js

@@ -0,0 +1,64 @@
+Ext.define('erp.view.scm.reserve.ProdCreateBarcode',{ 
+	extend: 'Ext.Viewport', 
+	alias: 'widget.erpProdCreateBarcode',
+	hideBorders: true, 
+	id: 'ProdCreateBarcode', 
+    frame : true,
+    layout : 'column',
+	autoScroll : true,
+	cls: 'u-form-default',
+	fieldDefaults : {
+		fieldStyle : "background:#FFFAFA;color:#515151;",
+		focusCls: 'x-form-field-cir-focus',
+		labelAlign : "right",
+		msgTarget: 'side',
+		blankText : $I18N.common.form.blankText
+	},
+	FormUtil: Ext.create('erp.util.FormUtil'),
+	initComponent : function(){ 
+		var me = this; 
+		Ext.apply(me, { 
+			items: [{ 
+				layout: 'column', 
+				items: [{
+					xtype: "window",
+					autoShow: true,
+					closable: true,
+					maximizable : true,
+					buttonAlign : 'center',
+			    	width: '75%',
+			    	height: '75%',
+			    	layout: 'column',
+                    items: [
+                        /*{ xtype: "textfield", name: "barCode", id:'barCode',labelAlign : "right",fieldLabel: '条码号', allowBlank: true,labelWidth:80,columnWidth: 0.83,margin: '20 0 0 0',maxLength:300,emptyText: '请采集条码信息',listeners:{
+                            'render' : function() {
+                            	Ext.getCmp('barCode').focus(false, 100);
+                             }
+                        }}, {xtype:'button' , text:'清空',columnWidth: 0.07,margin: '20 0 0 0',handler: function(view, rowIndex, colIndex) {
+                        	Ext.getCmp('barCode').setValue("");
+                        	Ext.getCmp('barCode').focus(false, 100);
+						}} ,*/
+                        { xtype: 'dbfindtrigger',fieldLabel:  '<font color="red">物料编号</font>',id: 'pr_code',name: 'pr_code',
+			    	    	labelAlign : "right",allowBlank: false,labelWidth:80,columnWidth: 0.45,margin: '20 0 0 0'},
+                        { xtype: "textfield", name: "pr_partNumber", id:'pr_partNumber',labelAlign : "right",fieldLabel: '<font color="red">数量</font>', allowBlank: false,labelWidth:80,columnWidth: 0.45,margin: '20 0 0 0'},
+						{ xtype: "textfield", name: "pr_zxbzNumber", id:'pr_zxbzNumber',labelAlign : "right",fieldLabel: '<font color="red">最小包装数量</font>', allowBlank: false,labelWidth:80,columnWidth: 0.45,margin: '20 0 0 0'},
+                        { xtype: "textfield", name: "batchCode", id:'batchCode',labelAlign : "right",fieldLabel: '批号', allowBlank: true,labelWidth:80,columnWidth: 0.45,margin: '20 0 0 0',maxLength:30},
+                        /*{ xtype: "textarea", name: "errMsg", id:'errMsg',labelAlign : "right",fieldLabel: '提示信息', allowBlank: true,labelWidth:80,columnWidth: 0.6,margin: '60 0 0 0',emptyText: '提示信息'},*/
+                    ],
+	    		buttons: [
+	    			{xtype: 'erpGenerateBarcodeButton'},
+	    			/*{
+		                xtype: 'checkboxfield',
+		                name: 'autoPrint',
+		                id:'autoPrint1',
+		                boxLabel: '自动打印条码',
+		            	checked:true
+		            },*/
+	    			{xtype: 'erpCloseButton'}
+	    		]
+			    }]
+			}] 
+		}); 
+		me.callParent(arguments); 
+	} 
+});

+ 56 - 0
WebContent/jsps/scm/reserve/prodCreateBarcode.jsp

@@ -0,0 +1,56 @@
+<%@ page language="java" contentType="text/html; charset=utf-8"
+    pageEncoding="utf-8"%>
+<%
+String path = request.getContextPath();
+String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
+%>
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" href="<%=basePath %>resource/ext/resources/css/ext-all-gray.css" type="text/css"></link>
+<link rel="stylesheet" href="<%=basePath %>resource/css/main.css" type="text/css"></link>
+<script type="text/javascript" src="<%=basePath %>resource/zebraBrowserPrint/BrowserPrint-1.0.4.min.js"></script>
+<script type="text/javascript" src="<%=basePath %>resource/zebraBrowserPrint/zebraPrint.js"></script> 
+<style type="text/css">
+	.x-html-editor-wrap textarea {
+		background-color: #EEE8CD;
+	}
+	body{
+		background: #f1f1f1;
+	}
+	.x-panel-body-default {
+		background: #f9f9f9;
+		border-color: #d0d0d0;
+		color: black;
+		border-width: 1px;
+		border-style: solid
+	}
+</style>
+<script type="text/javascript" src="<%=basePath %>resource/ext/ext-all.js"></script>
+<script type="text/javascript" src="<%=basePath %>resource/i18n/i18n.js"></script>
+<script type="text/javascript">
+
+//通用界面
+
+Ext.Loader.setConfig({
+	enabled: true
+});//开启动态加载
+Ext.application({
+    name: 'erp',//为应用程序起一个名字,相当于命名空间
+    appFolder: basePath+'app',//app文件夹所在路径
+    controllers: [//声明所用到的控制层
+        'scm.reserve.ProdCreateBarcode'
+    ],
+    launch: function() {
+    	Ext.create('erp.view.scm.reserve.ProdCreateBarcode');//创建视图
+    }
+});
+var caller = getUrlParam('whoami');//caller决定了该页面的一切信息和逻辑
+var formCondition = '';
+var gridCondition = '';
+</script>
+</head>
+<body >
+</body>
+</html>