diff --git a/src/components/confirm-box/index.vue b/src/components/confirm-box/index.vue index 2d53033..6f2ca02 100644 --- a/src/components/confirm-box/index.vue +++ b/src/components/confirm-box/index.vue @@ -29,7 +29,7 @@ const props = defineProps({
-
{{ title }}
+
{{ title }}
{{ content }}
diff --git a/src/components/talk/message/FileMessage.vue b/src/components/talk/message/FileMessage.vue index 37828ef..c7133d7 100644 --- a/src/components/talk/message/FileMessage.vue +++ b/src/components/talk/message/FileMessage.vue @@ -71,9 +71,8 @@ function getFileExtension(filename) { // 切换播放状态 const togglePlay = () => { isPlaying.value = !isPlaying.value - if (props.extra.is_uploading && props.extra.upload_id) { - const action = isPlaying.value ? 'resumeUpload' : 'pauseUpload' + const action = isPlaying.value ? 'pauseUpload' : 'resumeUpload' uploadsStore[action](props.extra.upload_id) } } @@ -124,7 +123,7 @@ const handleDownload = () => {
-
+
{ /> - + + + + + - - -
diff --git a/src/components/talk/message/VideoMessage.vue b/src/components/talk/message/VideoMessage.vue index 7aa0ce5..d43e247 100644 --- a/src/components/talk/message/VideoMessage.vue +++ b/src/components/talk/message/VideoMessage.vue @@ -137,7 +137,8 @@ function resumeUpload(e) { - + +
item.client_upload_id === clientUploadId) }, - - // // 暂停文件上传 - // pauseUpload(uploadId: string) { - // const item = this.findItem(uploadId) - // if (!item) return - - // item.is_paused = true - // console.log(`暂停上传: ${uploadId}`) - // }, - - // 恢复文件上传 - // resumeUpload(uploadId: string) { - // const item = this.findItem(uploadId) - // if (!item) return - - // item.is_paused = false - // console.log(`恢复上传: ${uploadId}`) - - // // 继续上传 - // this.triggerUpload(uploadId) - // }, - // 发送上传消息 async sendUploadMessage(item: any) { try { @@ -119,8 +97,7 @@ export const useUploadsStore = defineStore('uploads', { file: File, talkType: number, receiverId: number, - username: string, - uploadId: string, + clientUploadId: string, onProgress: (percentage: number) => void, onComplete: (data: any) => void ) { @@ -147,13 +124,11 @@ export const useUploadsStore = defineStore('uploads', { talk_type: talkType, receiver_id: receiverId, upload_id: upload_id, - client_upload_id: uploadId, // 客户端生成的上传ID,用于前端标识 + client_upload_id: clientUploadId, // 客户端生成的上传ID,用于前端标识 uploadIndex: 0, percentage: 0, status: 0, // 文件上传状态 0:等待上传 1:上传中 2:上传完成 3:网络异常 files: fileChunks, - avatar: '', - username: username, is_paused: false, onProgress: onProgress, onComplete: onComplete, @@ -162,7 +137,7 @@ export const useUploadsStore = defineStore('uploads', { this.isShow = false // 不显示上传管理抽屉 // 开始上传分片 - this.triggerUpload(upload_id, uploadId) + this.triggerUpload(upload_id, clientUploadId) } else { message.error(res.message) onProgress(-1) // 通知上传失败 @@ -198,16 +173,16 @@ export const useUploadsStore = defineStore('uploads', { // 上传当前分片 try { + const res = await ServeFileSubareaUpload(form) - + // 获取最新的项目状态,确保仍然存在且没有被暂停 - const updatedItem = this.findItem(uploadId) - if (!updatedItem || updatedItem.is_paused) return - + const updatedItem:any = this.findItem(uploadId) + if (res.code == 200) { // 当前分片上传成功,增加索引 updatedItem.uploadIndex++ - + // 计算上传进度 const percentage = (updatedItem.uploadIndex / updatedItem.files.length) * 100 updatedItem.percentage = parseFloat(percentage.toFixed(1)) @@ -234,8 +209,7 @@ export const useUploadsStore = defineStore('uploads', { console.error(`分片上传失败,错误码: ${res.code},错误信息: ${res.message || '未知错误'}`); updatedItem.status = 3 - // 尝试重试当前分片 - this.retryUpload(uploadId, clientUploadId, res.message || '上传失败,请重试') + } } catch (error) { console.error("分片上传错误:", error); @@ -248,37 +222,10 @@ export const useUploadsStore = defineStore('uploads', { if (updatedItem.is_paused) return updatedItem.status = 3 - - // 尝试重试当前分片 - this.retryUpload(uploadId, clientUploadId, '网络错误,正在重试') } }, - // 重试上传 - retryUpload(uploadId: string, clientUploadId?: string, errorMessage?: string) { - const item = this.findItem(uploadId) - if (!item) return - - // 如果有暂停/恢复按钮,先告知用户上传出错 - if (item.onProgress) { - item.onProgress(-1) - } - - // 显示错误提示 - message.warning(errorMessage) - - // 创建一个5秒后自动重试的机制 - setTimeout(() => { - const currentItem = this.findItem(uploadId) - if (!currentItem) return - - // 如果用户没有手动暂停,则自动重试 - if (!currentItem.is_paused) { - console.log('正在重试上传分片...'); - this.triggerUpload(uploadId, clientUploadId) - } - }, 5000) - }, + // 完成上传 async completeUpload(item: UploadItem, clientUploadId: string) { diff --git a/src/views/message/inner/panel/PanelContent.vue b/src/views/message/inner/panel/PanelContent.vue index 360e651..c1ed184 100644 --- a/src/views/message/inner/panel/PanelContent.vue +++ b/src/views/message/inner/panel/PanelContent.vue @@ -17,6 +17,7 @@ import { ExclamationCircleFilled } from '@ant-design/icons-vue' import { useUserStore } from '@/store' import RevokeMessage from '@/components/talk/message/RevokeMessage.vue' import { voiceToText } from '@/api/chat.js' +import {confirmBox} from '@/components/confirm-box/service.js' const props = defineProps({ uid: { type: Number, @@ -314,6 +315,13 @@ watch( // onMounted(() => { // onLoad({ ...props, limit: 30 }) // }) +const retry=()=>{ + confirmBox({ + content:'确定重发吗' + }).then(()=>{ + + }) +}