feat: 学员端调整页面, 接入部分接口

This commit is contained in:
QDKF 2025-09-26 20:33:47 +08:00
parent a5bb4de1fe
commit a55bf916c2
5 changed files with 3508 additions and 636 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -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() export default new MessageApi()

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -416,10 +416,10 @@
</div> </div>
</div> </div>
<div class="modal-actions"> <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"> :disabled="isMuteLoading">
{{ selectedMember?.izMuted === 1 ? '解除禁言' : '禁言' }} {{ selectedMember?.izMuted === 1 ? '解除禁言' : '禁言' }}
</button> </button> -->
<!-- <button v-if="!selectedMember?.isTeacher" @click="handleRemoveMember" class="modal-btn remove-btn" <!-- <button v-if="!selectedMember?.isTeacher" @click="handleRemoveMember" class="modal-btn remove-btn"
:disabled="isMuteLoading"> :disabled="isMuteLoading">
移除群聊 移除群聊
@ -1035,43 +1035,43 @@ const closeMemberModal = () => {
} }
// / // /
const handleMuteMember = async () => { // const handleMuteMember = async () => {
if (!activeContactId.value || !selectedMember.value) return // if (!activeContactId.value || !selectedMember.value) return
isMuteLoading.value = true // isMuteLoading.value = true
try { // try {
const member = selectedMember.value // const member = selectedMember.value
const isCurrentlyMuted = member.izMuted === 1 // const isCurrentlyMuted = member.izMuted === 1
if (isCurrentlyMuted) { // if (isCurrentlyMuted) {
// // //
console.log('🔓 解除禁言:', { chatId: activeContactId.value, userId: member.id, memberName: member.realname }) // console.log('🔓 :', { chatId: activeContactId.value, userId: member.id, memberName: member.realname })
await ChatApi.unmuteMember(activeContactId.value, member.id) // await ChatApi.unmuteMember(activeContactId.value, member.id)
message.success(`已解除 ${member.realname} 的禁言`) // message.success(` ${member.realname} `)
// // //
member.izMuted = 0 // member.izMuted = 0
} else { // } else {
// // //
console.log('🔒 禁言用户:', { chatId: activeContactId.value, userId: member.id, memberName: member.realname }) // console.log('🔒 :', { chatId: activeContactId.value, userId: member.id, memberName: member.realname })
await ChatApi.muteMember(activeContactId.value, member.id) // await ChatApi.muteMember(activeContactId.value, member.id)
message.success(`已禁言 ${member.realname}`) // message.success(` ${member.realname}`)
// // //
member.izMuted = 1 // member.izMuted = 1
} // }
// // //
closeMemberModal() // closeMemberModal()
} catch (error) { // } catch (error) {
console.error('❌ 禁言操作失败:', error) // console.error(' :', error)
message.error('操作失败,请重试') // message.error('')
} finally { // } finally {
isMuteLoading.value = false // isMuteLoading.value = false
} // }
} // }
// //
@ -1240,7 +1240,6 @@ const loadMessages = async (chatId: string) => {
// //
const processedMessages: Message[] = [] const processedMessages: Message[] = []
let lastMessageTime: Date | null = null let lastMessageTime: Date | null = null
let lastSenderId: string | null = null
sortedMessages.forEach((msg: any) => { sortedMessages.forEach((msg: any) => {
// messageType0=1=2= // messageType0=1=2=
@ -1261,9 +1260,6 @@ const loadMessages = async (chatId: string) => {
const timeDiff = lastMessageTime ? currentMessageTime.getTime() - lastMessageTime.getTime() : Infinity const timeDiff = lastMessageTime ? currentMessageTime.getTime() - lastMessageTime.getTime() : Infinity
const shouldShowTime = !lastMessageTime || timeDiff > 5 * 60 * 1000 // 5 const shouldShowTime = !lastMessageTime || timeDiff > 5 * 60 * 1000 // 5
//
const isSameSender = lastSenderId === messageSenderId
// URL // URL
let fileName = msg.fileName let fileName = msg.fileName
let fileUrl = msg.fileUrl let fileUrl = msg.fileUrl
@ -1302,14 +1298,13 @@ const loadMessages = async (chatId: string) => {
fileType: fileType, fileType: fileType,
// //
showTime: shouldShowTime, showTime: shouldShowTime,
showSender: !isSameSender || shouldShowTime // showSender: !isOwnMessage //
} }
processedMessages.push(message) processedMessages.push(message)
// //
lastMessageTime = currentMessageTime lastMessageTime = currentMessageTime
lastSenderId = messageSenderId
}) })
messages.value = processedMessages messages.value = processedMessages