diff --git a/src/api/mall/promotion/kefu/conversation/index.ts b/src/api/mall/promotion/kefu/conversation/index.ts
index 17432b35..96a23706 100644
--- a/src/api/mall/promotion/kefu/conversation/index.ts
+++ b/src/api/mall/promotion/kefu/conversation/index.ts
@@ -16,7 +16,7 @@ export interface KeFuConversationRespVO {
/**
* 会话所属用户昵称
*/
- nickname: string
+ userNickname: string
/**
* 最后聊天时间
*/
diff --git a/src/api/mall/promotion/kefu/message/index.ts b/src/api/mall/promotion/kefu/message/index.ts
new file mode 100644
index 00000000..3408f1e0
--- /dev/null
+++ b/src/api/mall/promotion/kefu/message/index.ts
@@ -0,0 +1,70 @@
+import request from '@/config/axios'
+
+export interface KeFuMessageRespVO {
+ /**
+ * 编号
+ */
+ id: number
+ /**
+ * 会话编号
+ */
+ conversationId: number
+ /**
+ * 发送人编号
+ */
+ senderId: number
+ /**
+ * 发送人头像
+ */
+ senderAvatar: string
+ /**
+ * 发送人类型
+ */
+ senderType: number
+ /**
+ * 接收人编号
+ */
+ receiverId: number
+ /**
+ * 接收人类型
+ */
+ receiverType: number
+ /**
+ * 消息类型
+ */
+ contentType: number
+ /**
+ * 消息
+ */
+ content: string
+ /**
+ * 是否已读
+ */
+ readStatus: boolean
+ /**
+ * 创建时间
+ */
+ createTime: Date
+}
+
+// 客服会话 API
+export const KeFuMessageApi = {
+ // 发送客服消息
+ sendKeFuMessage: async (data: any) => {
+ return await request.put({
+ url: '/promotion/kefu-message/send',
+ data
+ })
+ },
+ // 更新客服消息已读状态
+ updateKeFuMessageReadStatus: async (data: any) => {
+ return await request.put({
+ url: '/promotion/kefu-message/update-read-status',
+ data
+ })
+ },
+ // 获得消息分页数据
+ getKeFuMessagePage: async (params: any) => {
+ return await request.get({ url: '/promotion/kefu-message/page', params })
+ }
+}
diff --git a/src/views/mall/promotion/kefu/components/KeFuChatBox.vue b/src/views/mall/promotion/kefu/components/KeFuChatBox.vue
new file mode 100644
index 00000000..ee41564b
--- /dev/null
+++ b/src/views/mall/promotion/kefu/components/KeFuChatBox.vue
@@ -0,0 +1,167 @@
+
+