diff --git a/manifest.json b/manifest.json
index 4b641da..c65cec7 100644
--- a/manifest.json
+++ b/manifest.json
@@ -2,8 +2,8 @@
"name" : "ZH-HEALTH",
"appid" : "__UNI__C29473D",
"description" : "ZH-HEALTH,您手上的健康管理专家",
- "versionName" : "1.0.7",
- "versionCode" : 107,
+ "versionName" : "1.0.8",
+ "versionCode" : 108,
"transformPx" : false,
/* 5+App特有相关 */
"app-plus" : {
diff --git a/pages.json b/pages.json
index 6ace7f2..0918bda 100644
--- a/pages.json
+++ b/pages.json
@@ -432,8 +432,8 @@
}
},
{
- "path": "pages/im/group/index",
- "name": "imGroup",
+ "path": "pages/im/group/chat",
+ "name": "imGroupChat",
"style": {
"navigationBarTitleText": "我的群聊"
}
diff --git a/pages/im/components/conversationGroup.vue b/pages/im/components/conversationGroup.vue
new file mode 100644
index 0000000..46bcfee
--- /dev/null
+++ b/pages/im/components/conversationGroup.vue
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item}}
+
+
+
+
+
+
+
+
+
diff --git a/pages/im/components/conversationPrivate.vue b/pages/im/components/conversationPrivate.vue
new file mode 100644
index 0000000..0b9e18c
--- /dev/null
+++ b/pages/im/components/conversationPrivate.vue
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item}}
+
+
+
+
+
+
+
+
+
diff --git a/pages/im/components/messagePreview.nvue b/pages/im/components/messagePreview.nvue
index ece6929..a4ce457 100644
--- a/pages/im/components/messagePreview.nvue
+++ b/pages/im/components/messagePreview.nvue
@@ -1,28 +1,28 @@
-
- {{ msg.content || '' }}
+
+ {{ user.name }}:{{ msg.content || '' }}
-
- [语音]
+
+ {{ user.name }}:[语音]
-
- [图片]
+
+ {{ user.name }}:[图片]
-
- [表情]
+
+ {{ user.name }}:[表情]
-
- [文件]
+
+ {{ user.name }}:[文件]
-
- [位置]
+
+ {{ user.name }}:[位置]
-
- [语音通话]
+
+ {{ user.name }}:[语音通话]
-
- [视频通话]
+
+ {{ user.name }}:[视频通话]
@@ -33,11 +33,29 @@
msg: {
type: Object,
default: {}
+ },
+ user: {
+ type: Object,
+ default: function() {
+ return {
+ name: ''
+ }
+ }
}
}
}
-
diff --git a/pages/im/components/sentMessageBar.nvue b/pages/im/components/sentMessageBar.nvue
new file mode 100644
index 0000000..8c721a7
--- /dev/null
+++ b/pages/im/components/sentMessageBar.nvue
@@ -0,0 +1,84 @@
+
+
+
+
+
+ {showPopups = false, onSuccess()}">
+
+
+
+
+
+
diff --git a/pages/im/components/sentPopups.nvue b/pages/im/components/sentPopups.nvue
index 2a3566d..6772875 100644
--- a/pages/im/components/sentPopups.nvue
+++ b/pages/im/components/sentPopups.nvue
@@ -63,6 +63,11 @@
default: ''
}
},
+ computed: {
+ user() {
+ return this.$store.getters.sender
+ }
+ },
methods: {
singleCall(e) {
uni.showToast({
@@ -81,10 +86,11 @@
count: 9,
sourceType: ['album'],
success: res => {
- im.sentImage(this.conversationType, this.targetId, res.tempFilePaths[0], (
- res) => {
- this.success()
- })
+ im.sentImage(this.conversationType, this.targetId, res.tempFilePaths[0],
+ this.user, (
+ res) => {
+ this.success()
+ })
}
})
break;
@@ -92,10 +98,11 @@
uni.chooseImage({
sourceType: ['camera'],
success: res => {
- im.sentImage(this.conversationType, this.targetId, res.tempFilePaths[0], (
- res) => {
- this.success()
- })
+ im.sentImage(this.conversationType, this.targetId, res.tempFilePaths[0],
+ this.user, (
+ res) => {
+ this.success()
+ })
}
})
break;
diff --git a/pages/im/components/sentText.nvue b/pages/im/components/sentText.nvue
index 8534fc1..ee7ef6b 100644
--- a/pages/im/components/sentText.nvue
+++ b/pages/im/components/sentText.nvue
@@ -1,15 +1,7 @@
-
+
@@ -36,6 +28,9 @@
computed: {
disabled() {
return this.inputTxt.length === 0
+ },
+ user() {
+ return this.$store.getters.sender
}
},
created() {
@@ -55,18 +50,18 @@
sent() {
if (!this.disabled) {
RongIMLib.clearTextMessageDraft(this.conversationType, this.targetId)
- im.sentText(this.conversationType, this.targetId, this.inputTxt, () => {
+ im.sentText(this.conversationType, this.targetId, this.inputTxt, this.user, () => {
this.$emit('success')
this.inputTxt = ''
})
}
- },
- focus() {
- this.$emit('focus')
- },
- blur() {
- this.$emit('blur')
- }
+ },
+ focus() {
+ this.$emit('focus')
+ },
+ blur() {
+ this.$emit('blur')
+ }
}
}
@@ -75,30 +70,15 @@
.sent--text {
display: flex;
flex-direction: row;
- justify-content: space-between;
-
- .input {
- background: #F3F6FB;
- height: 70rpx;
- width: 500rpx;
- border-radius: 10rpx;
- margin-right: 15rpx;
- padding: 0 20rpx;
- }
-
- // .button {
- // border: none;
- // background: #34CE98;
- // color: white;
- // width: 120rpx;
- // line-height: 70rpx;
- // text-align: center;
- // border-radius: 10rpx;
- // font-size: 30rpx;
- // font-weight: bold;
- // }
- // .button[disabled] {
- // background-color: #555555;
- // }
+ justify-content: space-between;
+
+ .input {
+ background: #F3F6FB;
+ height: 70rpx;
+ width: 500rpx;
+ border-radius: 10rpx;
+ margin-right: 15rpx;
+ padding: 0 20rpx;
+ }
}
diff --git a/pages/im/components/sentVoice.nvue b/pages/im/components/sentVoice.nvue
index 8ab1148..65ef4cf 100644
--- a/pages/im/components/sentVoice.nvue
+++ b/pages/im/components/sentVoice.nvue
@@ -35,6 +35,11 @@
recorderManager: null
}
},
+ computed: {
+ user() {
+ return this.$store.getters.sender
+ }
+ },
created() {
this.recorderManager = uni.getRecorderManager()
},
@@ -81,7 +86,7 @@
this.recorderManager.onStop(res => {
im.sentVoice(this.conversationType, this.targetId, res.tempFilePath, (this.maxRecordTime -
this
- .recordTime), () => {
+ .recordTime), this.user, () => {
setTimeout(() => {
this.$emit('success')
}, 500)
diff --git a/pages/im/components/showImage.nvue b/pages/im/components/showImage.nvue
index bdbb5be..52a1c68 100644
--- a/pages/im/components/showImage.nvue
+++ b/pages/im/components/showImage.nvue
@@ -1,7 +1,10 @@
-
-
-
-
+
+
+ {{ name }}
+
+
+
+
-
diff --git a/pages/im/components/showVoice.nvue b/pages/im/components/showVoice.nvue
index 159e467..c013d93 100644
--- a/pages/im/components/showVoice.nvue
+++ b/pages/im/components/showVoice.nvue
@@ -1,9 +1,12 @@
-
-
-
- {{msg.duration}}"
-
-
+
+
+ {{ name }}
+
+
+ {{msg.duration}}"
+
+
+
-
diff --git a/pages/im/group/index.vue b/pages/im/group/index.vue
deleted file mode 100644
index 3d1727e..0000000
--- a/pages/im/group/index.vue
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/pages/im/index.vue b/pages/im/index.vue
index 6e5e762..f0606bf 100644
--- a/pages/im/index.vue
+++ b/pages/im/index.vue
@@ -5,16 +5,15 @@
@@ -55,9 +37,7 @@
import showVoice from '../components/showVoice'
import showImage from '../components/showImage'
import showText from '../components/showText'
- import sentText from '../components/sentText'
- import sentVoice from '../components/sentVoice'
- import sentPopups from '../components/sentPopups'
+ import sentMessageBar from '../components/sentMessageBar'
const ChatList = uni.requireNativePlugin('dom')
@@ -71,19 +51,14 @@
name: '',
userId: '',
portraitUrl: ''
- },
- chatType: 1, // 0 语音,1 文本
- showPopups: false,
- inputFocus: false // 输入框是否获得了焦点
+ }
}
},
- components: {
+ components: {
+ sentMessageBar,
showVoice,
showImage,
- showText,
- sentText,
- sentVoice,
- sentPopups
+ showText
},
onLoad(e) {
this.targetId = e.targetId
@@ -100,7 +75,7 @@
}
})
// 监听收到新消息,判断是否是当前会话,更新会话内容
- uni.$on('onReceiveMessage', (msg) => {
+ uni.$on('onReceivePrivateMessage', (msg) => {
if (msg.targetId == this.targetId) {
this.initMessageList()
}
@@ -119,10 +94,6 @@
customCN(val) {
return timeCustomCN(val)
},
- // 切换聊天类型,语音/文本
- changeMessageType() {
- this.chatType = this.chatType === 1 ? 0 : 1
- },
// 获取消息列表
getMessageList() {
im.getMessageList(
@@ -232,24 +203,5 @@
}
}
}
-
- .footer {
- background: white;
- padding: 20rpx 30rpx;
- display: flex;
- justify-content: space-between;
- flex-direction: row;
-
- .msg-type {
- width: 70rpx;
- height: 70rpx;
-
- .icon {
- margin: 5rpx;
- width: 60rpx;
- height: 60rpx;
- }
- }
- }
}
diff --git a/pages/user/index.vue b/pages/user/index.vue
index 91ff793..9f92075 100644
--- a/pages/user/index.vue
+++ b/pages/user/index.vue
@@ -155,12 +155,10 @@
if (this.$store.state.token === '') return;
info()
.then(res => {
- console.log(res);
uni.setNavigationBarTitle({
title: res.nickname
});
this.userInfo = res;
- console.log(res);
})
.catch(err => {
uni.showToast({
diff --git a/router/index.js b/router/index.js
index b3b5465..c331fbb 100644
--- a/router/index.js
+++ b/router/index.js
@@ -13,6 +13,9 @@ const ROUTES = [{
},{
'path': '/pages/im/private/chat',
'name': 'imPrivateChat'
+},{
+ 'path': '/pages/im/group/chat',
+ 'name': 'imGroupChat'
}]
// #endif
diff --git a/store/modules/im.js b/store/modules/im.js
index dc589f6..1437b04 100644
--- a/store/modules/im.js
+++ b/store/modules/im.js
@@ -3,7 +3,7 @@ import im from "@/utils/im/index.js"
export default {
state: {
friends: {},
- sender: {},
+ myInfo: {}
},
getters: {
friends(state) {
@@ -27,7 +27,7 @@ export default {
}
},
sender(state) {
- return state.sender
+ return state.myInfo
}
},
mutations: {
@@ -35,7 +35,11 @@ export default {
Vue.set(state.friends, userInfo.userId, userInfo)
},
SET_state_sender(state, userInfo) {
- state.sender = userInfo
+ state.myInfo = {
+ userId: userInfo.userId,
+ name: userInfo.name,
+ portraitUrl: userInfo.portraitUrl
+ }
}
},
actions: {
@@ -58,7 +62,6 @@ export default {
model.find('userId=' + userInfo.userId, (err, result) => {
if (userInfo.hash != result[0].hash) {
commit('updateFriendInfo', userInfo)
- console.log(userInfo);
if (userInfo.portraitUrl && userInfo.portraitUrl != result[0].portraitUrl) {
saveAvatar(userInfo, (savedFilePath) => {
const info = {
@@ -69,7 +72,6 @@ export default {
localAvatar: savedFilePath
}
model.update('userId=' + userInfo.userId, info, (err, res) => {
- console.log('保存结果', err, res);
})
commit('updateFriendInfo', info)
})
@@ -82,11 +84,9 @@ export default {
localAvatar: result[0].localAvatar
}
model.update('userId=' + userInfo.userId, info, (err, res) => {
- console.log('保存结果', err, res);
})
}
} else {
- console.log('不用更新的用户', userInfo.userId, userInfo.name);
}
})
},
@@ -108,7 +108,6 @@ export default {
localAvatar: savedFilePath
}
model.insert(info, (err, res) => {
- console.log('保存结果', err, res);
})
// 保存头像后,更新信息
commit('updateFriendInfo', info)
@@ -123,7 +122,6 @@ export default {
localAvatar: ''
}
model.insert(info, (err, res) => {
- console.log('保存结果', err, res);
})
}
}
@@ -146,7 +144,6 @@ const saveAvatar = (userInfo, callback) => {
})
},
fail: (err) => {
- console.log('头像保存失败', err);
}
})
}
diff --git a/utils/im/index.js b/utils/im/index.js
index 1a81b1c..db0c4dd 100644
--- a/utils/im/index.js
+++ b/utils/im/index.js
@@ -51,7 +51,7 @@ const setNotifyBadge = () => {
*/
const connect = (token, userInfo, callback) => {
RongIMLib.connect(token, res => {
- callback(res)
+ callback(res)
// 更新个人信息
store.dispatch('setSenderInfo', userInfo)
// 设置未读消息数量
@@ -61,7 +61,7 @@ const connect = (token, userInfo, callback) => {
uni.getStorage({
key: FK,
- success: () => {
+ success: () => {
const model = uni.model.friendModel
model.find((err, results) => {
results.map(item => {
@@ -193,7 +193,7 @@ const addListeners = () => {
}
// 维护消息列表,检查是否需要通知声音,设置新消息提醒的数量
-const newMessage = (msg) => {
+const newMessage = (msg) => {
RongIMLib.getConversationNotificationStatus(msg.conversationType, msg.targetId, ({
code,
status
@@ -204,10 +204,12 @@ const newMessage = (msg) => {
}
}
});
-
- setNotifyBadge()
-
- uni.$emit('onReceiveMessage', msg);
+ setNotifyBadge()
+ if (msg.conversationType === RongIMLib.ConversationType.PRIVATE) {
+ uni.$emit('onReceivePrivateMessage', msg);
+ } else {
+ uni.$emit('onReceiveGroupMessage', msg);
+ }
}
// 播放状态
diff --git a/utils/im/message.js b/utils/im/message.js
index 7e5a061..f83e268 100644
--- a/utils/im/message.js
+++ b/utils/im/message.js
@@ -1,4 +1,5 @@
import store from '@/store/index.js'
+
import * as RongIMLib from '@/uni_modules/RongCloud-IMWrapper/js_sdk/index'
const getMessageList = (conversationType, targetId, timeStamp, count, isForward, callback) => {
@@ -47,24 +48,24 @@ const getMessageList = (conversationType, targetId, timeStamp, count, isForward,
* @param {string} content 消息内容
* @param {function} callback 回调函数
*/
-const sentText = (conversationType, targetId, content, callback) => {
- console.log('发送');
+const sentText = (conversationType, targetId, content, user, callback) => {
const msg = {
conversationType: conversationType,
targetId: String(targetId),
content: {
objectName: 'RC:TxtMsg',
content: content,
- user: store.getters.sender
+ userInfo: user
}
- }
+ }
+
RongIMLib.sendMessage(msg, ({
code,
messageId
}) => {
if (code === 0) {
callback(messageId)
- } else {
+ } else {
uni.showToast({
icon: 'none',
title: '发送失败'
@@ -81,14 +82,15 @@ const sentText = (conversationType, targetId, content, callback) => {
* @param {integer} time 录音时长
* @param {function} callback 录音时长
*/
-const sentVoice = (conversationType, targetId, voiceUrl, time, callback) => {
+const sentVoice = (conversationType, targetId, voiceUrl, time, user, callback) => {
const msg = {
conversationType: conversationType,
targetId: String(targetId),
content: {
objectName: 'RC:HQVCMsg',
local: 'file:///' + plus.io.convertLocalFileSystemURL(voiceUrl),
- duration: time
+ duration: time,
+ userInfo: user
}
}
RongIMLib.sendMediaMessage(msg, {
@@ -107,13 +109,14 @@ const sentVoice = (conversationType, targetId, voiceUrl, time, callback) => {
})
}
-const sentImage = (conversationType, targetId, imageUrl, callback) => {
+const sentImage = (conversationType, targetId, imageUrl, user, callback) => {
const msg = {
conversationType: conversationType,
targetId: String(targetId),
content: {
objectName: 'RC:ImgMsg',
- local: 'file:///' + plus.io.convertLocalFileSystemURL(imageUrl)
+ local: 'file:///' + plus.io.convertLocalFileSystemURL(imageUrl),
+ userInfo: user
}
}
RongIMLib.sendMediaMessage(msg, {
diff --git a/utils/im/群聊的会话列表.json b/utils/im/群聊的会话列表.json
new file mode 100644
index 0000000..091b0f0
--- /dev/null
+++ b/utils/im/群聊的会话列表.json
@@ -0,0 +1,27 @@
+[{
+ "latestMessage": {
+ "content": "你好,这是 725 条消息条消息条消息条消息条消息条消息条消息条消息条消息0.47447800 1644388415",
+ "objectName": "RC:TxtMsg",
+ "userInfo": {
+ "userId": "10051",
+ "name": "Jason.Chen",
+ "extra": "",
+ "portraitUrl": ""
+ }
+ },
+ "objectName": "RC:TxtMsg",
+ "receivedTime": 1644388414889,
+ "sentTime": 1644388415510,
+ "draft": "",
+ "conversationType": 3,
+ "receivedStatus": 0,
+ "conversationTitle": "",
+ "sentStatus": 30,
+ "mentionedCount": 0,
+ "latestMessageId": 98,
+ "isTop": false,
+ "senderUserId": "10005",
+ "unreadMessageCount": 3,
+ "hasUnreadMentioned": false,
+ "targetId": "TG001"
+}]