Browse Source

修改客服登录筛选换个浏览器无效问题

master
[yxf] 3 weeks ago
parent
commit
d64145a3fb
  1. 2
      im-web/src/components/account/AccountSwitchMenu.vue
  2. 58
      im-web/src/store/chatStore.js

2
im-web/src/components/account/AccountSwitchMenu.vue

@ -55,7 +55,7 @@
{{ account.nickName }} {{ account.nickName }}
</div> </div>
<div class="account-name">@{{ account.userName }}</div> <div class="account-name">@{{ account.userName }}</div>
<div class="account-id">ID: {{ account.id }}</div> <!-- <div class="account-id">ID: {{ account.id }}</div> -->
</div> </div>
<div class="account-actions"> <div class="account-actions">
<el-button <el-button

58
im-web/src/store/chatStore.js

@ -35,40 +35,40 @@ export default defineStore('chatStore', {
}, },
actions: { actions: {
cleanOfflineChats() { cleanOfflineChats() {
const friendStore = useFriendStore(); const friendStore = useFriendStore();
const onlineFriendIds = friendStore.onlineFriendIds || []; const onlineFriendIds = friendStore.onlineFriendIds || [];
// 获取当前会话列表 // 获取当前会话列表
let chats = this.findChats(); let chats = this.findChats();
let removedCount = 0; let removedCount = 0;
// 从后往前遍历,避免删除时索引错乱 // 从后往前遍历,避免删除时索引错乱
for (let idx = chats.length - 1; idx >= 0; idx--) { for (let idx = chats.length - 1; idx >= 0; idx--) {
const chat = chats[idx]; const chat = chats[idx];
// 只处理私聊会话 // 只处理私聊会话
if (chat.type === 'PRIVATE') { if (chat.type === 'PRIVATE') {
const isOnline = onlineFriendIds.includes(chat.targetId); const isOnline = onlineFriendIds.includes(chat.targetId);
if (!isOnline) { if (!isOnline) {
// 标记为删除 // 标记为删除
chat.delete = true; chat.delete = true;
chat.stored = false; chat.stored = false;
removedCount++; removedCount++;
}
} }
} }
}
// 清理已删除的会话 // 清理已删除的会话
this.chats = this.chats.filter(chat => !chat.delete); this.chats = this.chats.filter(chat => !chat.delete);
// 保存到存储 // 保存到存储
this.saveToStorage(true); this.saveToStorage(true);
console.log(`清理完成: 删除了 ${removedCount} 个离线会话,剩余 ${this.chats.length} 个会话`); console.log(`清理完成: 删除了 ${removedCount} 个离线会话,剩余 ${this.chats.length} 个会话`);
return removedCount; return removedCount;
}, },
initChats(chatsData) { initChats(chatsData) {
this.chats = []; this.chats = [];
this.privateMsgMaxId = chatsData.privateMsgMaxId || 0; this.privateMsgMaxId = chatsData.privateMsgMaxId || 0;
@ -373,6 +373,16 @@ export default defineStore('chatStore', {
let chats = cacheChats || this.chats; let chats = cacheChats || this.chats;
// 刷新免打扰状态 // 刷新免打扰状态
const friendStore = useFriendStore(); const friendStore = useFriendStore();
const onlineFriendIds = friendStore.onlineFriendIds || [];
chats = chats.filter(chat => {
// 保留群聊
if (chat.type === 'GROUP') return true;
// 私聊只保留在线好友的
if (chat.type === 'PRIVATE') {
return onlineFriendIds.includes(chat.targetId);
}
return true;
});
const groupStore = useGroupStore(); const groupStore = useGroupStore();
chats.forEach(chat => { chats.forEach(chat => {
if (chat.type == 'PRIVATE') { if (chat.type == 'PRIVATE') {

Loading…
Cancel
Save