diff --git a/Cunkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/MessageRecord.module.scss b/Cunkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/MessageRecord.module.scss
index 4d772c27..c1a86408 100644
--- a/Cunkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/MessageRecord.module.scss
+++ b/Cunkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/MessageRecord.module.scss
@@ -33,6 +33,11 @@
font-size: 12px;
margin: 8px 0;
position: relative;
+ font-weight: normal;
+ a {
+ color: #1890ff;
+ margin: 0px 5px;
+ }
}
.loadMore {
text-align: center;
diff --git a/Cunkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/index.tsx b/Cunkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/index.tsx
index 001c0954..11acf4e0 100644
--- a/Cunkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/index.tsx
+++ b/Cunkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/index.tsx
@@ -565,10 +565,19 @@ const MessageRecord: React.FC = ({ contract }) => {
{groupMessagesByTime(currentMessages).map((group, groupIndex) => (
= () => {
const [chatSessions, setChatSessions] = useState<
(ContractData | weChatGroup)[]
>([]);
-
+ const searchKeyword = useCkChatStore(state => state.searchKeyword);
useEffect(() => {
- if (kfSelected == 0) {
- setChatSessions(getChatSessions);
- } else {
- const newChatSessions = getChatSessions.filter(
- v => v.wechatAccountId === kfSelected && kfSelected != 0,
+ let filteredSessions = getChatSessions;
+
+ // 根据客服筛选
+ if (kfSelected !== 0) {
+ filteredSessions = filteredSessions.filter(
+ v => v.wechatAccountId === kfSelected,
);
- setChatSessions(newChatSessions);
}
- }, [getChatSessions, kfSelected]);
+
+ // 根据搜索关键词进行模糊匹配
+ if (searchKeyword.trim()) {
+ const keyword = searchKeyword.toLowerCase();
+ filteredSessions = filteredSessions.filter(v => {
+ const nickname = (v.nickname || "").toLowerCase();
+ const conRemark = (v.conRemark || "").toLowerCase();
+ return nickname.includes(keyword) || conRemark.includes(keyword);
+ });
+ }
+
+ setChatSessions(filteredSessions);
+ }, [getChatSessions, kfSelected, searchKeyword]);
return (
void;
loadChatMessages: (Init: boolean, To?: number) => Promise;
-
+ SearchMessage: (params: {
+ From: number;
+ To: number;
+ keyword: string;
+ Count?: number;
+ }) => Promise;
// 视频消息处理方法
setVideoLoading: (messageId: number, isLoading: boolean) => void;
setVideoUrl: (messageId: number, videoUrl: string) => void;
diff --git a/Cunkebao/src/store/module/weChat/weChat.ts b/Cunkebao/src/store/module/weChat/weChat.ts
index b48102e2..fa537c1d 100644
--- a/Cunkebao/src/store/module/weChat/weChat.ts
+++ b/Cunkebao/src/store/module/weChat/weChat.ts
@@ -98,6 +98,50 @@ export const useWeChatStore = create()(
set({ messagesLoading: false });
}
},
+ SearchMessage: async ({
+ From = 1,
+ To = 4704624000000,
+ keyword = "",
+ Count = 20,
+ }: {
+ From: number;
+ To: number;
+ keyword: string;
+ Count?: number;
+ }) => {
+ const state = useWeChatStore.getState();
+ const contact = state.currentContract;
+ set({ messagesLoading: true });
+
+ try {
+ const params: any = {
+ wechatAccountId: contact.wechatAccountId,
+ From,
+ To,
+ keyword,
+ Count,
+ olderData: true,
+ };
+
+ if ("chatroomId" in contact && contact.chatroomId) {
+ params.wechatChatroomId = contact.id;
+ const messages = await getChatroomMessages(params);
+ const currentGroupMembers = await getGroupMembers({
+ id: contact.id,
+ });
+ set({ currentMessages: messages || [], currentGroupMembers });
+ } else {
+ params.wechatFriendId = contact.id;
+ const messages = await getChatMessages(params);
+ set({ currentMessages: messages || [] });
+ }
+ set({ messagesLoading: false });
+ } catch (error) {
+ console.error("获取聊天消息失败:", error);
+ } finally {
+ set({ messagesLoading: false });
+ }
+ },
setMessageLoading: loading => {
set({ messagesLoading: Boolean(loading) });