reservinfo.js.svn-base
来自「一个使用ssh+ext的例子。 希望对开发这个应用的人带来好处。仔细研究里面的」· SVN-BASE 代码 · 共 739 行 · 第 1/2 页
SVN-BASE
739 行
}
]
}
]
});
Neo.frontdesk.ReservInfo.superclass.initComponent.apply(this,arguments);
this.reservItemGrid=Ext.getCmp('reservItemGrid');
this.reservItemGrid.on({'dblclick':this.onGridDblClick
,scope:this});
this.reservItemGrid.on({'rowcontextmenu':this.onRowContextMenu
,scope:this});
this.reservItemGridMenu=new Ext.menu.Menu({
id:'roomsGridMenu'
,items:[
{
text:'取消'
,id:'cancelRoomBtn'
}
]
});
this.checkinForm=Ext.getCmp('checkinForm');
this.cancelRoomBtn=Ext.getCmp('cancelRoomBtn');
this.cancelRoomBtn.on({'click':this.onRoomCancelClick
,scope:this});
this.reservInBtn=Ext.getCmp('reservInBtn');
this.reservInBtn.on({'click':this.onReservInBtnClick
,scope:this});
this.saveReservBtn=Ext.getCmp('saveReservBtn');
this.resetBtn=Ext.getCmp('resetBtn');
this.resetBtn.on({'click':this.onResetBtnClick
,scope:this});
this.alertReservBtn=Ext.getCmp('alertReservBtn');
this.alertReservBtn.on({'click':this.onAlertReservBtnClick
,scope:this});
this.saveReservBtn.on({'click':this.onSaveReservBtnClick
,scope:this});
this.roTelphone=Ext.getCmp('roTelphone');
this.roGuestName=Ext.getCmp('roGuestName');
this.roOrderId=Ext.getCmp('roOrderId');
this.roOperator=Ext.getCmp('roOperator');
this.addEvents({'updateItem':true});
this.addEvents({'reservIn':true});
}
,onRender:function(){
Neo.frontdesk.ReservInfo.superclass.onRender.apply(this,arguments);
}
//,afterRender:function(){};
,addReservItem:function(selRecord){
var data=selRecord.data;
if(this.reservItemGrid.store.indexOf(selRecord)<0){
this.reservItemGrid.store.add(selRecord);
Ext.ux.Toast.msg('提示','已选择房间{0}',selRecord.get('rmId'));
}else{
//Ext.Msg.alert('提示:','该房间已在登记中!');
Ext.ux.Toast.msg('提示','该房间已在预定中!');
}
this.saveReservBtn.enable();
this.resetBtn.enable();
}
,afterChangeDeal:function(field,newValue,oldValue){
this.itemsChanged=true;
this.saveReservBtn.enable();
}
//移除已选择房间
,deleteSelectedGridRaw:function(){
var record=this.getGridSelectRecord();
if(!record||!record.id||!record.get('rmId')){
return;
}else{
this.reservItemGrid.store.remove(record);
}
if(this.reservItemGrid.store.getCount()<1){
this.saveReservBtn.disable();
this.resetBtn.disable();
}
}
,getGridSelectRecord:function(){
var sm=this.reservItemGrid.getSelectionModel();
var record;
try{
record=sm.getSelected();
}
catch(e){
try{
record=sm.selection.record();
}
catch(ex){}
}
return record;
}
//监听所有子项的change事件以判断信息有无修改
,listenFormItemsChange:function(condition){
this.items.itemAt(0).items.itemAt(0).items.itemAt(0).items.itemAt(0)
.items.each(function(item){
if(condition){
item.on({'change':this.afterChangeDeal
,scope:this});
}else{
item.un({'change':this.afterChangeDeal
,scope:this});
}
},this);
this.items.itemAt(0).items.itemAt(0).items.itemAt(0).items.itemAt(1)
.items.each(function(item){
if(condition){
item.on({'change':this.afterChangeDeal
,scope:this});
}else{
item.un({'change':this.afterChangeDeal
,scope:this});
}
},this);
this.items.itemAt(0).items.itemAt(0).items.itemAt(0).items.itemAt(2)
.items.each(function(item){
if(condition){
item.on({'change':this.afterChangeDeal
,scope:this});
}else{
item.un({'change':this.afterChangeDeal
,scope:this});
}
},this);
this.items.itemAt(0).items.itemAt(0).items.itemAt(1) //备注栏
.items.itemAt(0).items.each(function(item){
if(condition){
item.on({'change':this.afterChangeDeal
,scope:this});
}else{
item.un({'change':this.afterChangeDeal
,scope:this});
}
},this);
if(condition){
this.reservItemGrid.store.on({'add':this.afterChangeDeal
,scope:this});
this.reservItemGrid.store.on({'remove':this.afterChangeDeal
,scope:this});
}else{
this.reservItemGrid.store.un({'add':this.afterChangeDeal
,scope:this});
this.reservItemGrid.store.un({'remove':this.afterChangeDeal
,scope:this});
}
}
,loadReservInfo:function(record){
this.getForm().loadRecord(record);
this.reservOrderId=record.get("roId");
this.roCreateTime=record.get("roCreateTime");
this.reservItemGrid.store.load({params:{roId:this.reservOrderId}});
}
//修改
,onAlertReservBtnClick:function(){
this.infoState='alertReserv';
this.saveReservBtn.setText('保存');
this.alertReservBtn.enable();
this.saveReservBtn.disable();
this.resetBtn.enable();
this.reservInBtn.enable();
this.setFormItemsDisable(false);
this.itemsChanged=false;
this.listenFormItemsChange(true);
}
,onGridDblClick:function(){
this.deleteSelectedGridRaw();
}
//重置
,onResetBtnClick:function(){
this.reservItemGrid.store.removeAll();
var formRecord = Ext.data.Record.create([
'roGuestName' //客人姓名
,'roGuestGender' //客人性别
,'roGuestCardCatalog' //证件类型
,'roGuestCardId' //证件号
,'roReservModel' //预定方式
,{name:'roPaidMoney',type:'float'} //预付金
,'roPaymentModel' //支付方式
,'roReservState' //预定状态
,'roInDateTime' //预住时间
,'roPreOutDateTime' //预离时间
,'roEarliestTime' //最早到店
,'roLatestTime' //最晚到店
,'roOperator' //操作员
,'roOrderId' //单号
,'roId' //主键
,'roRemark' //备注
,'roEmail' //Email
,'roFax' //传真
,'roTelphone' //电话
,'roTotalRate' //总费用
]);
var resetRecord = new formRecord({
roGuestName: ''
,roGuestGender:'男'
,roGuestCardCatalog:'身份证'
,roGuestCardId:''
,roReservModel:'电话预定'
,roPaidMoney:'0'
,roPaymentModel:'现金'
,roReservState:'预定中'
,roInDateTime:new Date().format('Y-m-d')
,roPreOutDateTime:new Date().add(Date.DAY,1).format('Y-m-d')
,roEarliestTime:''
,roLatestTime:''
,roRemark:''
,roEmail:''
,roFax:''
,roTelphone:''
,roTotalRate:'0'
,roOperator:'Admin'
,roOrderId:'预定后生成'
});
this.roOrderId.disable();
this.roOperator.disable();
this.getForm().loadRecord(resetRecord);
this.roGuestName.clearInvalid();
this.roTelphone.clearInvalid();
this.saveReservBtn.setText('预定');
this.reservInBtn.disable();
this.saveReservBtn.disable();
this.resetBtn.disable();
this.alertReservBtn.disable();
this.setFormItemsDisable(false);
this.infoState='init';
}
//预定入住
,onReservInBtnClick:function(){
this.checkinForm.reservInLoad(this.reservOrderId);
//this.fireEvent('reservIn',this.reservOrderId);
}
,onRowContextMenu:function(grid,rowIndex,e){
e.stopEvent();
this.reservItemGrid.getSelectionModel().selectRow(rowIndex);
var coords=e.getXY();
this.reservItemGridMenu.showAt([coords[0],coords[1]]);
}
,onRoomCancelClick:function(){
this.deleteSelectedGridRaw();
}
//新增修改预定
,onSaveReservBtnClick:function(){
//this.infoState='alertReserv';
//this.itemsChanged=false;
var rds=[];
for(var i=0;i<this.reservItemGrid.store.getCount();i++){
rds.push(this.reservItemGrid.store.getAt(i).data);
}
var rdsjson=Ext.util.JSON.encode(rds);
//新增预定
if(this.infoState=='init'){
this.getForm().submit({
url:'reserv.htm?action=createReserv'
,params:{roomDataes:rdsjson}
,method:'POST'
,scope:this
,success:function(){
Ext.Msg.alert('提示', '预定信息添加成功'
,this.updateAvailItem.createDelegate(this,[],true)
)
}
,failure:function(form,action){
if(action.failureType == 'server'){
obj = Ext.util.JSON.decode(action.response.responseText);
Ext.Msg.alert('错误:', obj.errors.reason);
}
if(action.failureType == 'client'){
Ext.ux.Toast.msg('提示','预定信息不正确,请核对后重新操作');
}
/*else{
Ext.Msg.alert('警告!', '无法连接到服务器: ' + action.response.responseText );
}*/
}
});
}
//修改预定
if(this.infoState=='alertReserv'&&this.itemsChanged){
this.getForm().submit({
url:'reserv.htm?action=updateReserv'
,params:{roomDataes:rdsjson,roId:this.reservOrderId,roCreateTime:this.roCreateTime}
,method:'POST'
,scope:this
,success:function(){
Ext.Msg.alert('提示', '预定信息修改成功'
,this.updateAvailItem.createDelegate(this,[],true)
)
}
,failure:function(form,action){
if(action.failureType == 'server'){
obj = Ext.util.JSON.decode(action.response.responseText);
Ext.Msg.alert('错误:', obj.errors.reason);
}
if(action.failureType == 'client'){
Ext.ux.Toast.msg('提示','预定信息不正确,请核对后重新操作');
}
/*else{
Ext.Msg.alert('警告!', '无法连接到服务器: ' + action.response.responseText );
}*/
}
});
}
}
//设置Form里的所有子项的不可用与可用 true不可用
,setFormItemsDisable:function(condition){
this.items.itemAt(0).items.itemAt(0).items.itemAt(0).items.itemAt(0)
.items.each(function(item){
if(condition){
item.disable();
}else{
item.enable();
}
});
this.items.itemAt(0).items.itemAt(0).items.itemAt(0).items.itemAt(1)
.items.each(function(item){
if(condition){
item.disable();
}else{
if(item.fieldLabel=='预定单号' || item.fieldLabel=='营业员'){
item.disable();
}else{
item.enable();
}
}
});
this.items.itemAt(0).items.itemAt(0).items.itemAt(0).items.itemAt(2)
.items.each(function(item){
if(condition){
item.disable();
}else{
if(item.fieldLabel=='预定单号' || item.fieldLabel=='营业员'){
item.disable();
}else{
item.enable();
}
}
});
this.items.itemAt(0).items.itemAt(0).items.itemAt(1) //备注栏
.items.itemAt(0).items.each(function(item){
if(condition){
item.disable();
}else{
item.enable();
}
});
if(condition){
this.reservItemGrid.disable();
}else{
this.reservItemGrid.enable();
}
}
,updateAvailItem:function(){
//操作成功后更新
//this.onResetBtnClick();
this.infoState='finishedReserv';
//this.getForm().disable();
//this.setDisabled(true);
this.setFormItemsDisable(true);
this.alertReservBtn.enable();
this.saveReservBtn.disable();
this.resetBtn.enable();
this.reservInBtn.enable();
this.fireEvent('updateItem');
}
});
Ext.reg('reservinfo',Neo.frontdesk.ReservInfo);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?