diff --git a/components/tki-file-manager/tki-file-manager.vue b/components/tki-file-manager/tki-file-manager.vue
new file mode 100644
index 0000000..5ee1634
--- /dev/null
+++ b/components/tki-file-manager/tki-file-manager.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/main.js b/main.js
index cb91b00..4c6e272 100644
--- a/main.js
+++ b/main.js
@@ -31,21 +31,21 @@ Vue.use(router)
Vue.config.productionTip = false
Vue.prototype.$store = store
-usqlite.connect({
+uni.$sql = usqlite.connect({
name: 'zh-health', // 数据库名称
path: '_doc/health.db', // 路径
-}, (err, res) => {
- uni.getStorage({
- key: 'FIRST_RUN',
- fail: () => {
- contactModel.create((err, res) => {
- console.error('SQLITE 创建表格', err, res)
- uni.setStorageSync('FIRST_RUN', true)
- })
- }
+}, (err, res) => {
+ uni.getStorage({
+ key: 'FIRST_RUN',
+ fail: () => {
+ contactModel.create((err, res) => {
+ console.error('SQLITE 创建表格', err, res)
+ uni.setStorageSync('FIRST_RUN', true)
+ })
+ }
})
})
-
+
App.mpType = 'app'
const app = new Vue({
store,
diff --git a/pages/im/components/sent/sentEmoji.vue b/pages/im/components/sent/sentEmoji.vue
index cb08343..d3c8e4d 100644
--- a/pages/im/components/sent/sentEmoji.vue
+++ b/pages/im/components/sent/sentEmoji.vue
@@ -1,79 +1,87 @@
-
-
-
-
- {{item.emoji}}
-
-
-
-
- 发送
-
-
-
-
-
-
-
diff --git a/pages/im/components/sent/sentPopups.vue b/pages/im/components/sent/sentPopups.vue
index d4824a0..87c025a 100644
--- a/pages/im/components/sent/sentPopups.vue
+++ b/pages/im/components/sent/sentPopups.vue
@@ -25,6 +25,8 @@
文件
+
+
@@ -34,11 +36,15 @@
@@ -91,6 +81,7 @@
display: flex;
flex-direction: row;
justify-content: space-between;
+
.input {
background: #F3F6FB;
height: 70rpx;
diff --git a/pages/im/components/sent/sentVoice.vue b/pages/im/components/sent/sentVoice.vue
index a9e3903..644c0f4 100644
--- a/pages/im/components/sent/sentVoice.vue
+++ b/pages/im/components/sent/sentVoice.vue
@@ -1,21 +1,22 @@
-
+
按住 说话
-
-
-
-
- 上滑取消
-
+
+
+
+
+ 上滑取消
+
@@ -23,8 +24,8 @@
-
+
+
diff --git a/pages/im/group/chat.vue b/pages/im/group/chat.vue
index 62c8741..ea4661a 100644
--- a/pages/im/group/chat.vue
+++ b/pages/im/group/chat.vue
@@ -1,6 +1,7 @@
-
+
@@ -31,13 +32,13 @@
import showMessageCell from '../components/showMessageCell'
import utils from '@/utils/index.js'
import onGroupDismiss from '../mixins/onGroupDismiss.js'
- import imBase from '../mixins/imBase.js'
+ import imBase from '../mixins/imBase.js'
import messageActions from '../mixins/messageActions.js'
export default {
mixins: [
imBase,
- onGroupDismiss,
+ onGroupDismiss,
messageActions
],
components: {
@@ -52,8 +53,8 @@
messages: [],
groupInfo: {
name: ''
- },
- placeHeight: uni.getSystemInfoSync().windowHeight,
+ },
+ placeHeight: uni.getSystemInfoSync().windowHeight,
bottomHeihgt: 56
}
},
@@ -71,21 +72,21 @@
onShow() {
this.initGroupInfo()
},
- onLoad(e) {
- const query = uni.createSelectorQuery().in(this);
- this.$nextTick(function() {
- query.select('#msgbar').boundingClientRect(bottom => {
- this.bottomHeihgt = bottom.height
- }).exec();
- })
- // 监听键盘高度变化
- uni.onKeyboardHeightChange(keyboard => {
- query.select('#scroll').boundingClientRect(scroll => {
- const placeHeight = this.windowHeight - scroll.height - keyboard.height - this
- .bottomHeihgt
- this.placeHeight = placeHeight > 0 ? placeHeight : 0
- }).exec();
- })
+ onLoad(e) {
+ const query = uni.createSelectorQuery().in(this);
+ this.$nextTick(function() {
+ query.select('#msgbar').boundingClientRect(bottom => {
+ this.bottomHeihgt = bottom.height
+ }).exec();
+ })
+ // 监听键盘高度变化
+ uni.onKeyboardHeightChange(keyboard => {
+ query.select('#scroll').boundingClientRect(scroll => {
+ const placeHeight = this.windowHeight - scroll.height - keyboard.height - this
+ .bottomHeihgt
+ this.placeHeight = placeHeight > 0 ? placeHeight : 0
+ }).exec();
+ })
this.targetId = e.targetId
// 获取历史消息列表
this.getMessageList()
@@ -116,7 +117,7 @@
})
// 清理聊天记录
uni.$once('cleanGroupMessage', this.getMessageList)
- uni.$on('onRecallMessage_' + this.targetId, (message) => {
+ uni.$on('onRecallMessage_' + this.targetId, (message) => {
this.messages = this.messages.map(item => {
if (message.messageId == item.messageId) {
return message
@@ -175,12 +176,9 @@
20,
true,
(messages) => {
- console.log('获取消息列表', messages);
const msgs = messages.filter(item => item.receivedStatus == 0)
- console.log('未读消息', msgs);
if (msgs.length) {
RongIMLib.sendReadReceiptResponse(3, this.targetId, msgs, (res) => {
- console.error('发送群聊已读回执成功', res);
msgs.map(item => {
RongIMLib.setMessageReceivedStatus(item.messageId, 1)
})
@@ -245,7 +243,7 @@
height: 100%;
z-index: 999;
- .pop {
+ .pop {
border-radius: 10rpx;
position: fixed;
z-index: 101;
diff --git a/utils/im/message.js b/utils/im/message.js
index 75fff1f..76d37d0 100644
--- a/utils/im/message.js
+++ b/utils/im/message.js
@@ -80,35 +80,37 @@ const getGroupPendinglist = (targetId, callback) => {
* @param {string} content 消息内容
* @param {function} callback 回调函数
*/
-const sentText = (conversationType, targetId, content, user, callback) => {
- const msg = {
- conversationType: conversationType,
- targetId: String(targetId),
- content: {
- objectName: 'RC:TxtMsg',
- content: content,
- userInfo: user
- }
- }
-
- RongIMLib.sendMessage(msg, ({
- code,
- messageId
- }) => {
- if (code === 0) {
- if (conversationType == 3) {
- RongIMLib.sendReadReceiptRequest(messageId, (res) => {
- console.log('发送回执请求', res);
- })
+const sentText = (conversationType, targetId, content) => {
+ return new Promise((resolve, reject) => {
+ const msg = {
+ conversationType: conversationType,
+ targetId: String(targetId),
+ content: {
+ objectName: 'RC:TxtMsg',
+ content: content,
+ userInfo: store.getters.sender
}
- callback(messageId)
- } else {
- console.log('发送失败', msg);
- uni.showToast({
- icon: 'none',
- title: '发送失败' + code
- })
}
+
+ 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)
+ }
+ })
})
}
@@ -118,112 +120,84 @@ const sentText = (conversationType, targetId, content, user, callback) => {
* @param {string} targetId 会话id
* @param {string} voiceUrl 录音的本地路径
* @param {integer} time 录音时长
- * @param {function} callback 录音时长
+ * @param {function} user 本人信息
*/
-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 == 0 ? 1 : time,
- userInfo: user
- }
- }
- RongIMLib.sendMediaMessage(msg, {
- success: (messageId) => {
- callback(messageId);
- },
- progress: (progress, messageId) => {
- console.log(messageId);
- },
- cancel: (messageId) => {
- // 发送取消回调
- },
- error: (errorCode, messageId) => {
- console.log(errorCode, messageId);
+const sentVoice = (conversationType, targetId, voiceUrl, time) => {
+ return new Promise((resolve, reject) => {
+ const msg = {
+ conversationType: conversationType,
+ targetId: String(targetId),
+ content: {
+ objectName: 'RC:HQVCMsg',
+ local: 'file://' + plus.io.convertLocalFileSystemURL(voiceUrl),
+ duration: time == 0 ? 1 : time,
+ userInfo: store.getters.sender
+ }
}
+ RongIMLib.sendMediaMessage(msg, {
+ success: (messageId) => {
+ resolve(messageId);
+ },
+ progress: (progress, messageId) => {},
+ cancel: (messageId) => {},
+ error: (errorCode, messageId) => {
+ reject(errorCode);
+ }
+ })
})
}
-const sentImage = (conversationType, targetId, imageUrl, user, callback) => {
- const msg = {
- conversationType: conversationType,
- targetId: String(targetId),
- content: {
- objectName: 'RC:ImgMsg',
- local: 'file:///' + plus.io.convertLocalFileSystemURL(imageUrl),
- userInfo: user
- }
- }
- RongIMLib.sendMediaMessage(msg, {
- success: (messageId) => {
- callback(messageId);
- },
- progress: (progress, messageId) => {
- console.log(messageId);
- },
- cancel: (messageId) => {
- // 发送取消回调
- },
- error: (errorCode, messageId) => {
- console.log(errorCode, messageId);
- }
+// 发送的图片,可能会涉及到一次多张,用Promise来确保前端一次性清算
+const sentImage = (conversationType, targetId, imageUrl) => {
+ return new Promise((resolve, reject) => {
+ uni.getImageInfo({
+ src: imageUrl,
+ success: (imgInfo) => {
+ const msg = {
+ conversationType: conversationType,
+ targetId: String(targetId),
+ content: {
+ objectName: 'RC:ImgMsg',
+ local: imgInfo.path,
+ userInfo: store.getters.sender
+ }
+ }
+ RongIMLib.sendMediaMessage(msg, {
+ success: (messageId) => {
+ resolve(messageId)
+ },
+ progress: (progress, messageId) => {},
+ cancel: (messageId) => {},
+ error: (errorCode, messageId) => {
+ reject(errorCode)
+ }
+ })
+ }
+ })
})
}
-const sentGif = (conversationType, targetId, gifUrl, time, user, callback) => {
- const msg = {
- conversationType: conversationType,
- targetId: String(targetId),
- content: {
- objectName: 'RC:GIFMsg',
- local: 'file:///' + plus.io.convertLocalFileSystemURL(gifUrl),
- duration: time,
- userInfo: user
- }
- }
- RongIMLib.sendMediaMessage(msg, {
- success: (messageId) => {
- callback(messageId);
- },
- progress: (progress, messageId) => {
- console.log(messageId);
- },
- cancel: (messageId) => {
- // 发送取消回调
- },
- error: (errorCode, messageId) => {
- console.log(errorCode, messageId);
- }
- })
-}
-
-const sendFile = (conversationType, targetId, fileUrl, time, user, callback) => {
- const msg = {
- conversationType: conversationType,
- targetId: String(targetId),
- content: {
- objectName: 'RC:FileMsg',
- local: 'file:///' + plus.io.convertLocalFileSystemURL(fileUrl),
- duration: time,
- userInfo: user
- }
- }
- RongIMLib.sendMediaMessage(msg, {
- success: (messageId) => {
- callback(messageId);
- },
- progress: (progress, messageId) => {
- console.log(messageId);
- },
- cancel: (messageId) => {
- // 发送取消回调
- },
- error: (errorCode, messageId) => {
- console.log(errorCode, messageId);
+const sentFile = (conversationType, targetId, fileUrl) => {
+ return new Promise((resolve, reject) => {
+ const msg = {
+ conversationType: conversationType,
+ targetId: String(targetId),
+ content: {
+ objectName: 'RC:FileMsg',
+ local: 'file:///' + plus.io.convertLocalFileSystemURL(fileUrl),
+ userInfo: store.getters.sender
+ }
}
+ RongIMLib.sendMediaMessage(msg, {
+ success: (messageId) => {
+ resolve(messageId)
+ },
+ progress: (progress, messageId) => {},
+ cancel: (messageId) => {},
+ error: (errorCode, messageId) => {
+ reject(errorCode)
+ }
+ })
})
}
@@ -234,6 +208,5 @@ export default {
sentText,
sentVoice,
sentImage,
- sentGif,
- sendFile
+ sentFile
}
diff --git a/utils/im/models.js b/utils/im/models.js
index 58aa286..ffe5efc 100644
--- a/utils/im/models.js
+++ b/utils/im/models.js
@@ -1,6 +1,6 @@
import {
usqlite
-} from '@/uni_modules/onemue-USQLite/js_sdk/usqlite.js'
+} from '@/uni_modules/onemue-USQLite/js_sdk/usqlite.js'
const contactModel = usqlite.model('contacts', {
targetId: {