|
|
@@ -84,7 +84,7 @@ export default {
|
|
|
sendKey: Function,
|
|
|
wrapKey: Function,
|
|
|
sendText: String,
|
|
|
- contextmenu: Array,
|
|
|
+ //contextmenu: Array,
|
|
|
contactContextmenu: Array,
|
|
|
avatarCricle: Boolean,
|
|
|
user: {
|
|
|
@@ -145,6 +145,61 @@ export default {
|
|
|
currentIsDefSidebar() {
|
|
|
return DEFAULT_MENUS.includes(this.activeSidebar);
|
|
|
},
|
|
|
+ contextmenu(){
|
|
|
+ const list =[ {
|
|
|
+ click: (e, instance, hide) => {
|
|
|
+ const { message } = instance;
|
|
|
+ const data = {
|
|
|
+ id: generateUUID(),
|
|
|
+ type: "event",
|
|
|
+ //使用 jsx 时 click必须使用箭头函数(使上下文停留在vue内)
|
|
|
+ content: (
|
|
|
+ <div>
|
|
|
+ <span>
|
|
|
+ 你撤回了一条消息{" "}
|
|
|
+ <span
|
|
|
+ v-show={message.type == "text"}
|
|
|
+ style="color:#409EFF;cursor:pointer"
|
|
|
+ content={message.content}
|
|
|
+ on-click={e => {
|
|
|
+ this.setEditorValue(e.target.getAttribute("content"));
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 重新编辑
|
|
|
+ </span>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ ),
|
|
|
+
|
|
|
+ toContactId: message.toContactId,
|
|
|
+ sendTime: new Date().getTime(),
|
|
|
+ fromUser: this.user,
|
|
|
+ lastContent:message.content,
|
|
|
+ msgId:message.id
|
|
|
+ };
|
|
|
+ this.removeMessage(message.id);
|
|
|
+ this.appendMessage(data, true);
|
|
|
+ hide();
|
|
|
+ },
|
|
|
+ visible: instance => {
|
|
|
+ const { message } = instance;
|
|
|
+ // 1. 判断是否是自己发送的消息
|
|
|
+ const isSelf = message.fromUser.id === this.user.id;
|
|
|
+ if (!isSelf) return false;
|
|
|
+
|
|
|
+ // 2. 计算消息发送时间与当前时间的差值(分钟)
|
|
|
+ const sendTime = message.sendTime; // 消息发送时间(时间戳,毫秒)
|
|
|
+ const currentTime = new Date().getTime(); // 当前时间戳
|
|
|
+ const minuteDiff = (currentTime - sendTime) / (1000 * 60); // 转换为分钟
|
|
|
+
|
|
|
+ // 3. 仅当发送时间小于 1 分钟时,显示撤回选项
|
|
|
+ return minuteDiff < 1;
|
|
|
+ },
|
|
|
+ text: "撤回消息",
|
|
|
+ },
|
|
|
+ ]
|
|
|
+ return list;
|
|
|
+ },
|
|
|
lastMessages() {
|
|
|
// var data = this.contacts.filter(item => !isEmpty(item.lastContent));
|
|
|
// data.sort((a1, a2) => {
|
|
|
@@ -186,14 +241,33 @@ export default {
|
|
|
* 新增一条消息
|
|
|
*/
|
|
|
appendMessage(message, scrollToBottom = false) {
|
|
|
+ console.log(message,'message233232')
|
|
|
let messageList = allMessages[message.toContactId];
|
|
|
// 如果是自己的消息需要push,发送的消息不再增加未读条数
|
|
|
let conversation=this.findConversation(message.toContactId);
|
|
|
let unread=conversation.unread!=undefined && conversation.unread>0?(conversation.unread+1):1;
|
|
|
- if (message.type == 'event'){
|
|
|
- // if(this.user.id == message.fromUser.id){}
|
|
|
- unread = 0;
|
|
|
- }
|
|
|
+ if (message.type === 'event'){
|
|
|
+ if(message.fromUser.id === this.user.id){
|
|
|
+ this._emitSend(message, () => {
|
|
|
+ this.updateContact({
|
|
|
+ id: message.toContactId,
|
|
|
+ lastContent: this.lastContentRender(message),
|
|
|
+ lastSendTime: message.sendTime,
|
|
|
+ unread:0
|
|
|
+ });
|
|
|
+ this.CacheDraft.remove(message.toContactId);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (message.type === 'cancel'){
|
|
|
+ this.updateContact({
|
|
|
+ id: message.toContactId,
|
|
|
+ lastContent: this.lastContentRender(message),
|
|
|
+ lastSendTime: message.sendTime,
|
|
|
+ unread:0
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (messageList === undefined) {
|
|
|
//console.log("qxj appendMessage messageList:"+messageList+",message"+JSON.stringify(message));
|
|
|
conversation.id=message.toContactId;
|
|
|
@@ -206,7 +280,6 @@ export default {
|
|
|
let hasMsg = messageList.some(({id})=>id == message.id);
|
|
|
if (hasMsg) return;
|
|
|
this._addMessage(message, message.toContactId, 1);
|
|
|
-
|
|
|
conversation.lastContent=this.lastContentRender(message);
|
|
|
conversation.lastSendTime=message.sendTime;
|
|
|
if (message.toContactId == this.currentContactId) {
|
|
|
@@ -393,12 +466,13 @@ export default {
|
|
|
};
|
|
|
},
|
|
|
_renderSidebarMessage() {
|
|
|
+
|
|
|
return this._renderSidebar(
|
|
|
[
|
|
|
useScopedSlot(this.$scopedSlots["sidebar-message-top"], null, this),
|
|
|
this.lastMessages.map(contact => {
|
|
|
if (contact.type !== 'text' && isFunction(lastContentRender[contact.type])) {
|
|
|
- contact.lastContent = lastContentRender[contact.type].call(this, contact);
|
|
|
+ contact.lastContent = lastContentRender[contact.type].call(this, contact);
|
|
|
}
|
|
|
return this._renderContact(
|
|
|
{
|
|
|
@@ -419,7 +493,6 @@ export default {
|
|
|
);
|
|
|
},
|
|
|
_renderContact(props, onClick, slot) {
|
|
|
- //console.log(this.currentContactId,props,'prop')
|
|
|
const {
|
|
|
click: customClick,
|
|
|
renderContainer,
|
|
|
@@ -1030,7 +1103,6 @@ export default {
|
|
|
* @param {Array<Contact>} data 会话列表
|
|
|
*/
|
|
|
initConversations(data) {
|
|
|
- //console.log(data,'data')
|
|
|
this.conversations = data;
|
|
|
this.sortConversations();
|
|
|
},
|
|
|
@@ -1122,9 +1194,11 @@ export default {
|
|
|
* @param {Contact} data 修改的数据,根据 Contact.id 查找联系人并覆盖传入的值
|
|
|
*/
|
|
|
updateContact(data) {
|
|
|
+ console.log(data,"datdhffff")
|
|
|
const conversationId = data.conversationId;
|
|
|
const index = this.findConversationIndexById(conversationId);
|
|
|
if (index !== -1) {
|
|
|
+ console.log(data,'data111')
|
|
|
// if(isString(data.unread)) {
|
|
|
// if (unread.indexOf("+") === 0 || unread.indexOf("-") === 0) {
|
|
|
// data.unread =parseInt(unread) + parseInt(this.conversations[index].unread);
|