feat:add auto pollTimer

This commit is contained in:
leeliforever 2026-03-07 18:19:55 +08:00
parent 26dd2212c2
commit 3b2e32d07d
2 changed files with 116 additions and 0 deletions

View File

@ -369,6 +369,7 @@
sendDisabled:false,
showFaceIcon:false,
showLoadMore:false,
pollTimer:null,
messages:{
page:1,
pagesize:15,
@ -718,10 +719,63 @@
}
if(_this.messages.page==1){
_this.scrollBottom();
_this.startPollMessages();
}
_this.messages.page++;
});
},
startPollMessages(){
let _this=this;
if(_this.pollTimer){
clearInterval(_this.pollTimer);
}
_this.pollTimer=setInterval(function(){
if(!_this.currentGuest) return;
let params={
page:1,
pagesize: 20,
visitor_id: _this.currentGuest,
}
$.get("/2/messagesPages",params,function(res){
let msgList=res.result.list;
let existKeys={};
for(let i=0;i<_this.msgList.length;i++){
var m=_this.msgList[i];
if(m.id){
existKeys['id_'+m.id]=true;
}
if(m.time && m.content){
existKeys[m.time+'_'+m.content]=true;
}
}
let newMsgs=[];
for(let i=msgList.length-1;i>=0;i--){
let item=msgList[i];
var key1=item.id?'id_'+item.id:'';
var key2=item["create_time"]+'_'+replaceContent(item["content"]);
if((key1 && existKeys[key1]) || existKeys[key2]) continue;
if (item["mes_type"] == "kefu") {
item.is_kefu = true;
item.avator=item["kefu_avator"];
item.name=item["kefu_name"];
} else {
item.is_kefu = false;
item.avator=item["visitor_avator"];
item.name=item["visitor_name"];
}
item.content=replaceContent(item["content"]);
item.time = item["create_time"];
newMsgs.push(item);
}
if(newMsgs.length>0){
for(let i=0;i<newMsgs.length;i++){
_this.msgList.push(newMsgs[i]);
}
_this.scrollBottom();
}
});
},5000);
},
//获取信息列表
getMesssagesByVisitorId(visitorId,isAll){
let _this=this;
@ -1238,6 +1292,12 @@
});
},
},
beforeDestroy(){
if(this.pollTimer){
clearInterval(this.pollTimer);
this.pollTimer=null;
}
},
mounted() {
document.addEventListener('paste', this.onPasteUpload)
},

View File

@ -238,6 +238,7 @@
isIframe:false,
kefuInfo:{},
showLoadMore:false,
pollTimer:null,
messages:{
page:1,
pagesize:5,
@ -462,10 +463,59 @@
}
if(_this.messages.page==1){
_this.scrollBottom();
_this.startPollMessages();
}
_this.messages.page++;
});
},
startPollMessages:function(){
let _this=this;
if(_this.pollTimer) return;
_this.pollTimer=setInterval(function(){
if(!_this.visitor||!_this.visitor.visitor_id) return;
let params={
page:1,
pagesize: 20,
visitor_id: _this.visitor.visitor_id,
}
$.get("/2/messagesPages",params,function(res){
let msgList=res.result.list;
let existKeys={};
for(let i=0;i<_this.msgList.length;i++){
var m=_this.msgList[i];
if(m.id){
existKeys['id_'+m.id]=true;
}
if(m.time && m.content){
existKeys[m.time+'_'+m.content]=true;
}
}
let newMsgs=[];
for(let i=msgList.length-1;i>=0;i--){
let item=msgList[i];
var key1=item.id?'id_'+item.id:'';
var key2=item["create_time"]+'_'+replaceContent(item["content"]);
if((key1 && existKeys[key1]) || existKeys[key2]) continue;
if (item["mes_type"] == "kefu") {
item.is_kefu = true;
item.avator=item["kefu_avator"];
} else {
item.is_kefu = false;
item.avator=item["visitor_avator"];
}
item.time = item["create_time"];
item.content=replaceContent(item["content"]);
newMsgs.push(item);
}
if(newMsgs.length>0){
for(let i=0;i<newMsgs.length;i++){
_this.msgList.push(newMsgs[i]);
}
_this.scrollBottom();
}
});
},5000);
},
scrollBottom:function(){
var _this=this;
this.$nextTick(function(){
@ -715,6 +765,12 @@
this.scrollBottom();
},
},
beforeDestroy:function(){
if(this.pollTimer){
clearInterval(this.pollTimer);
this.pollTimer=null;
}
},
mounted:function() {
document.addEventListener('paste', this.onPasteUpload)
document.addEventListener('scroll',this.textareaBlur)