fix bug 4

This commit is contained in:
2026-07-16 17:55:08 +03:30
parent 59ad1106de
commit c7b3086547
5 changed files with 297 additions and 142 deletions
+35 -23
View File
@@ -9,6 +9,7 @@
:headers="fileHeader"
accept="image/*"
:before-upload="beforeUpload"
:custom-request="customRequest"
@change="handelChange"
>
<div
@@ -45,7 +46,10 @@ import { message } from 'ant-design-vue'
import type { UploadProps } from 'ant-design-vue'
import { getToken } from '@/utils'
import { fixFileCapture } from '@/utils/fixFileCapture'
import { createWebpBeforeUpload } from '@/utils/prepareImageForUpload'
import {
createImageBeforeUpload,
createImageCustomRequest
} from '@/utils/prepareImageForUpload'
import { normalizeUploadFileResponse, toAbsoluteFileUrl } from '@/utils/file'
const loading = ref<boolean>(false)
@@ -72,37 +76,45 @@ const emit = defineEmits<{
(e: 'errorUpload'): void
}>()
const beforeUpload: UploadProps['beforeUpload'] = createWebpBeforeUpload((msg) =>
const beforeUpload: UploadProps['beforeUpload'] = createImageBeforeUpload((msg) =>
message.error(msg)
)
function handelChange({ file, fileList }) {
if (Object.hasOwn(file, 'percent')) {
const customRequest: UploadProps['customRequest'] = createImageCustomRequest({
action: () => url.value || uploadURL,
getHeaders: () => fileHeader.value,
messageError: (msg) => message.error(msg),
onStarted: () => {
loading.value = true
percent.value = 0
emit('startUpload')
},
onUploaded: (body) => {
const fileResource = normalizeUploadFileResponse(body)
const record = body && typeof body === 'object' ? (body as Record<string, any>) : undefined
imageUrl.value =
fileResource?.full_src ||
toAbsoluteFileUrl(record?.full_src || record?.src) ||
''
loading.value = false
percent.value = 100
emit('upload', body)
message.success('فایل با موفقیت آپلود شد')
},
onFailed: () => {
loading.value = false
emit('errorUpload')
}
})
function handelChange({ file }) {
if (Object.hasOwn(file, 'percent') && file.percent != null) {
percent.value = Math.floor(file.percent)
}
fixFileCapture()
if (file.status === 'uploading') {
loading.value = true
emit('startUpload')
return
}
if (file.status === 'error') {
loading.value = false
emit('errorUpload')
message.error('خطا در آپلود فایل')
}
if (file.status == 'done') {
const fileResource = normalizeUploadFileResponse(file.response)
imageUrl.value =
fileResource?.full_src ||
toAbsoluteFileUrl(file.response?.full_src || file.response?.src) ||
''
loading.value = false
emit('upload', file.response)
message.success('فایل با موفقیت آپلود شد')
} else if (fileList.status == 'removed') {
}
}