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>
效果图