feat: 学员端调整页面, 接入部分接口
This commit is contained in:
parent
a5bb4de1fe
commit
a55bf916c2
BIN
public/images/profile/default-avatar.png
Normal file
BIN
public/images/profile/default-avatar.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
@ -451,6 +451,60 @@ class MessageApi {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取我的会话列表
|
||||
* @returns Promise<ApiResponse<any>>
|
||||
*/
|
||||
async getMyChats(): Promise<ApiResponse<any>> {
|
||||
return request({
|
||||
url: '/aiol/aiolChat/my_chats',
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询会话消息
|
||||
* @param chatId 会话ID
|
||||
* @returns Promise<ApiResponse<any>>
|
||||
*/
|
||||
async getChatMessages(chatId: string): Promise<ApiResponse<any>> {
|
||||
return request({
|
||||
url: `/aiol/aiolChat/${chatId}/messages`,
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送消息
|
||||
* @param data 消息数据
|
||||
* @returns Promise<ApiResponse<any>>
|
||||
*/
|
||||
async sendMessage(data: {
|
||||
chat_id: string
|
||||
content: string
|
||||
message_type: string
|
||||
file_url?: string
|
||||
}): Promise<ApiResponse<any>> {
|
||||
return request({
|
||||
url: '/aiol/aiolChatMessage/send',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新最后读取消息ID
|
||||
* @param chatId 会话ID
|
||||
* @param messageId 消息ID
|
||||
* @returns Promise<ApiResponse<any>>
|
||||
*/
|
||||
async updateLastReadMessage(chatId: string, messageId: string): Promise<ApiResponse<any>> {
|
||||
return request({
|
||||
url: `/aiol/aiolChat/${chatId}/update_last_read/${messageId}`,
|
||||
method: 'POST'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export default new MessageApi()
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -416,10 +416,10 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-actions">
|
||||
<button v-if="!selectedMember?.isTeacher" @click="handleMuteMember" class="modal-btn mute-btn"
|
||||
<!-- <button v-if="!selectedMember?.isTeacher" @click="handleMuteMember" class="modal-btn mute-btn"
|
||||
:disabled="isMuteLoading">
|
||||
{{ selectedMember?.izMuted === 1 ? '解除禁言' : '禁言' }}
|
||||
</button>
|
||||
</button> -->
|
||||
<!-- <button v-if="!selectedMember?.isTeacher" @click="handleRemoveMember" class="modal-btn remove-btn"
|
||||
:disabled="isMuteLoading">
|
||||
移除群聊
|
||||
@ -1035,43 +1035,43 @@ const closeMemberModal = () => {
|
||||
}
|
||||
|
||||
// 处理禁言/解除禁言成员
|
||||
const handleMuteMember = async () => {
|
||||
if (!activeContactId.value || !selectedMember.value) return
|
||||
// const handleMuteMember = async () => {
|
||||
// if (!activeContactId.value || !selectedMember.value) return
|
||||
|
||||
isMuteLoading.value = true
|
||||
// isMuteLoading.value = true
|
||||
|
||||
try {
|
||||
const member = selectedMember.value
|
||||
const isCurrentlyMuted = member.izMuted === 1
|
||||
// try {
|
||||
// const member = selectedMember.value
|
||||
// const isCurrentlyMuted = member.izMuted === 1
|
||||
|
||||
if (isCurrentlyMuted) {
|
||||
// 解除禁言
|
||||
console.log('🔓 解除禁言:', { chatId: activeContactId.value, userId: member.id, memberName: member.realname })
|
||||
await ChatApi.unmuteMember(activeContactId.value, member.id)
|
||||
message.success(`已解除 ${member.realname} 的禁言`)
|
||||
// if (isCurrentlyMuted) {
|
||||
// // 解除禁言
|
||||
// console.log('🔓 解除禁言:', { chatId: activeContactId.value, userId: member.id, memberName: member.realname })
|
||||
// await ChatApi.unmuteMember(activeContactId.value, member.id)
|
||||
// message.success(`已解除 ${member.realname} 的禁言`)
|
||||
|
||||
// 更新本地状态
|
||||
member.izMuted = 0
|
||||
} else {
|
||||
// 禁言
|
||||
console.log('🔒 禁言用户:', { chatId: activeContactId.value, userId: member.id, memberName: member.realname })
|
||||
await ChatApi.muteMember(activeContactId.value, member.id)
|
||||
message.success(`已禁言 ${member.realname}`)
|
||||
// // 更新本地状态
|
||||
// member.izMuted = 0
|
||||
// } else {
|
||||
// // 禁言
|
||||
// console.log('🔒 禁言用户:', { chatId: activeContactId.value, userId: member.id, memberName: member.realname })
|
||||
// await ChatApi.muteMember(activeContactId.value, member.id)
|
||||
// message.success(`已禁言 ${member.realname}`)
|
||||
|
||||
// 更新本地状态
|
||||
member.izMuted = 1
|
||||
}
|
||||
// // 更新本地状态
|
||||
// member.izMuted = 1
|
||||
// }
|
||||
|
||||
// 关闭弹框
|
||||
closeMemberModal()
|
||||
// // 关闭弹框
|
||||
// closeMemberModal()
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 禁言操作失败:', error)
|
||||
message.error('操作失败,请重试')
|
||||
} finally {
|
||||
isMuteLoading.value = false
|
||||
}
|
||||
}
|
||||
// } catch (error) {
|
||||
// console.error('❌ 禁言操作失败:', error)
|
||||
// message.error('操作失败,请重试')
|
||||
// } finally {
|
||||
// isMuteLoading.value = false
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// 处理当前用户对群聊的免打扰设置
|
||||
@ -1240,7 +1240,6 @@ const loadMessages = async (chatId: string) => {
|
||||
// 转换消息并添加时间分组信息
|
||||
const processedMessages: Message[] = []
|
||||
let lastMessageTime: Date | null = null
|
||||
let lastSenderId: string | null = null
|
||||
|
||||
sortedMessages.forEach((msg: any) => {
|
||||
// 根据messageType数字判断消息类型:0=文本,1=图片,2=文件
|
||||
@ -1261,9 +1260,6 @@ const loadMessages = async (chatId: string) => {
|
||||
const timeDiff = lastMessageTime ? currentMessageTime.getTime() - lastMessageTime.getTime() : Infinity
|
||||
const shouldShowTime = !lastMessageTime || timeDiff > 5 * 60 * 1000 // 5分钟间隔
|
||||
|
||||
// 判断是否与上一条消息是同一人发送
|
||||
const isSameSender = lastSenderId === messageSenderId
|
||||
|
||||
// 对于文件消息,从URL中提取文件名
|
||||
let fileName = msg.fileName
|
||||
let fileUrl = msg.fileUrl
|
||||
@ -1302,14 +1298,13 @@ const loadMessages = async (chatId: string) => {
|
||||
fileType: fileType,
|
||||
// 添加时间分组相关字段
|
||||
showTime: shouldShowTime,
|
||||
showSender: !isSameSender || shouldShowTime // 不同发送者或需要显示时间时显示发送者
|
||||
showSender: !isOwnMessage // 所有别人的消息都显示发送者姓名
|
||||
}
|
||||
|
||||
processedMessages.push(message)
|
||||
|
||||
// 更新状态
|
||||
lastMessageTime = currentMessageTime
|
||||
lastSenderId = messageSenderId
|
||||
})
|
||||
|
||||
messages.value = processedMessages
|
||||
|
Loading…
x
Reference in New Issue
Block a user