参会人列表传入数据,倒计时功能实现实时刷新
参会人列表传入数据
在经历了弹窗显示,传入数据打开新窗口重新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);
这一部分本身难度不大,但是因为网上的类似代码不能很好的实现我的功能,于是采用这种方式进行。