[暑期项目实训]五、参会人列表传入数据,倒计时功能实现实时刷新

参会人列表传入数据,倒计时功能实现实时刷新

参会人列表传入数据

在经历了弹窗显示,传入数据打开新窗口重新axios获取数据两个版本后,根据重新定义的接口数据,又更改了具体实现的方式。当前采用第一次传入所有数据后在通过push传入下一界面。实现的过程没有问题,在此仅作记录。

倒计时功能实现实时刷新

倒计时刷新问题,我在网上找了许多算法,发现并不适用我们的程序,借鉴一部分后,我的代码如下:

函数:Dekta_T,传入开始时间的时间戳,获取本地时间(此处后续会改为获取服务器时间),判断时间戳的大小后,进行时间计算。

Delta_T:function(startTime) {
            var timestamp=new Date().getTime(); 
            var date1 = ""; 
            if(timestamp > startTime){
                return "会议已开始,请加入会议"
            }else{
                date1 = timestamp; //当前时间
            }
            var date2 = startTime; //开始时间
            var date3 =  date2- date1; //时间差的毫秒数

            //计算出相差天数
            var days = Math.floor(date3 / (24 * 3600 * 1000));
            //计算出小时数
            var leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
            var hours = Math.floor(leave1 / (3600 * 1000));
            //计算相差分钟数
            var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
            var minutes = Math.floor(leave2 / (60 * 1000));
            //计算相差秒数
            var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
            var seconds = Math.round(leave3 / 1000);
            if(days == 0){
                var rmsg = "距离会议开始还有";
                if(hours < 10){
                    rmsg += "0"+ hours;
                }else{
                    rmsg += hours;
                }
                if(minutes < 10){
                    rmsg += ":0" + minutes;
                }else{
                    rmsg += ":" + minutes;
                }
                if(seconds < 10){
                    rmsg += ":0" + seconds;
                }else{
                    rmsg += ":" + seconds;
                }
                return rmsg;
            }else{
                return "距离会议开始还有"+ days + "天";
            }
        },

随后在create()方法中,写入,其中的alert_15_min_rest函数是判断倒计时最后15分钟时改变字体颜色提示。

setInterval(() => {   
            this.meetingList.forEach((item)=>{
                item.met_time_rem=this.Delta_T(item.the_start);
                item.met_alert_color=this.alert_15_min_rest(item.the_start);
                if(item.met_time_rem.startsWith("会议已开始,请加入会议")){
                    item.show_editor_and_cancel=false;
                    item.before=false;
              }
          })
      }, 1000);

这一部分本身难度不大,但是因为网上的类似代码不能很好的实现我的功能,于是采用这种方式进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值