fix: 更新配置和组件逻辑
- 在Editor.vue中,优化成员列表的渲染逻辑,确保在特定条件下显示'所有人'选项 - 在FileMessage.vue中,修改上传进度显示条件,避免在未开始上传时显示进度圆环 - 在uploads.ts中,简化重试上传逻辑,移除不必要的暂停状态检查 - 在PanelContent.vue中,添加对重试操作的支持,确保能够针对特定项目进行重试
This commit is contained in:
parent
c91a70f86d
commit
e3f2346d66
@ -52,7 +52,6 @@ import { ServeUploadImage } from '@/api/upload'
|
||||
import { uploadImg } from '@/api/upload'
|
||||
// 引入事件总线钩子
|
||||
import { useEventBus } from '@/hooks'
|
||||
|
||||
// 注册Quill编辑器的自定义格式
|
||||
Quill.register('formats/emoji', EmojiBlot) // 注册表情格式
|
||||
Quill.register('formats/quote', QuoteBlot) // 注册引用格式
|
||||
@ -147,12 +146,12 @@ const editorOption = {
|
||||
if (!props.members.length) {
|
||||
return renderList([])
|
||||
}
|
||||
|
||||
let list = [
|
||||
{ id: 0, nickname: '所有人', avatar: defAvatar, value: '所有人' },
|
||||
...props.members
|
||||
]
|
||||
|
||||
] as any
|
||||
if((dialogueStore.groupInfo as any).is_manager){
|
||||
list.unshift({ id: 0, nickname: '所有人', avatar: defAvatar, value: '所有人' })
|
||||
}
|
||||
const items = list.filter(
|
||||
(item: any) => item.nickname.toLowerCase().indexOf(searchTerm) !== -1
|
||||
)
|
||||
|
@ -122,7 +122,7 @@ const handleDownload = () => {
|
||||
<img class="file-icon" :src="fileInfo.icon" alt="文件图标">
|
||||
|
||||
<!-- 上传进度圆环 - 上传状态 -->
|
||||
<div v-if="extra.is_uploading&&extra.percentage>0" class="progress-overlay">
|
||||
<div v-if="extra.is_uploading&&extra.percentage!==-1" class="progress-overlay">
|
||||
<div class="circle-progress-container" @click.stop="togglePlay">
|
||||
<svg class="circle-progress" width="20" height="20" viewBox="0 0 20 20">
|
||||
<!-- 底色圆环 -->
|
||||
|
@ -178,7 +178,6 @@ export const useUploadsStore = defineStore('uploads', {
|
||||
|
||||
// 获取最新的项目状态,确保仍然存在且没有被暂停
|
||||
const updatedItem:any = this.findItem(uploadId)
|
||||
if(updatedItem.is_paused) return
|
||||
if (res.code == 200) {
|
||||
// 当前分片上传成功,增加索引
|
||||
updatedItem.uploadIndex++
|
||||
@ -191,9 +190,6 @@ export const useUploadsStore = defineStore('uploads', {
|
||||
if (updatedItem.onProgress) {
|
||||
updatedItem.onProgress(updatedItem.percentage)
|
||||
}
|
||||
// if (clientUploadId) {
|
||||
// this.dialogueStore.updateUploadProgress(clientUploadId, percentage)
|
||||
// }
|
||||
// 检查是否全部上传完成
|
||||
if (updatedItem.uploadIndex === updatedItem.files.length) {
|
||||
// 所有分片上传完成
|
||||
@ -276,24 +272,22 @@ export const useUploadsStore = defineStore('uploads', {
|
||||
},
|
||||
|
||||
// 重试文件上传
|
||||
retryCommonUpload(uploadId: string, errorMessage: string) {
|
||||
const item = this.findItem(uploadId)
|
||||
retryCommonUpload(clientUploadId: string) {
|
||||
const item = this.findItemByClientId(clientUploadId)
|
||||
if (!item) return
|
||||
|
||||
// 显示错误提示
|
||||
message.warning(errorMessage)
|
||||
// 重新初始化上传,以便重新获取分片信息
|
||||
this.initUploadFile(
|
||||
item.file,
|
||||
item.talk_type,
|
||||
item.receiver_id,
|
||||
clientUploadId,
|
||||
item.onProgress || ((percentage: number) => {}),
|
||||
item.onComplete || ((data: any) => {})
|
||||
)
|
||||
|
||||
// 创建一个5秒后自动重试的机制
|
||||
setTimeout(() => {
|
||||
const currentItem = this.findItem(uploadId)
|
||||
if (!currentItem) return
|
||||
|
||||
// 如果用户没有手动暂停,则自动重试
|
||||
if (!currentItem.is_paused) {
|
||||
console.log('正在重试上传分片...');
|
||||
this.triggerUpload(uploadId)
|
||||
}
|
||||
}, 5000)
|
||||
// 从上传列表中移除旧的上传项
|
||||
this.items = this.items.filter(i => i.client_upload_id !== clientUploadId)
|
||||
},
|
||||
}
|
||||
})
|
||||
|
@ -18,7 +18,7 @@ export function isLoggedIn() {
|
||||
*/
|
||||
export function getAccessToken() {
|
||||
// return storage.get(AccessToken) || ''
|
||||
return JSON.parse(localStorage.getItem('token'))||'46d71a72d8d845ad7ed23eba9bdde260e635407190c2ce1bf7fd22088e41682ea07773ec65cae8946d2003f264d55961f96e0fc5da10eb96d3a348c1664e9644ce2108c311309f398ae8ea1b8200bfd490e5cb6e8c52c9e5d493cbabb163368f8351420451a631dbfa749829ee4cda49b77b5ed2d3dced5d0f2b7dd9ee76ba5465c84a17c23af040cd92b6b2a4ea48befbb5c729dcdad0a9c9668befe84074cc24f78899c1d947f8e7f94c7eda5325b8ed698df729e76febb98549ef3482ae942fb4f4a1c92d21836fa784728f0c5483aab2760a991b6b36e6b10c84f840a6433a6ecc31dee36e8f1c6158818bc89d22cb993eb73d0e2c0e0c8f627f3a8550a8e846cd26e5ec6abe0b57b0470a33b33c4b097d9fc113aa020f9751b55320b4f6b3f812fa4cc357f90f8db108a250b14e477c1e1b2292799d3c8831f7a47de2d6'
|
||||
return JSON.parse(localStorage.getItem('token'))||'46d71a72d8d845ad7ed23eba9bdde260e635407190c2ce1bf7fd22088e41682ea07773ec65cae8946d2003f264d55961f96e0fc5da10eb96d3a348c1664e9644ce2108c311309f398ae8ea1b8200bfd490e5cb6e8c52c9e5d493cbabb163368f8351420451a631dbfa749829ee4cda49b77b5ed2d3dced5d0f2b7dd9ee76ba5465c84a17c23af040cd92b6b2a4ea48befbb5c729dcdad0a9c9668befe84074cc24f78899c1d947f8e7f94c7eda5325b8ed698df729e76febb98549ef3482ae942fb4f4a1c92d21836fa784728f0c5483aab2760a991b6b36e6b10c84f840a6433a6ecc31dee36e8f1c6158818bc89d22ab23a552e0c3f606946dcb914a52b692e10d823cc7f43027127359e7ee8555d956e7e095946931ceaa3877675584b0a0a4fc690c8018712b306050ebbdea92037aea31d66d65004be26d3c696abc4c29'
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -14,7 +14,7 @@ import { ITalkRecord } from '@/types/chat'
|
||||
import { EditorConst } from '@/constant/event-bus'
|
||||
import { useInject, useTalkRecord, useUtil } from '@/hooks'
|
||||
import { ExclamationCircleFilled } from '@ant-design/icons-vue'
|
||||
import { useUserStore } from '@/store'
|
||||
import { useUserStore ,useUploadsStore} from '@/store'
|
||||
import RevokeMessage from '@/components/talk/message/RevokeMessage.vue'
|
||||
import { voiceToText } from '@/api/chat.js'
|
||||
import {confirmBox} from '@/components/confirm-box/service.js'
|
||||
@ -42,7 +42,7 @@ const props = defineProps({
|
||||
})
|
||||
|
||||
const { loadConfig, records, onLoad, onRefreshLoad, onJumpMessage } = useTalkRecord(props.uid)
|
||||
|
||||
const uploadsStore = useUploadsStore()
|
||||
const { useMessage } = useUtil()
|
||||
const { dropdown, showDropdownMenu, closeDropdownMenu } = useMenu()
|
||||
const { showUserInfoModal } = useInject()
|
||||
@ -319,9 +319,19 @@ const retry=(item:any)=>{
|
||||
confirmBox({
|
||||
content:'确定重发吗'
|
||||
}).then(()=>{
|
||||
|
||||
uploadsStore.retryCommonUpload(item.extra.upload_id)
|
||||
})
|
||||
}
|
||||
|
||||
const onContextMenuAvatar=(e:any,item:any)=>{
|
||||
console.log('item',item)
|
||||
e.preventDefault()
|
||||
bus.emit(EditorConst.Mention, {
|
||||
id: item.user_id,
|
||||
value: item.nickname
|
||||
})
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@ -386,13 +396,14 @@ const retry=(item:any)=>{
|
||||
:src="item.avatar"
|
||||
:size="42"
|
||||
:username="item.nickname"
|
||||
@contextmenu.prevent="onContextMenuAvatar($event, item)"
|
||||
@click="showUserInfoModal(item.erp_user_id, item.user_id)"
|
||||
/>
|
||||
</aside>
|
||||
|
||||
<!-- 主体信息 -->
|
||||
<main class="main-column">
|
||||
<div class="talk-title">
|
||||
<!-- <div class="talk-title">
|
||||
<span
|
||||
class="nickname pointer"
|
||||
v-show="talk_type == 2 && item.float == 'left'"
|
||||
@ -401,8 +412,15 @@ const retry=(item:any)=>{
|
||||
<span class="at">@</span>{{ item.nickname }}
|
||||
</span>
|
||||
<span>{{ parseTime(item.created_at, '{y}/{m}/{d} {h}:{i}') }}</span>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="talk-title">
|
||||
<span class="mr-7px"
|
||||
v-show="talk_type == 2 && item.float == 'left'"
|
||||
|
||||
>{{ item.nickname }}
|
||||
</span>
|
||||
<span>{{ parseTime(item.created_at, '{y}/{m}/{d} {h}:{i}') }}</span>
|
||||
</div>
|
||||
<div
|
||||
class="talk-content"
|
||||
:class="{ pointer: dialogueStore.isOpenMultiSelect }"
|
||||
|
@ -47,7 +47,7 @@ export default defineConfig(({ mode }) => {
|
||||
compressPlugin(),
|
||||
UnoCSS(),
|
||||
vueDevTools({
|
||||
launchEditor: 'trae',
|
||||
launchEditor: 'cursor',
|
||||
})
|
||||
],
|
||||
define: {
|
||||
|
Loading…
Reference in New Issue
Block a user