起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2890|回复: 0

[分享] 异步执行ACTION 进度条显示

  [复制链接]

62

主题

363

帖子

1184

积分

金牌会员

Rank: 6Rank: 6

积分
1184
QQ
发表于 2015-12-24 10:05:37 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
做一个考勤项目,在考勤汇总中有大量的运算,页面一直等待中,这需要有进度条显示,研究了很久终于实现我想要的效果,现将代码贴上来,给大家共享
        Model.prototype.button1Click = function(event){

                var pop = this.comp('popOver1');
               
                var td=this.comp('tempData');
                var od = this.comp('orgData');
                var rq = td.val('fNY');
                var con = this.getContext();
                var iNow = 0;
                var my = this;
                //var og = this.comp('orgGrid');
        //        var olist = og.getCheckeds();
                //刷 新员工列表
                var fFName = od.val('fFName');
                var ed = this.comp('empData');
                ed.setFilter('filer0', "HR_EP_Employee.fFName like '" + fFName + "%'");
                ed.refreshData();
                if(ed.count() == 0){
                        justep.Util.hint('请选择员工!', {type: 'warning'});
                        return;
                }
                //设置进度条
                //debugger;
                ed.first();
                var kp = this.comp('kqProgress');
                kp.set({"valuemax" : ed.count()});
                kp.set({'valuenow' : 0});               
               
                pop.show();       
                //定时调用ACTION
                var intervalKey = setInterval(function(){
                    // do sth
                     var YGGH =  ed.val('fCode'); //od.getRowByID(olist[iNow]).val('per_code');
               
                    // alert(rq);
                    //  debugger;
                       var bizparam = new biz.Request.ActionParam();
                           bizparam.setDate('KQRQ',rq );
                           bizparam.setString('YGGH',YGGH);
                           bizparam.setString('fName',ed.val('fName'));
                           bizparam.setString('fFName',ed.val('fFName'));
                        //这是注意,是调用异步,                  
                       biz.Request.sendAsyncBizRequest({
                                    'context' : con,
                                    'action' : 'M_KQCLAction',
                                    'parameters' : bizparam,
                                    'callback' : function(callbackData) {
                                            callbackData.ignoreError = false;
                                            if (callbackData.state) {
                                                        kp.set({'valuenow' : iNow });
                                                        if (iNow >=ed.count()-1) {
                                                                                justep.Util.hint('汇总完成!', {type: 'success'});
                                                                                pop.hide();
                                                                                my.refreshHZB();       
                                                                                pop.hide();                                                
                                                        }
                                                            }else {
                                                                justep.Util.hint('汇总失败!', {type: 'warning'});
                                                                    throw new Error('调用失败!|' + event.response.message);
                                                                }
                                                          }
               
                          });
                  
                   //这段是重点,设置中断的条件,
                    iNow++; // 计数器+1
                    ed.next();
                    if (iNow >= ed.count()) { // // 200次终止
                        clearInterval(intervalKey);
                        intervalKey = null;


                    }
               
               
                }, 3000);//这是定时调用的时间间隔
               
        };

最终效果

最终效果
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-2 23:57 , Processed in 0.064755 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表