图片消息发送

This commit is contained in:
2022-02-07 17:22:09 +08:00
parent d27e8c4f58
commit 9b6cb99541
9 changed files with 221 additions and 162 deletions

View File

@@ -5,7 +5,7 @@
export default {
onLaunch: function() {
im.initIm('lmxuhwaglu76d')
// return
return
//#ifdef APP-PLUS
// 获取系统版本号
getVersions({

View File

@@ -22,7 +22,9 @@
"Payment" : {},
"Share" : {},
"SQLite" : {},
"VideoPlayer" : {}
"VideoPlayer" : {},
"Geolocation" : {},
"Fingerprint" : {}
},
/* */
"distribute" : {
@@ -78,7 +80,17 @@
}
},
"ad" : {},
"push" : {}
"push" : {},
"geolocation" : {
"amap" : {
"__platform__" : [ "android" ],
"appkey_ios" : "",
"appkey_android" : "05b7f32ca9c897c8b63c505d92cd654b"
},
"system" : {
"__platform__" : [ "android" ]
}
}
},
"icons" : {
"android" : {

View File

@@ -1,10 +1,10 @@
<template>
<view class="sent--popups" v-if="show">
<view class="sent--popups u-border-top" v-if="show">
<view class="sent--popups--item" @click="onPopupsItem('picture')">
<image class="sent--popups--icon" src="@/static/icon/popups-icon-00.png" mode="widthFix"></image>
<text class="sent--popups--text">相册</text>
</view>
<view class="sent--popups--item" @click="onPopupsItem('film')">
<view class="sent--popups--item" @click="onPopupsItem('camera')">
<image class="sent--popups--icon" src="@/static/icon/popups-icon-01.png" mode="widthFix"></image>
<text class="sent--popups--text">拍摄</text>
</view>
@@ -24,23 +24,56 @@
<image class="sent--popups--icon" src="@/static/icon/popups-icon-05.png" mode="widthFix"></image>
<text class="sent--popups--text">文件</text>
</view>
<u-action-sheet :actions="callActions" cancelText="取消" @close="callShow = false" @select="singleCall"
:show="callShow">
</u-action-sheet>
</view>
</template>
<script>
import im from '@/utils/im/index.js'
export default {
data() {
return {
};
callActions: [{
type: 0,
name: '语音通话'
},
{
type: 1,
name: '视频通话'
}
],
callShow: false
}
},
props: {
show: {
type: Boolean,
default: false
},
conversationType: {
type: Number,
default: 0
},
targetId: {
type: String,
default: ''
}
},
methods: {
singleCall(e) {
uni.showToast({
icon: 'none',
title: '功能正在开发中'
})
// CallLib.startSingleCall(this.targetId, e.type, '');
// uni.redirectTo({
// url: '/pages/im/private/call?targetId=' + this.targetId + '&mediaType=' + e.type
// })
},
onPopupsItem(type) {
switch (type) {
case 'picture':
@@ -48,45 +81,56 @@
count: 9,
sourceType: ['album'],
success: res => {
this.onSentValue(type, res.tempFilePaths)
im.sentImage(this.conversationType, this.targetId, res.tempFilePaths[0], (
res) => {
this.success()
})
}
})
break;
case 'film':
case 'camera':
uni.chooseImage({
sourceType: ['camera'],
success: res => {
this.onSentValue(type, res.tempFilePaths)
im.sentImage(this.conversationType, this.targetId, res.tempFilePaths[0], (
res) => {
this.success()
})
}
})
break;
case 'video':
this.onSentValue(type, {})
this.callShow = true
break;
case 'location':
uni.chooseLocation({
success: res=> {
this.onSentValue(type, {
address: res.address,
longitude: res.longitude,
latitude: res.latitude,
name: res.name
})
}
uni.showToast({
icon: 'none',
title: '功能正在开发中'
})
// uni.chooseLocation({
// success: res => {
// console.log(res);
// this.success()
// }
// })
break;
case 'redpacket':
console.log('红包')
uni.showToast({
icon: 'none',
title: '功能正在开发中'
})
break;
case 'file':
console.log('文件选择')
uni.showToast({
icon: 'none',
title: '功能正在开发中'
})
break;
}
},
// 处理返回
onSentValue(type, value){
this.$emit('onVlaue', { type, value })
this.show = false
success() {
this.$emit('success')
}
}
}
@@ -98,16 +142,19 @@
padding: 30rpx 15rpx;
flex-wrap: wrap;
flex-direction: row;
&--item {
width: 150rpx;
margin: 15rpx;
}
&--text {
text-align: center;
font-size: 26rpx;
color: #555;
padding-top: 15rpx;
}
&--icon {
width: 110rpx;
height: 110rpx;

View File

@@ -7,7 +7,7 @@
<script>
import im from '@/utils/im/index.js'
import * as RongIMLib from "@/uni_modules/RongCloud-IMWrapper/js_sdk/index"
import * as RongIMLib from '@/uni_modules/RongCloud-IMWrapper/js_sdk/index'
export default {
props: {

View File

@@ -13,7 +13,7 @@
<script>
import im from '@/utils/im/index.js'
import permision from "@/utils/permission.js"
import permision from '@/utils/permission.js'
export default {
props: {

View File

@@ -1,6 +1,6 @@
<template>
<view class="im--img" :class="guest ? 'right': 'left'">
<image class="src" :src="msg" @click="openImg" mode="widthFix"></image>
<image class="src" :src="msg.thumbnail" @click="previewImage" mode="widthFix"></image>
</view>
</template>
@@ -9,8 +9,8 @@
name: 'showImage',
props: {
msg: {
type: String,
default: 'https://images.pexels.com/photos/9024609/pexels-photo-9024609.jpeg'
type: Object,
default: {}
},
guest: {
type: Boolean,
@@ -18,9 +18,11 @@
}
},
methods: {
openImg() {
previewImage() {
uni.previewImage({
urls: [this.msg],
urls: [
this.msg.remote
],
current: 1
})
}

View File

@@ -1,6 +1,6 @@
<template>
<view class="im--box">
<text class="im--text" :class="guest ? 'right': 'left'">{{msg}}</text>
<text class="im--text" :class="guest ? 'right': 'left'">{{ msg.content }}</text>
</view>
</template>
@@ -14,8 +14,8 @@
},
props: {
msg: {
type: String,
default: ''
type: Object,
default: {}
},
guest: {
type: Boolean,

View File

@@ -13,9 +13,9 @@
<show-voice v-if="item.objectName === 'RC:HQVCMsg'" :guest="item.messageDirection == 1"
:msg="item.content" />
<show-image v-if="item.objectName === 'RC:ImgMsg'" :guest="item.messageDirection == 1"
:msg="item.content.content" />
:msg="item.content" />
<show-text v-if="item.objectName === 'RC:TxtMsg'" :guest="item.messageDirection == 1"
:msg="item.content.content" />
:msg="item.content" />
<view class="state" v-if="item.messageDirection == 1">
<text class="state-text">{{ item.sentStatus == 50 ? '已读': '未读'}}</text>
</view>
@@ -32,21 +32,25 @@
<image class="msg-type-icon" src="@/static/icon/msg-icon.png" v-if="chatType === 1" mode="widthFix">
</image>
</view>
<sent-voice v-if="chatType === 0" :conversationType="conversationType" :targetId="targetId" @success="getMessageList" />
<sent-text v-if="chatType === 1" :conversationType="conversationType" :targetId="targetId" @success="getMessageList" />
<sent-voice v-if="chatType === 0" :conversationType="conversationType" :targetId="targetId"
@success="getMessageList" />
<sent-text v-if="chatType === 1" :conversationType="conversationType" :targetId="targetId"
@success="getMessageList" />
<view class="msg-type msg-push" @click="showPopups = !showPopups">
<image class="msg-type-icon" src="@/static/icon/popups-icon.png"></image>
</view>
</view>
<!-- 弹出层 -->
<u-line v-if="showPopups" color="#f5f5f5"></u-line>
<sent-popups :show="showPopups" @onVlaue="onValue"></sent-popups>
<sent-popups :show="showPopups" :conversationType="conversationType" :targetId="targetId"
@success="() => {showPopups = false, getMessageList()}"></sent-popups>
</view>
</template>
<script>
import { timeCustomCN } from '@/utils/filters.js'
import * as RongIMLib from "@/uni_modules/RongCloud-IMWrapper/js_sdk/index"
import {
timeCustomCN
} from '@/utils/filters.js'
import * as RongIMLib from '@/uni_modules/RongCloud-IMWrapper/js_sdk/index'
import im from '@/utils/im/index.js'
import showVoice from '../components/showVoice'
import showImage from '../components/showImage'
@@ -133,7 +137,7 @@
10,
true,
(messages) => {
console.log(messages);
console.log('获取到的消息', messages);
this.messages = messages.reverse()
this.scrollBottom()
})
@@ -153,11 +157,6 @@
animated: false
})
}, 50)
},
// 上传文件信息
onValue(e){
this.showPopups = false
console.log(e)
}
}
}

View File

@@ -107,14 +107,13 @@ const sentVoice = (conversationType, targetId, voiceUrl, time, callback) => {
})
}
const sentImage = (conversationType, targetId, imageUrl, time, callback) => {
const sentImage = (conversationType, targetId, imageUrl, callback) => {
const msg = {
conversationType: conversationType,
targetId: String(targetId),
content: {
objectName: 'RC:ImgMsg',
local: 'file:///' + plus.io.convertLocalFileSystemURL(imageUrl),
duration: time
local: 'file:///' + plus.io.convertLocalFileSystemURL(imageUrl)
}
}
RongIMLib.sendMediaMessage(msg, {