deletemsg

This commit is contained in:
cansnow
2026-01-09 20:22:25 +08:00
parent 7913a63a39
commit 825ac3457d
13 changed files with 214 additions and 133 deletions
@@ -8,9 +8,16 @@
export default {
name: "ErrorMessagegRender",
components: {},
props: {
message: Object,
conversationID:String,
},
data() {
return {};
},
created(){
console.log(this.message);
}
};
</script>
@@ -2,6 +2,9 @@
<view v-if="isNoticeMessage" class="notice_message_container" style="margin: 0 auto;" :id="`auchor${source.clientMsgID}`">
<text>{{ getNoticeContent }}</text>
</view>
<view v-else-if="source.contentType == 1519" class="notice_message_container" style="margin: 0 auto;" :id="`auchor${source.clientMsgID}`">
<text @click="toAnnouncement">{{ announcementElem.opUser.nickname }}更新了群公告</text>
</view>
<view v-else class="message_wrapper">
<template v-if="selectFlag">
<uni-icons class="selectedIcon" size="30" color="#07c160" type="checkbox-filled" v-if="selectClientMsgIDItems.indexOf(source.clientMsgID)>-1"></uni-icons>
@@ -24,7 +27,7 @@
</view>
</view>
<view class="message_content_wrap message_content_wrap_shadow" :id="`message_content_wrap_${source.clientMsgID}`" @longtap.stop.prevent="longtapEvent($event)">
<component :is="component"
<component v-if="component" :is="component"
@messageEvent="onMessageEvent"
:isSender="isSender"
:message="source"
@@ -34,6 +37,7 @@
</view>
</view>
</view>
<view class="selected_overlay" v-if="selectFlag"></view>
</view>
</template>
@@ -113,7 +117,8 @@
toolTipFlag: false,
popPostion:"default",
toolTipData: [],
component:"ErrorMessageRender"
component:"",
announcementElem:{opUser:{nickname:""}}
};
},
computed: {
@@ -159,26 +164,30 @@
}
},
mounted() {
const MsgType2Components = {
['type_'+MessageType.TextMessage] : "TextMessageRender",
['type_'+MessageType.PictureMessage] : "PictureMessageRender",
['type_'+MessageType.VoiceMessage] : "VoiceMessageRender",
['type_'+MessageType.VideoMessage] : "VideoMessageRender",
['type_'+MessageType.FileMessage] : "FileMessageRender",
['type_'+MessageType.AtTextMessage] : "AtTextMessageRender",
['type_'+MessageType.MergeMessage] : "MergeMessageRender",
['type_'+MessageType.CardMessage] : "CardMessageRender",
['type_'+MessageType.LocationMessage] : "LocationMessageRender",
['type_'+MessageType.CustomMessage] : "CustomMessageRender",
['type_'+MessageType.TypingMessage] : "TypingMessageRender",
['type_'+MessageType.QuoteMessage] : "QuoteMessageRender",
['type_'+MessageType.FaceMessage] : "FaceMessageRender",
['type_'+MessageType.MarkdownMessage] : "MarkdownMessageRender",
['type_'+MessageType.StreamMessage] : "StreamMessageRender",
['type_'+MessageType.OANotification] : "OANotificationRender",
'type_2001' : "NotificationRender"
};
this.component = MsgType2Components['type_'+this.source.contentType] || "ErrorMessageRender";
if(this.source.contentType == MessageType.GroupAnnouncementUpdated){
this.announcementElem = JSON.parse(this.source.notificationElem.detail)
}else{
const MsgType2Components = {
['type_'+MessageType.TextMessage] : "TextMessageRender",
['type_'+MessageType.PictureMessage] : "PictureMessageRender",
['type_'+MessageType.VoiceMessage] : "VoiceMessageRender",
['type_'+MessageType.VideoMessage] : "VideoMessageRender",
['type_'+MessageType.FileMessage] : "FileMessageRender",
['type_'+MessageType.AtTextMessage] : "AtTextMessageRender",
['type_'+MessageType.MergeMessage] : "MergeMessageRender",
['type_'+MessageType.CardMessage] : "CardMessageRender",
['type_'+MessageType.LocationMessage] : "LocationMessageRender",
['type_'+MessageType.CustomMessage] : "CustomMessageRender",
['type_'+MessageType.TypingMessage] : "TypingMessageRender",
['type_'+MessageType.QuoteMessage] : "QuoteMessageRender",
['type_'+MessageType.FaceMessage] : "FaceMessageRender",
['type_'+MessageType.MarkdownMessage] : "MarkdownMessageRender",
['type_'+MessageType.StreamMessage] : "StreamMessageRender",
['type_'+MessageType.OANotification] : "OANotificationRender",
'type_2001' : "NotificationRender"
};
this.component = MsgType2Components['type_'+this.source.contentType] || "ErrorMessageRender";
}
this.$emit('userEvent',{type:"messageItemRender"},this.source.clientMsgID);
this.setSendingDelay();
},
@@ -191,6 +200,11 @@
})
}
},
toAnnouncement(){
uni.navigateTo({
url:"/pages/conversation/groupSettings/announcement"
})
},
setSendingDelay() {
if (this.source.status === MessageStatus.Sending) {
setTimeout(() => {
@@ -201,8 +215,8 @@
longtapEvent(e){
this.$emit('userEvent',{type:"longtapMsgContent"},this.source);
},
onMessageEvent(e){
this.$emit('userEvent',e);
onMessageEvent(e,data){
this.$emit('userEvent',e,data);
},
},
};
@@ -214,6 +228,15 @@
flex-direction: row;
align-items: flex-start;
width: 100%;
position: relative;
.selected_overlay{
position: absolute;
left:0;
top:0;
bottom: 0;
right: 0;
z-index: 10;
}
}
.message_item {
display: flex;
+26 -18
View File
@@ -50,6 +50,8 @@
},
computed: {
...mapGetters([
"storeHistoryMessageList",
"storeCurrentUserID",
"storeCurrentConversation","storeCurrentMsg",'storeCurrentMsgID'
]),
},
@@ -91,8 +93,17 @@
if (options?.back2Tab) {
this.back2Tab = JSON.parse(options.back2Tab);
}
IMSDK.subscribe(IMSDK.IMEvents.OnMsgDeleted,({data})=>{
let list = this.storeHistoryMessageList;
//console.log(data);
list = list.filter((item)=>{
return item.serverMsgID != data.serverMsgID;
})
this.$store.commit('message/SET_HISTORY_MESSAGE_LIST',list);
})
},
onUnload() {
IMSDK.unsubscribe(IMSDK.IMEvents.OnMsgDeleted);
//console.log("unload");
this.disposePageListener();
markConversationAsRead({...this.$store.getters.storeCurrentConversation,},true);
@@ -215,18 +226,9 @@
if(noticeMessageTypes.includes(data.contentType)){
return ;
}
let founded = false;
let arr = [];
for (var index = 0; index < this.selectItems.length; index++) {
var v = this.selectItems[index];
if (v.clientMsgID == data.clientMsgID) {
founded = true;
} else {
arr.push(v);
}
}
if (!founded) {
arr.push(data);
let arr = this.selectItems.filter((item)=>item.clientMsgID != data.clientMsgID);
if(arr.length === this.selectItems.length){
arr.push(data)
}
this.selectItems = [...arr];
}
@@ -241,17 +243,19 @@
}
for (let i = 0; i < deleteMsgs.length; i++) {
let element = deleteMsgs[i];
IMSDK.asyncApi('deleteMessageFromLocalStorage', IMSDK.uuid(), {
IMSDK.asyncApi(IMSDK.IMMethods.DeleteMessageFromLocalStorage, IMSDK.uuid(), {
//IMSDK.asyncApi(IMSDK.IMMethods.DeleteMessage, IMSDK.uuid(), {
conversationID: _this.storeCurrentConversation.conversationID,
clientMsgID: element.clientMsgID
}).then(res => {
//console.log(res);
}).catch(res => {
//console.log(res);
console.log('catch',res);
}).finally(() => {
//console.log(arguments);
console.log('finally',arguments);
})
}
this.selectItems = [];
this.$refs.chatingListRef.loadMessageList();
return;
@@ -300,7 +304,11 @@
conversationID: _this.storeCurrentConversation.conversationID,
clientMsgID: data.clientMsgID
}).then(res => {
console.log(res);
let list = _this.storeHistoryMessageList;
list = list.filter((item)=>{
return item.clientMsgID != data.clientMsgID;
});
_this.$store.commit('message/SET_HISTORY_MESSAGE_LIST',list);
}).catch(res => {
console.log(res);
}).finally(() => {
@@ -327,7 +335,7 @@
let nowTime = new Date().getTime();
let msgTime = data.createTime;
let diff = nowTime - msgTime;
if (this.isSender && diff < 120000) {
if (_this.storeCurrentUserID == data.sendID && diff < 120000) {
menu.push('撤回')
}
uni.showActionSheet({
@@ -89,7 +89,7 @@
// uni.navigateTo({
// url:"/pages/user/vip/vip"
// });
//prepareConversationState(this.storeConversationList[2]);
prepareConversationState(this.storeConversationList[0]);
},1000)
},
methods: {
@@ -1,17 +1,29 @@
<template>
<view style="display: flex;flex-direction: column;width: 100vw;height: 100vh;">
<view>
<u-navbar
:autoBack="true"
title="群公告"
safeAreaInsetTop
placeholder
fixed
:autoBack="true"
>
<view class="u-nav-slot" slot="right" v-if="isOwner || isAdmin">
<u-button type="primary" size="mini" @click="save">确定</u-button>
<u-button type="primary" size="mini" @click="save">保存</u-button>
</view>
</u-navbar>
<u--textarea :disabled="!isOwner && !isAdmin" count confirmType="done" focus autoHeight maxlength="-1" border="none" v-model="announcement"></u--textarea >
<u-parse v-if="!isOwner && !isAdmin" :content="announcement"></u-parse>
<u--textarea v-else
count
confirmType="done"
focus
autoHeight
height="500"
maxlength="-1"
border="none"
:adjustPosition="false"
class="textarea"
placeholder="暂无公告"
v-model="announcement"
>
</u--textarea>
</view>
</template>
@@ -38,14 +50,14 @@
}
},
onLoad() {
this.announcement = this.storeCurrentGroup.notification;
this.announcement = this.storeCurrentGroup.notification;
},
methods: {
back(){
uni.navigateBack();
},
save(){
if(!isOwner && !isAdmin){
if(!this.isOwner && !this.isAdmin){
return ;
}
IMSDK.asyncApi(IMSDK.IMMethods.SetGroupInfo, IMSDK.uuid(), {
@@ -62,6 +74,7 @@
}
</script>
<style>
<style scoped lang="scss">
.textarea{
}
</style>
+1 -1
View File
@@ -3,7 +3,7 @@
<u-navbar :autoBack="true" bgColor="#ECECEC" :title="'群聊设置('+storeCurrentGroup.memberCount+')'" safeAreaInsetTop placeholder fixed></u-navbar>
<view class="group_settings_content">
<view class="setting_row info_row" v-if="1==2">
<view class="setting_row info_row">
<view class="group_avatar" @click="updateGroupAvatar">
<my-avatar :src="storeCurrentConversation.faceURL" :isGroup="true" size="46" />
<image v-if="isOwner" class="edit_icon" src="@/static/images/group_setting_edit.png" alt="" />