From 0ea8c0d331f123a440074eaa44c390ff54093229 Mon Sep 17 00:00:00 2001 From: bujinyuan Date: Tue, 3 Mar 2026 11:02:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20Task=208=20-=20=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E8=AE=BE=E7=BD=AE=E9=A1=B5=20+=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E9=A1=B5=20+=20=E8=81=94=E7=B3=BB=E4=BA=BA?= =?UTF-8?q?=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pages/chat/settings.vue(聊天设置页): - 对方信息展示(头像+昵称) - 置顶/取消置顶切换 - 清空聊天记录(确认弹窗) - 删除会话(确认弹窗 + 双层返回) pages/chat/search.vue(消息搜索页): - 全局消息搜索(关键词匹配) - 搜索结果列表(发送者头像+昵称+内容+时间) - 点击跳转到对应会话 联系人模块改造: - contact/detail.vue "发消息"按钮改为跳转聊天页 Made-with: Cursor --- frontend/src/pages/chat/search.vue | 217 ++++++++++++++++++++++++++ frontend/src/pages/chat/settings.vue | 186 ++++++++++++++++++++++ frontend/src/pages/contact/detail.vue | 6 +- 3 files changed, 408 insertions(+), 1 deletion(-) create mode 100644 frontend/src/pages/chat/search.vue create mode 100644 frontend/src/pages/chat/settings.vue diff --git a/frontend/src/pages/chat/search.vue b/frontend/src/pages/chat/search.vue new file mode 100644 index 0000000..53e37d9 --- /dev/null +++ b/frontend/src/pages/chat/search.vue @@ -0,0 +1,217 @@ + + + + + + diff --git a/frontend/src/pages/chat/settings.vue b/frontend/src/pages/chat/settings.vue new file mode 100644 index 0000000..f053f99 --- /dev/null +++ b/frontend/src/pages/chat/settings.vue @@ -0,0 +1,186 @@ + + + + + + diff --git a/frontend/src/pages/contact/detail.vue b/frontend/src/pages/contact/detail.vue index e4619a0..d652596 100644 --- a/frontend/src/pages/contact/detail.vue +++ b/frontend/src/pages/contact/detail.vue @@ -136,7 +136,11 @@ const selectGroup = () => { } const sendMessage = () => { - uni.showToast({ title: '聊天功能开发中', icon: 'none' }) + const f = friend.value + if (!f) return + uni.navigateTo({ + url: `/pages/chat/conversation?conversationId=0&peerId=${f.user_id}&peerName=${encodeURIComponent(f.remark || f.nickname || f.username)}&peerAvatar=${encodeURIComponent(f.avatar || '')}` + }) } const handleBlock = () => {