hookehuyr

feat(消息中心): 优化消息中心功能并重命名相关文案

将"消息"统一改为"通知",优化搜索框提示文案
添加系统欢迎消息功能,当无消息时显示欢迎信息
将"发送消息"按钮文案改为"发送留言"
......@@ -43,7 +43,7 @@
class="absolute top-0 right-0 bg-red-500 rounded-full w-2 h-2"
>
</div>
<span class="text-xs mt-1">消息</span>
<span class="text-xs mt-1">通知</span>
</view>
<!-- 我的 -->
......
/*
* @Date: 2025-07-01 17:55:00
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-07-16 11:30:49
* @LastEditTime: 2025-08-18 14:57:56
* @FilePath: /jgdl/src/pages/messages/index.config.js
* @Description: 文件描述
*/
export default {
navigationBarTitleText: '消息'
navigationBarTitleText: '通知'
}
......
......@@ -8,7 +8,7 @@
</nut-col> -->
<nut-col span="24">
<!-- Search Bar -->
<nut-searchbar v-model="searchValue" placeholder="按联系人名字/系统通知内容搜索" @blur="onBlurSearch" @clear="onBlurSearch" shape="round"
<nut-searchbar v-model="searchValue" placeholder="按通知内容搜索" @blur="onBlurSearch" @clear="onBlurSearch" shape="round"
background="transparent" input-background="#ffffff">
<template #leftin>
<Search2 />
......@@ -19,7 +19,6 @@
</view>
</view>
<nut-sticky>
<!-- 状态筛选标签 -->
<view id="status-tabs" class="status-tabs">
......@@ -299,12 +298,46 @@ const initData = async () => {
create_time: item.create_time
}))
// 如果没有消息数据,添加系统欢迎消息
if (transformedData.length === 0 && activeTab.value === 'all' && !searchValue.value) {
const welcomeMessage = {
id: 'welcome-system-message',
name: '系统通知',
avatar: '',
icon: markRaw(Notice),
lastMessage: '欢迎使用捡个电驴!您可以在这里查看系统通知和消息。',
time: '刚刚',
unread: false,
type: 'system',
create_time: Date.now(),
isWelcome: true // 标记为欢迎消息
}
conversations.value = [welcomeMessage]
} else {
conversations.value = transformedData
}
// 判断是否还有更多数据
hasMore.value = transformedData.length === pageSize
} else {
// 如果API返回失败,也检查是否需要显示欢迎消息
if (activeTab.value === 'all' && !searchValue.value) {
const welcomeMessage = {
id: 'welcome-system-message',
name: '系统通知',
avatar: '',
icon: markRaw(Notice),
lastMessage: '欢迎使用捡个电驴!您可以在这里查看系统通知和消息。',
time: '刚刚',
unread: false,
type: 'system',
create_time: Date.now(),
isWelcome: true // 标记为欢迎消息
}
conversations.value = [welcomeMessage]
} else {
conversations.value = []
}
hasMore.value = false
}
} catch (error) {
......@@ -447,6 +480,18 @@ const onConversationClick = async (conversation) => {
try {
loading.value = true
// 如果是欢迎消息,直接显示详情不调用API
if (conversation.isWelcome) {
selectedConversation.value = {
...conversation,
content: '欢迎使用捡个电驴!\n\n这里是您的消息中心,您可以:\n• 查看系统通知和重要消息\n• 与其他用户进行聊天交流\n• 接收订单状态更新\n• 获取平台最新动态\n\n感谢您的使用!',
name: '系统通知'
}
showMessageDetail.value = true
loading.value = false
return
}
// 根据消息类型获取详情数据
if (conversation.type === 'system') {
// 获取系统消息详情
......@@ -473,8 +518,10 @@ const onConversationClick = async (conversation) => {
// 显示弹框
showMessageDetail.value = true
// 标记为已读
// 标记为已读(欢迎消息不需要标记已读)
if (!conversation.isWelcome) {
markAsRead(conversation.id)
}
} catch (error) {
console.error('获取消息详情失败:', error)
Taro.showToast({
......@@ -484,7 +531,9 @@ const onConversationClick = async (conversation) => {
// 即使失败也显示基本信息
selectedConversation.value = conversation
showMessageDetail.value = true
if (!conversation.isWelcome) {
markAsRead(conversation.id)
}
} finally {
loading.value = false
}
......
<!--
* @Date: 2022-09-19 14:11:06
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-08-04 14:32:52
* @LastEditTime: 2025-08-18 14:36:14
* @FilePath: /jgdl/src/pages/productDetail/index.vue
* @Description: 商品详情页
-->
......@@ -237,7 +237,7 @@
<nut-button @click="sendMessageToSeller" block type="primary" shape="round" color="orange"
style="background-color: #f97316; border-color: #f97316; margin-top: 2rem;"
:disabled="!messageText.trim()">
发送消息
发送留言
</nut-button>
</view>
</nut-popup>
......