diff --git a/pages/im/components/conversation/messagePreview.vue b/pages/im/components/conversation/messagePreview.vue
index 37dd25e..f2ac028 100644
--- a/pages/im/components/conversation/messagePreview.vue
+++ b/pages/im/components/conversation/messagePreview.vue
@@ -7,33 +7,36 @@
{{ user.name }}:{{ msg.content || '' }}
-
+
{{ user.name }}:[语音]
-
+
{{ user.name }}:[图片]
-
+
{{ user.name }}:[表情]
-
+
{{ user.name }}:[文件]
-
+
{{ user.name }}:[位置]
-
+
{{ user.name }}:[语音通话]
-
+
{{ user.name }}:[视频通话]
-
+
[{{ msg.message }}]
-
+
{{ user.name }}: 撤回了一条消息
+
+ {{ msg.objectName }}
+
diff --git a/pages/im/components/sent/sentPopups.vue b/pages/im/components/sent/sentPopups.vue
index 28ea991..f42e345 100644
--- a/pages/im/components/sent/sentPopups.vue
+++ b/pages/im/components/sent/sentPopups.vue
@@ -132,11 +132,13 @@
break;
case 'location':
uni.chooseLocation({
- success: (location) => {
- console.log(location);
- im.sentLocation(this.conversationType, this.targetId, location).then(() => {
- this.success()
- })
+ success: (location) => {
+ const thumbnail = ''
+ // 通过 location 的经纬度,合成一张图片,再把图片的base64发送出去
+ im.sentLocation(this.conversationType, this.targetId, location, thumbnail)
+ .then(() => {
+ this.success()
+ })
}
})
break;
diff --git a/pages/im/components/sent/sentText.vue b/pages/im/components/sent/sentText.vue
index 7ccab83..0e745c5 100644
--- a/pages/im/components/sent/sentText.vue
+++ b/pages/im/components/sent/sentText.vue
@@ -59,7 +59,7 @@
RongIMLib.clearTextMessageDraft(this.conversationType, this.targetId)
this.$emit('success')
this.inputTxt = ''
- })
+ })
}
},
focus() {
diff --git a/pages/im/components/show/showAudio.vue b/pages/im/components/show/showAudio.vue
new file mode 100644
index 0000000..323b299
--- /dev/null
+++ b/pages/im/components/show/showAudio.vue
@@ -0,0 +1,84 @@
+
+
+ {{ contact(message.senderUserId).name }}
+
+
+ {{ label }}
+
+
+
+
+
+
+
diff --git a/pages/im/components/show/showLocation.vue b/pages/im/components/show/showLocation.vue
index 80efb4c..3c14247 100644
--- a/pages/im/components/show/showLocation.vue
+++ b/pages/im/components/show/showLocation.vue
@@ -7,9 +7,11 @@
{{ content.customFields.name }}
- {{ content.customFields.address }}
+
+
+ {{ content.customFields.address }}
-
+
@@ -81,9 +83,16 @@
background: #FFFFFF;
padding: 10rpx;
- .location--name {
+ .location--name {
+ font-size: 32rpx;
overflow: hidden;
word-break: break-all;
+ }
+
+ .location--address {
+ padding-bottom: 10rpx;
+ font-size: 24rpx;
+ color: $text-gray-m;
}
.map {
diff --git a/pages/im/components/show/showNormal.vue b/pages/im/components/show/showNormal.vue
index 3b7ee73..6d08131 100644
--- a/pages/im/components/show/showNormal.vue
+++ b/pages/im/components/show/showNormal.vue
@@ -1,11 +1,15 @@
+
+
diff --git a/pages/im/components/show/showVideo.vue b/pages/im/components/show/showVideo.vue
new file mode 100644
index 0000000..606991c
--- /dev/null
+++ b/pages/im/components/show/showVideo.vue
@@ -0,0 +1,84 @@
+
+
+ {{ contact(message.senderUserId).name }}
+
+
+ {{ label }}
+
+
+
+
+
+
+
diff --git a/pages/im/index.vue b/pages/im/index.vue
index 55a7a07..7bf335e 100644
--- a/pages/im/index.vue
+++ b/pages/im/index.vue
@@ -55,6 +55,11 @@
connectionStatus
},
onLoad() {
+ RongIMLib.getCurrentUserId(({
+ userId
+ }) => {
+ console.log('getCurrentUserId', userId);
+ })
// 监听新的好友申请
uni.$on('onNewContactConversation', () => {
console.log('更新好友申请数量');
diff --git a/pages/im/private/call.nvue b/pages/im/private/call.nvue
index bfb7884..d071fee 100644
--- a/pages/im/private/call.nvue
+++ b/pages/im/private/call.nvue
@@ -75,7 +75,7 @@
// 关闭扬声器
volumeOff: false,
// 通话时长
- duration: 0,
+ duration: 0,
interval: null
}
},
@@ -83,7 +83,7 @@
this.avatarSize = utils.rpx2px(200)
this.targetId = e.targetId
this.mediaType = e.mediaType
- this.isCall = Boolean(e.isCall)
+ this.isCall = Boolean(e.isCall)
// 进入页面开启外呼
if (this.isCall) {
CallLib.startSingleCall(this.targetId, this.mediaType, '');
@@ -131,25 +131,9 @@
}
},
methods: {
- afterHangup() {
- clearInterval(this.interval)
- const targetId = this.targetId
- const sentStatus = 30
- const messageContent = {
- objectName: 'RC:InfoNtf',
- userInfo: this.$store.getters.sender,
- message: JSON.stringify({
- mediaType: this.mediaType,
- connected: this.connected,
- duration: this.duration
- })
- }
- const sentTime = 0
- if (this.isCall) {
- IMLib.insertOutgoingMessage(1, targetId, sentStatus, messageContent, sentTime)
- } else {
- IMLib.insertIncomingMessage(1, targetId, targetId, sentStatus, messageContent, sentTime)
- }
+ afterHangup() {
+ clearInterval(this.interval)
+ // duration: this.duration
uni.$emit('onReceiveMessage_' + this.targetId, {
targetId: this.targetId
})
@@ -179,9 +163,9 @@
CallLib.setVideoView(session.targetId, this.$refs.bigVideoView.ref, 0, false)
CallLib.setVideoView(session.mine.userId, this.$refs.smallVideoView.ref, 0, true)
}, 200)
- }
- this.interval = setInterval(() => {
- this.duration++
+ }
+ this.interval = setInterval(() => {
+ this.duration++
}, 1000)
},
// 切换主屏显示人
diff --git a/static/imgs/map.jpeg b/static/imgs/map.jpeg
new file mode 100644
index 0000000..46a4fac
Binary files /dev/null and b/static/imgs/map.jpeg differ
diff --git a/utils/im/message.js b/utils/im/message.js
index d05e88a..7bdcb55 100644
--- a/utils/im/message.js
+++ b/utils/im/message.js
@@ -83,7 +83,7 @@ const getGroupPendinglist = (targetId, callback) => {
*/
const sentText = (conversationType, targetId, content) => {
return new Promise((resolve, reject) => {
- const msg = {
+ const message = {
conversationType: conversationType,
targetId: String(targetId),
content: {
@@ -93,24 +93,10 @@ const sentText = (conversationType, targetId, content) => {
}
}
- RongIMLib.sendMessage(msg, ({
- code,
- messageId
- }) => {
- if (code === 0) {
- if (conversationType == 3) {
- RongIMLib.sendReadReceiptRequest(messageId, (res) => {
- console.log('发送回执请求', res);
- })
- }
- resolve(messageId)
- } else {
- uni.showToast({
- icon: 'none',
- title: '发送失败' + code
- })
- reject(code)
- }
+ sendCommonMessage(message, (messageId) => {
+ resolve(messageId)
+ }, (errCode) => {
+ reject(errCode)
})
})
}
@@ -136,11 +122,9 @@ const sentVoice = (conversationType, targetId, voiceUrl, time) => {
}
}
RongIMLib.sendMediaMessage(msg, {
- success: (messageId) => {
- if (conversationType == 3) {
- RongIMLib.sendReadReceiptRequest(messageId, (res) => {
- console.log('发送回执请求', res);
- })
+ success: (messageId) => {
+ if (conversationType == 3) {
+ RongIMLib.sendReadReceiptRequest(messageId)
}
resolve(messageId)
},
@@ -169,11 +153,9 @@ const sentImage = (conversationType, targetId, imageUrl) => {
}
}
RongIMLib.sendMediaMessage(msg, {
- success: (messageId) => {
- if (conversationType == 3) {
- RongIMLib.sendReadReceiptRequest(messageId, (res) => {
- console.log('发送回执请求', res);
- })
+ success: (messageId) => {
+ if (conversationType == 3) {
+ RongIMLib.sendReadReceiptRequest(messageId)
}
resolve(messageId)
},
@@ -201,11 +183,9 @@ const sentFile = (conversationType, targetId, fileUrl) => {
}
RongIMLib.sendMediaMessage(msg, {
- success: (messageId) => {
- if (conversationType == 3) {
- RongIMLib.sendReadReceiptRequest(messageId, (res) => {
- console.log('发送回执请求', res);
- })
+ success: (messageId) => {
+ if (conversationType == 3) {
+ RongIMLib.sendReadReceiptRequest(messageId)
}
resolve(messageId)
},
@@ -219,48 +199,111 @@ const sentFile = (conversationType, targetId, fileUrl) => {
}
// 发送地理位置
-const sentLocation = (conversationType, targetId, location) => {
+const sentLocation = (conversationType, targetId, location, thumbnail) => {
return new Promise((resolve, reject) => {
- const msg = {
+ const message = {
conversationType: conversationType,
targetId: String(targetId),
- objectName: 'RC:LBSMsg',
content: {
customType: 2,
objectName: 'RC:LBSMsg',
customFields: {
- name: location.name,
+ name: location.name,
address: location.address,
latitude: Number(location.latitude),
- longitude: Number(location.longitude),
- thumbnail: ''
+ longitude: Number(location.longitude),
+ thumbnail: thumbnail
},
userInfo: store.getters.sender,
}
}
- RongIMLib.sendMessage(msg, ({
- code,
- messageId
- }) => {
- if (code === 0) {
- if (conversationType == 3) {
- RongIMLib.sendReadReceiptRequest(messageId, (res) => {
- console.log('发送回执请求', res);
- })
- }
- resolve(messageId)
- } else {
- uni.showToast({
- icon: 'none',
- title: '发送失败' + code
- })
- reject(code)
- }
+ sendCommonMessage(message, (messageId) => {
+ resolve(messageId)
+ }, (errCode) => {
+ reject(errCode)
})
})
}
+/**
+ * 发送视频通话结果
+ */
+const sentVideo = (conversationType, targetId, status, time) => {
+ return new Promise((resolve, reject) => {
+ const message = {
+ conversationType: conversationType,
+ targetId: String(targetId),
+ content: {
+ customType: 2,
+ objectName: 'RC:VideoMsg',
+ customFields: {
+ status: status,
+ duration: time
+ },
+ userInfo: store.getters.sender,
+ }
+ }
+
+ sendCommonMessage(message, (messageId) => {
+ resolve(messageId)
+ }, (errCode) => {
+ reject(errCode)
+ })
+ })
+}
+
+/**
+ * 发送语音通话结果
+ */
+const sentAudio = (conversationType, targetId, status, time) => {
+ return new Promise((resolve, reject) => {
+ const message = {
+ conversationType: conversationType,
+ targetId: String(targetId),
+ content: {
+ customType: 2,
+ objectName: 'RC:AudioMsg',
+ customFields: {
+ status: status,
+ duration: time
+ },
+ userInfo: store.getters.sender,
+ }
+ }
+
+ sendCommonMessage(message, (messageId) => {
+ resolve(messageId)
+ }, (errCode) => {
+ reject(errCode)
+ })
+ })
+}
+
+/**
+ * 发送普通消息
+ */
+const sendCommonMessage = (message, success, fail) => {
+ RongIMLib.sendMessage(message, ({
+ code,
+ messageId
+ }) => {
+ if (code === 0) {
+ if (message.conversationType == 3) {
+ RongIMLib.sendReadReceiptRequest(messageId)
+ }
+
+ success(messageId)
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: '发送失败' + code
+ })
+ fail(code)
+ }
+ })
+}
+
export default {
getMessageList,
getPendingList,
@@ -269,5 +312,7 @@ export default {
sentVoice,
sentImage,
sentFile,
- sentLocation
+ sentLocation,
+ sentVideo,
+ sentAudio
}