From f2e32a9afa6cdf1da0c1ae73ff07c370d011e172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E8=BE=89?= Date: Mon, 16 Mar 2026 18:50:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BC=9A=E8=AF=9D=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageA/pages/chat/chat.vue | 42 ++++++++++++++++++++++++++++++++---- stores/userChatGroupStore.js | 38 +++++++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 5 deletions(-) diff --git a/packageA/pages/chat/chat.vue b/packageA/pages/chat/chat.vue index f8d6888..cd571f0 100644 --- a/packageA/pages/chat/chat.vue +++ b/packageA/pages/chat/chat.vue @@ -25,16 +25,23 @@ - {{ item.title }} + + {{ item.title }} + + + + {{ item.title }} @@ -166,6 +173,21 @@ const changeDialogue = (item) => { }); } }; + +const deleteSession = (item) => { + if (item.sessionId) { + uni.showModal({ + content: '确认删除该会话?', + success: async (res) => { + if (res.confirm) { + await useChatGroupDBStore().deleteSession(item.sessionId); + $api.msg('会话删除成功'); + } + } + }); + } +}; + function updateSetting() { $api.msg('该功能正在开发中,敬请期待后续更新!'); } @@ -276,6 +298,11 @@ footer-height = 147rpx overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis; //溢出用省略号显示 white-space:nowrap; //溢出不换行 + .drawer-row-content + display: flex + align-items: center + justify-content: space-between + width: 100% .drawer-row-title color: #A6A6A6; font-weight: 500; @@ -285,6 +312,7 @@ footer-height = 147rpx margin-top: 75rpx margin-bottom: 24rpx .drawer-row-list + flex: 1 height: 99rpx; line-height: 99rpx font-size: 42rpx @@ -293,6 +321,12 @@ footer-height = 147rpx font-weight: 500; color: #595959; padding: 0 36rpx + .drawer-row-delete + padding: 0 18rpx + height: 99rpx + display: flex + align-items: center + justify-content: center .drawer-row-active .drawer-row-list:active color: #333333; diff --git a/stores/userChatGroupStore.js b/stores/userChatGroupStore.js index bcfe792..a4ef53d 100644 --- a/stores/userChatGroupStore.js +++ b/stores/userChatGroupStore.js @@ -341,6 +341,41 @@ const useChatGroupDBStore = defineStore("messageGroup", () => { messages.value = messages.value.filter(msg => msg.id !== messageId); } + async function deleteSession(sessionId) { + if (!baseDB.isDBReady) await baseDB.initDB(); + // 删除会话相关的所有消息 + const messagesList = await baseDB.db.queryByField(massageName.value, 'parentGroupId', sessionId); + for (const msg of messagesList) { + await baseDB.db.delete(massageName.value, msg.id); + } + // 删除会话本身 + const allSessions = await baseDB.db.getAll(tableName.value); + const sessionToDelete = allSessions.find(session => session.sessionId === sessionId); + if (sessionToDelete) { + await baseDB.db.delete(tableName.value, sessionToDelete.id); + } + // 更新会话列表 + const result = await baseDB.db.getAll(tableName.value); + const [table] = insertSortData(result.reverse()); + tabeList.value = table; + // 如果删除的是当前会话,切换到第一个会话或清空 + if (chatSessionID.value === sessionId) { + if (tabeList.value.length > 0) { + const firstSession = tabeList.value.find(item => !item.isTitle); + if (firstSession) { + chatSessionID.value = firstSession.sessionId; + initMessage(firstSession.sessionId); + } else { + chatSessionID.value = ''; + messages.value = []; + } + } else { + chatSessionID.value = ''; + messages.value = []; + } + } + } + return { messages, isTyping, @@ -355,7 +390,8 @@ const useChatGroupDBStore = defineStore("messageGroup", () => { getStearm, getHistory, badFeedback, - deleteMessage + deleteMessage, + deleteSession }; });