diff --git a/jiuyi2/api/news.js b/jiuyi2/api/news.js index 2d9c258e..a5f24aa7 100644 --- a/jiuyi2/api/news.js +++ b/jiuyi2/api/news.js @@ -208,10 +208,11 @@ export const news = { }) }, - // 群聊发消息 + // 消息列表 getMessageList(param) { return util.request({ - url: `/user/chat/getMessageList`, + // url: `/user/chat/getMessageList`, + url: `/user/chat/getMsgListById`, query: param.query, data: param.data, method: 'GET' diff --git a/jiuyi2/components/footerMenu/footerMenu.vue b/jiuyi2/components/footerMenu/footerMenu.vue index f52ce3cb..a42a390f 100644 --- a/jiuyi2/components/footerMenu/footerMenu.vue +++ b/jiuyi2/components/footerMenu/footerMenu.vue @@ -15,6 +15,9 @@ import { reactive, watch, } from 'vue' +import { + onLoad, +} from "@dcloudio/uni-app" // 工具库 import util from '@/common/js/util'; const { @@ -149,6 +152,8 @@ onMounted(() => { // // proxy.$refs.alert.open() +}) +onLoad(()=>{ // 获取未读消息数量 getNoReadNum() }) @@ -182,6 +187,7 @@ function handleMenu(item) { else uni.navigateTo({ url: `/${item.pagePath}`, }) + getNoReadNum() return } // @@ -221,9 +227,10 @@ function getNoReadNum() { return } - const unreadCount = uni.$chat.getTotalUnreadMessageCount(); - + // #ifdef APP + const unreadCount = uni.$chat.getTotalUnreadMessageCount(); noReadNum.value = +unreadCount > 99 ? '99+' : unreadCount; + // #endif } diff --git a/jiuyi2/components/index/collectAdd.vue b/jiuyi2/components/index/collectAdd.vue index aa75f010..1ad3f062 100644 --- a/jiuyi2/components/index/collectAdd.vue +++ b/jiuyi2/components/index/collectAdd.vue @@ -43,9 +43,11 @@ }) onBeforeUnmount(() => { + // #ifdef APP uni.offKeyboardHeightChange(rs => { console.log('rs', rs) }) + // #endif }) /** diff --git a/jiuyi2/components/news/book.vue b/jiuyi2/components/news/book.vue index 8577e803..d03f1e35 100644 --- a/jiuyi2/components/news/book.vue +++ b/jiuyi2/components/news/book.vue @@ -1,430 +1,433 @@ \ No newline at end of file diff --git a/jiuyi2/components/news/msgList.vue b/jiuyi2/components/news/msgList.vue index debed427..0030eda5 100644 --- a/jiuyi2/components/news/msgList.vue +++ b/jiuyi2/components/news/msgList.vue @@ -69,7 +69,7 @@ const list = reactive([]) onMounted(() => { if (props.type == 0) { getList() - } else if(props.type == 1) { + } else if (props.type == 1) { // 视频消息 } else if (props.type == 2) { // 商城消息 @@ -79,7 +79,7 @@ onMounted(() => { }) onUnmounted(() => { - // removeListener() + removeListener() }) // 开启监听消息 @@ -93,7 +93,9 @@ function addListener() { // 移除监听 function removeListener() { - uni.$chat.on(TencentCloudChat.EVENT.CONVERSATION_LIST_UPDATED); + // #ifdef APP + uni.$chat.off(TencentCloudChat.EVENT.CONVERSATION_LIST_UPDATED); + // #endif } // 获取消息列表 @@ -104,7 +106,8 @@ function getList() { } }).then(rs => { if (rs.code == 200) { - list.data = handleList(rs.data); + // list.data = handleList(rs.data); + list.data = handleList(JSON.parse(rs.msg).SessionItem); return } util.alert({ @@ -112,17 +115,6 @@ function getList() { showCancel: false, }) }) - - // // 验证sdk是否准备完毕 - // let isReady = uni.$chat.isReady(); - // if (!isReady) { - // setTimeout(function () { - // getList(); - // }, 1000); - // return - // } - - // uni.$chat.getMessageList({}) } /** @@ -130,53 +122,37 @@ function getList() { * @param {Object} item */ function handleList(list) { - list.forEach(item => { - item.callbackJson = JSON.parse(item.callbackJson); - - if (item.groupId != null) { - item.unreadCount = getGroupNoReadNum(item.groupId) - } - if (item.callbackJson.callback_json.length) { - let msgType = item.callbackJson.callback_json[0].MsgType; - if (msgType == TencentCloudChat.TYPES.MSG_TEXT) { - item.chatText = item.callbackJson.callback_json[0].MsgContent.Text - } else if (msgType == TencentCloudChat.TYPES.MSG_IMAGE) { - item.chatText = '[图片]' - } else if (msgType == TencentCloudChat.TYPES.MSG_AUDIO) { - item.chatText = '[语音]' - } else if (msgType == TencentCloudChat.TYPES.MSG_VIDEO) { - item.chatText = '[视频]' - } else if (msgType == TencentCloudChat.TYPES.MSG_CUSTOM) { - if (item.callbackJson.callback_json[0].businessType == 'redPacket') { - item.chatText = `[红包] ${item.callbackJson.blessing}` - } else if (item.callbackJson.callback_json[0].businessType == '1') { - // if (item.callbackJson.callback_json[0].call_type == '1') { - // item.chatText = '[语音通话]' - // } else if (item.callbackJson.callback_json[0].call_type == '2') { - // item.chatText = '[视频通话]' - // } - } - } - } - }) - - return list -} - -// 查询群聊未读数量 -function getGroupNoReadNum(groupId) { // 验证sdk是否准备完毕 let isReady = uni.$chat.isReady(); if (!isReady) { setTimeout(function () { - getGroupNoReadNum(groupId); + handleList(list); }, 800); return } - const unreadCount = uni.$chat.getTotalUnreadMessageCount('GROUP', groupId); + list.forEach(item => { + item.MsgTime = handleDate(item.MsgTime) - return unreadCount; + let type = item.Type == 1 ? `C2C${item.To_Account}` : `GROUP${item.GroupId}`; + uni.$chat.getConversationProfile(type).then(rs => { + let res = rs.data.conversation; + + item.chatText = res.lastMessage.messageForShow; + item.unreadCount = res.unreadCount; + if (item.Type == 1) { + item.avatar = res.userProfile.avatar; + item.name = res.userProfile.nick; + } else if (item.Type == 2) { + item.avatar = res.groupProfile.avatar; + item.name = res.groupProfile.name; + item.num = res.groupProfile.memberCount; + } + + }) + }) + + return list } // // 点击用户 @@ -204,14 +180,14 @@ function handleChat(item) { // 单聊 if (item.groupId == null) { param.type = 'C2C' - param.name = `${item.callbackJson.from_name}` - param.msgId = `${item.callbackJson.from_id}` + param.name = `${item.name}` + param.msgId = `${item.To_Account}` } else { // 群聊 param.type = 'GROUP' - param.name = `${item.groupChatDTO.name}` - param.msgId = `${item.groupId}` - param.num = `${item.groupChatDTO.memberCount}` + param.name = `${item.name}` + param.msgId = `${item.GroupId}` + param.num = `${item.num}` } setRead(item) @@ -240,7 +216,7 @@ function delMsg(item) { return } - let conversationId = item.groupId == null ? `C2C${item.fromId}` : `GROUP${item.groupId}`; + let conversationId = item.Type == 1 ? `C2C${item.To_Account}` : `GROUP${item.GroupId}`; uni.$chat.deleteConversation(conversationId).then(rs => { getList() @@ -258,7 +234,7 @@ function setRead(item) { return } - let conversationId = item.groupId == null ? `C2C${item.fromId}` : `GROUP${item.groupId}`; + let conversationId = item.Type == 1 ? `C2C${item.To_Account}` : `GROUP${item.GroupId}`; uni.$chat.setMessageRead({ conversationID: conversationId, }).then(rs => { @@ -266,6 +242,21 @@ function setRead(item) { }) } +// 时间转换 +function handleDate(timestamp) { + var timestamp = +timestamp * 1000; + var date = new Date(timestamp); + + var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; + var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '; + var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; + var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'; + var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()); + + var formattedDate = M + D + h + m + s; + return formattedDate +} + @@ -326,25 +317,28 @@ function setRead(item) { @click="handleMenu($event, item)"> -