titleCollapse:true,//高级搜索点击隐藏显示
添加按钮 》弹出页面
1.添加按钮
//核销  在控制层页面添加页面路径》添加操作按钮》
window.allOrderListXlyView_orderFunc_consumeXLY = function(recordId,orders_id,orderNO){
    Ext.getCmp('allOrderListXlyView').fireEvent('expensecalendar',recordId,orders_id,orderNO);
}
2.去defind.js页面添加弹出页面以及弹出的控制层
// 线路游消费
var consumeXLYView_id_order = 'consumeXLYView_order';
var consumeXLYView_order = 'App.view.order.allOrderXly.consumeXLYView';
var consumeXLYController_order = 'App.controller.order.allOrderXly.consumeXLYController';
3.在弹出view时注意
 Ext.define(consumeXLYView_order,{ //这个页面路径是defind.js
   extend:'Ext.window.Window',
   initComponent:function(){
        Ext.apply(this,{
              width:450,
              height:450,
              autoShow:true,
              modal:true,
              animCollapse : true,
              animateTarget : Ext.getBody(),
              layout:'fit',
              items:[{
                  xtype:'form',
                  margin:'10 10 10 10',
                  scrollable:true,
                  items:[
                  {
                      xtype:'displayfield',fieldLabel:'消费订单号',name:'orderNO',width:150,labelWidth:80
                  },{
                      xtype:'fieldcontainer',
                      width:'100%',name:'refundNumContainer',
                      //hidden:true,
                      items:[{
                          xtype:'displayfield',fieldLabel:'电子码',name:'codeField',width:150,labelWidth:60
                      },{
                          xtype:'fieldcontainer',layout:{type:'hbox',align:'middle'},width:'100%',
                          items:[
                    
                          {
                              xtype:'numberfield',fieldLabel:'退款数量',minValue:'1',name:'count',width:150,labelWidth:60,value:'1',
                              allowBlank:false,blankText:'退款数量不能为空'
                          },{
                              xtype:'tbtext',text:'',name:'refundAbleTbtext'
                          },
                            
                          ]
                      }]
                  },
                  {
                    xtype:'displayfield',fieldLabel:'产品名称',name:'printName',width:150,labelWidth:60
                    },
                  
                  {
                      xtype:'displayfield',fieldLabel:'已消费数量',name:'consumeNum',width:150,labelWidth:80
                  },
                  ]
              }],
              buttons:[{
                text:'取消',
                cls:'btn btn-danger',
                handler:function(o){
                    o.up('window').close();
                }
              },{
                text:'提交',
                name:'btnOk',
                cls:'btn btn-success'
              }]
           });
           this.callParent(arguments);
   }
});
 3 在弹出的controller控制层中注意
Ext.define(consumeXLYController_order,{ //这块需要换成与define.js相符的controller路径,这些里面必须与后台接口返回的数据字段相符合,才能显示出来
     extend:'Ext.app.Controller',
     views:[consumeXLYView_order],
     init:function(){
         var currentObjView = null;
      var refundApplyCodeIds = [];
         this.control({
              '#consumeXLYView_order':{
                        'afterrender':function(o){
                                  currentObjView = o;
                        Ext.Ajax.request({
                              url:__APP__+'/XlyOrders/listOrdersConsumeCodes',
                              params:{
                                  orders_id:o.orderId
                              },
                              timeout:60000,
                              success:function(response,opts){
                                  var text=Ext.decode(response.responseText);
                                  if(text.success==false){
                                      o.close();
                                      Ext.MessageBox.alert('提示',text.msg);
                                  }else {
                                        var code = text.lists;
                                      if(code.length>0)refundApplyCodeIds = code;
                                             //console.log(code.length);
                                        if(code.length==1){
                                             o.down('fieldcontainer[name=refundNumContainer]').show();
                                             o.down('displayfield[name=codeField]').setValue(code[0].code);
                                             o.down('displayfield[name=orderNO]').setValue(o.orderNO);
                                             var refundAbleNum = code[0].canRefundNum;
                                             var printName = code[0].printName;
                                             //console.log(printName);
                                             o.down('numberfield[name=num]').setMaxValue(refundAbleNum);
                                             o.down('displayfield[name=printName]').setValue(printName);
                                             o.down('tbtext[name=refundAbleTbtext]').setText('(可退款数量'+refundAbleNum+')');
                                        }else if(code.length>1){
                                             o.down('numberfield[name=num]').disable();
                                             o.down('fieldcontainer[name=refundCodeContainer]').show();
                                             o.down('displayfield[name=orderNO]').setValue(o.orderNO);
                                            
                                             Ext.Array.each(code,function(mv){
                                                     o.down('fieldcontainer[name=refundCodeContainer]').down('checkboxgroup').insert(0,{
                                                          boxLabel:mv.code, name:'codes', checkboxInputId:mv.id,submitValue:false
                                                     });
                                             });
                                        }
                                  }
                              },
                              failure: function(response, opts) {
                                  o.close();
                                  Ext.MessageBox.alert('服务器出错',response.status);
                              }
                        });
                        }
              },
              '#consumeXLYView_order checkbox[name=selectAll]':{
                'change':function(o,newValue,oldValue){
                       var checkboxgroup = Ext.ComponentQuery.query('fieldcontainer[name=refundCodeContainer] checkbox[name=codes]');
                       Ext.Array.each(checkboxgroup,function(mv){
                             mv.setValue(newValue);
                       });
                }
              },
              '#consumeXLYView_order button[name=btnOk]':{
                click:function(o){
                       //var checkboxs = Ext.ComponentQuery.query('numberfield[name=num]');
                       //var codeStr = [];
                       //Ext.Array.each(checkboxs,function(mv){
                       //     if(mv.getValue()==true)codeStr.push(mv.checkboxInputId);
                       //});
                       //var code_id = codeStr.join(',');
                       //if(refundApplyCodeIds.length==1)code_id = refundApplyCodeIds[0].id;
                       o.up('window').down('form').submit({
                            waitMsg:'提交中...',
                            clientValidation: true,
                            submitEmptyText:false,
                            url: __APP__+"/index.php/XlyOrders/consumeOrder",  //提交后调整页面的路径也相当于地址
                            params:{
                                
                                order_id:currentObjView.orderId
                            },
                            success: function(form, action){
                                o.up('window').close();
                                Ext.getStore('order.allOrderXly.allOrderListStore').loadPage(1);
                                Ext.toast({
                                   html: action.result.msg,
                                   title: '提示',
                                   width: 400,
                                   align: 't'
                                });
                            },
                            failure: function(form, action) {
                                switch (action.failureType) {
                                    case Ext.form.action.Action.CLIENT_INVALID:
                                        Ext.Msg.alert('退款失败', '无效输入');
                                        break;
                                    case Ext.form.action.Action.CONNECT_FAILURE:
                                        Ext.Msg.alert('退款失败', '联网失败');
                                        break;
                                    case Ext.form.action.Action.SERVER_INVALID:
                                       Ext.Msg.alert('退款失败', action.result.msg);
                               }
                            }
                       });
                }
              }  
         });
     }
});
 

Ext小总结的更多相关文章

  1. 【python018--函数参数】

    1.形参和实参 >>> def MyFirstFunction(name):    '函数定义过程中的name是叫形参'    #因为Ta只是一个形式,表示占据一个参数位置    p ...

  2. 【翻译】要理解Ext JS 5小工具

    原版的:Understanding Widgets in Ext JS 5 在Ext JS 5,引入了新的"widgetcolumn",支持在网格的单元格中放置组件. 同一时候,还 ...

  3. 【翻译】了解Ext JS 5的小部件

    原文:Understanding Widgets in Ext JS 5 在Ext JS 5,引入了新的"widgetcolumn",支持在网格的单元格中放置组件.同时,还在Ext ...

  4. Extjs 项目中常用的小技巧,也许你用得着(5)--设置 Ext.data.Store 传参的请求方式

    1.extjs 给怎么给panel设背景色 设置bodyStyle:'background:#ffc;padding:10px;', var resultsPanel = Ext.create('Ex ...

  5. Ext JS - 问答

    Ext JS - 问答 在下面你将可以找到关于Ext JS 的最常见问题的答复.如果没有找到您所需的答复,请访问 Ext JS 论坛或者提交一个支持申请. 如果你确信你的问题可以对本页有补充,请让我们 ...

  6. 编辑 Ext 表格(二)——— 编辑表格元素

    一.编辑单元格 Ext 中通过配置表格的属性 plugins 来设置表格是否可编辑, 表格的配置具体如下: var gridTable = Ext.create('Ext.grid.Panel', { ...

  7. 编辑 Ext 表格(一)——— 动态添加删除行列

    一.动态增删行 在 ext 表格中,动态添加行主要和表格绑定的 store 有关, 通过对 store 数据集进行添加或删除,就能实现表格行的动态添加删除.   (1) 动态添加表格的行  gridS ...

  8. extjs 学习小窍门

    一.从form中获取field的三个方法: 1.Ext.getCmp('id'); 2.FormPanel.getForm().findField('id/name'); 3.Ext.get('id/ ...

  9. Ext JS 4 新特性2:配置项属性(config)之一

    Ext JS 4 新特征2:配置项属性config 最新版本的Ext JS 4.2的另外一个伟大的新特征就是增加了configuration配置项属性,当我们在创建一个新类的时候,经常性的要设置某某属 ...

随机推荐

  1. Ext.Net MVC 配置(2)

    在VS2012中使用NuGet类库管理器配置EXT.NET MVC环境在“Ext.Net MVC 配置(1)”文章已经写到,方法很简单也很方便,但就是不知道它在安装这些库时对项目做了什么很不爽. 通过 ...

  2. PHP语法

    * PHP语法 * 常量与变量 * 常量 - 一旦定义并初始化后,值不会改变 * 使用const关键字 const 常量名=常量值 * define(常量名,常量值) * 变量 - "$&q ...

  3. 【单页应用】理解MVC

    前言 之前我们为view引入了wrapperSet的概念,想以此解决view局部刷新问题,后来发现这个方案不太合理 view里面插入了业务相关的代码,事实上这个是应该剥离出去,业务的需求千奇百怪,我们 ...

  4. css限制单行文本输入,超出部分使用...替换

    在实际应用中,经常需要只显示一行文字,不允许文字换行破坏整体样式的情况.例如'商品的名称','简介'等等.但是由于显示器的宽度不一样,会出现后台所给文字内容,一行文本容纳不下的情况.溢出的文本如果使用 ...

  5. UIPickerView的使用(一)

    简介:UIPickerView是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活.UIPick ...

  6. EventBus源码解析 源码阅读记录

    EventBus源码阅读记录 repo地址: greenrobot/EventBus EventBus的构造 双重加锁的单例. static volatile EventBus defaultInst ...

  7. AsyncHttpClient 源码分析

    上一篇文章从功能和用法上对AsyncHttpClient做了个大致介绍,今天我们和以往一样,从内部实现.原理的角度带领大家看看 其工作机制,以便加深理解.写程序越多,我发现每接触一个新东西,都会有强烈 ...

  8. TOP命令各个参数代表意义详解

    Top命令是Linux下常用的系统性能分析工具,能实时查看系统中各个进程资源占用情况. top - 16:24:25 up 284 days, 4:59, 1 user, load average: ...

  9. 准备CLR源码阅读环境

    微软发布了CLR 2.0的源码,这个源码是可以直接在freebsd和windows环境下编译及运行的,请在微软shared source cli(http://www.microsoft.com/en ...

  10. TNS-12502: TNS:listener received no CONNECT_DATA from client

    检查我们的一台ORACLE数据库的监听日志发现有不少TNS-12502错误信息.如下所示 TNS-12502: TNS:listener received no CONNECT_DATA from c ...