tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 38 kB
Source Map (JSON)
{"version":3,"file":"main.mjs","sources":["../../../../node_modules/@babel/runtime/helpers/esm/toArray.js","../../../../src/_common/js/upload/main.ts"],"sourcesContent":["import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _toArray(r) {\n return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();\n}\nexport { _toArray as default };","import { isFunction, isNumber } from 'lodash-es';\n/* eslint-disable no-param-reassign */\nimport { getCurrentDate, isOverSizeLimit } from './utils';\nimport xhr from './xhr';\nimport log from '../log/log';\nimport {\n UploadFile,\n SizeLimitObj,\n FileChangeParams,\n FileChangeReturn,\n RequestMethodResponse,\n HandleUploadParams,\n SuccessContext,\n handleSuccessParams,\n UploadTriggerUploadText,\n ErrorContext,\n ResponseType,\n} from './types';\n\nexport interface BeforeUploadExtra {\n /** 图片文件大小限制 */\n sizeLimit?: number | SizeLimitObj;\n /** 上传文件之前的钩子,参数为上传的文件,返回值决定是否上传 */\n beforeUpload?: (file: UploadFile) => boolean | Promise<boolean>;\n}\n\nexport type BeforeUploadPromiseList = [Promise<SizeLimitObj>, undefined | Promise<boolean>]\n\nexport function handleBeforeUpload(\n file: UploadFile, params: BeforeUploadExtra,\n): Promise<[SizeLimitObj, boolean]> {\n const { sizeLimit, beforeUpload } = params;\n // 文件大小校验\n const sizePromise = new Promise<SizeLimitObj>((resolve) => {\n let result: SizeLimitObj = null;\n if (sizeLimit) {\n const sizeLimitObj: SizeLimitObj = isNumber(sizeLimit)\n ? { size: sizeLimit, unit: 'KB' }\n : sizeLimit;\n const limit = isOverSizeLimit(file.size, sizeLimitObj.size, sizeLimitObj.unit);\n if (limit) {\n result = sizeLimitObj;\n }\n }\n resolve(result);\n });\n\n // 自定义校验\n const promiseList: BeforeUploadPromiseList = [sizePromise, undefined];\n if (isFunction(beforeUpload)) {\n const r = beforeUpload(file);\n const p = r instanceof Promise ? r : (new Promise<boolean>((resolve) => resolve(r)));\n promiseList[1] = p;\n }\n\n // 同时进行文件大小校验和自定义校验函数\n return new Promise((resolve) => {\n Promise.all(promiseList).then((r) => {\n resolve(r);\n });\n });\n}\n\nexport interface OnErrorParams extends ErrorContext {\n formatResponse?: HandleUploadParams['formatResponse'];\n}\n\nexport function handleError(options: OnErrorParams) {\n const { event, files, response, XMLHttpRequest, formatResponse } = options;\n let res = response;\n if (isFunction(formatResponse)) {\n res = formatResponse(response, { file: files[0], currentFiles: files });\n }\n files.forEach((file) => {\n file.status = 'fail';\n file.response = res;\n });\n return { response: res, event, files, XMLHttpRequest };\n}\n\nexport function handleSuccess(params: handleSuccessParams) {\n const { event, files, response, XMLHttpRequest } = params;\n if (files?.length <= 0) {\n log.error('Upload', 'Empty File in Success Callback');\n }\n files.forEach((file) => {\n file.percent = 100;\n file.status = 'success';\n delete file.response?.error;\n });\n const res = response;\n files[0].url = res.url || files[0].url;\n return { response: res, event, files, XMLHttpRequest };\n}\n\nexport type UploadRequestReturn = {\n status?: 'fail' | 'success';\n /** 上传失败的文件,需等待继续上传 */\n failedFiles?: UploadFile[];\n data?: SuccessContext;\n /** 批量文件上传,一个文件一个请求的场景下,响应结果的列表 */\n list?: UploadRequestReturn[];\n}\n\nexport function handleRequestMethodResponse(res: RequestMethodResponse) {\n if (!res) {\n log.error('Upload', '`requestMethodResponse` is required.');\n return false;\n }\n if (!res.status) {\n log.error('Upload', '`requestMethodResponse.status` is missing, which value only can be `success` or `fail`');\n return false;\n }\n if (!['success', 'fail'].includes(res.status)) {\n log.error('Upload', '`requestMethodResponse.status` must be `success` or `fail`, examples `{ status: \\'success\\', response: { url: \\'\\' } }`');\n return false;\n }\n if (res.status === 'success' && (!res.response || (!res.response.url && !res.response.files))) {\n log.warn('Upload', '`requestMethodResponse.response.url` or `requestMethodResponse.response.files` is required if `status` is `success`');\n }\n return true;\n}\n\n/**\n * 一次上传请求的返回结果\n */\nexport function uploadOneRequest(params: HandleUploadParams): Promise<UploadRequestReturn> {\n const { action, toUploadFiles, requestMethod } = params;\n return new Promise<UploadRequestReturn>((resolve) => {\n if (!action && !requestMethod) {\n log.error('Upload', 'one of action and requestMethod must be exist.');\n resolve({});\n return;\n }\n if (!toUploadFiles || !toUploadFiles.length) {\n log.warn('Upload', 'No files need to be uploaded');\n resolve({});\n return;\n }\n toUploadFiles.forEach((file) => {\n file.status = 'progress';\n });\n // 自定义上传方法\n if (requestMethod) {\n requestMethod(params.multiple ? toUploadFiles : toUploadFiles[0]).then((res) => {\n if (!handleRequestMethodResponse(res)) {\n resolve({});\n return;\n }\n let response = (res.response || {}) as ResponseType;\n if (isFunction(params.formatResponse)) {\n response = params.formatResponse(response, { file: toUploadFiles[0], currentFiles: toUploadFiles });\n }\n if (res.status === 'fail') {\n response.error = res.error || response.error;\n }\n let resultFiles: UploadFile[] = [];\n if (res.status === 'success' && response.files) {\n // 一个请求上传并返回多个文件\n resultFiles = response.files.map((file: UploadFile) => {\n const fileInfo = toUploadFiles.find((toFile) => (\n (file.name && toFile.name === file.name) || (file.raw && toFile.raw === file.raw)\n ));\n return {\n ...fileInfo,\n ...file,\n status: res.status,\n response,\n };\n });\n } else {\n // 一个请求上传并返回一个文件\n toUploadFiles.forEach((file) => {\n file.status = res.status;\n file.response = response;\n file.url = response.url;\n file.percent = res.status === 'success' ? 100 : 0;\n // 如果上传请求返回结果没有上传日期,则使用电脑当前日期显示\n file.uploadTime = response?.uploadTime || getCurrentDate();\n });\n resultFiles = toUploadFiles;\n }\n const result = {\n response,\n file: resultFiles[0],\n files: resultFiles,\n };\n if (res.status === 'success') {\n params.onResponseSuccess?.(result);\n } else if (res.status === 'fail') {\n params.onResponseError?.(result);\n }\n resolve({\n status: res.status,\n data: result,\n });\n });\n } else {\n const xhrReq = xhr({\n action: params.action,\n files: params.toUploadFiles,\n useMockProgress: params.useMockProgress,\n mockProgressDuration: params.mockProgressDuration,\n onError: (p: ErrorContext) => {\n const r = handleError({ ...p, formatResponse: params.formatResponse });\n params.onResponseError?.(r);\n resolve({ status: 'fail', data: r });\n },\n onProgress: params.onResponseProgress,\n onSuccess: (p: SuccessContext) => {\n const { formatResponse } = params;\n let res = p.response;\n if (isFunction(formatResponse)) {\n res = formatResponse(p.response, {\n file: p.file,\n currentFiles: p.files,\n });\n }\n if (res.error) {\n const r = handleError({ ...p, response: res });\n params.onResponseError?.(r);\n resolve({ status: 'fail', data: r });\n } else {\n p.file.response = res;\n p.files[0].response = res;\n const r = handleSuccess({ ...p, response: res });\n params.onResponseSuccess?.(r);\n resolve({ status: 'success', data: r });\n }\n },\n formatRequest: params.formatRequest,\n data: params.data,\n name: params.name,\n headers: params.headers,\n withCredentials: params.withCredentials,\n method: params.method,\n });\n params.setXhrObject?.({\n files: params.toUploadFiles,\n xhrReq,\n });\n }\n });\n}\n\nfunction updateUploadedFiles(uploadFiles: UploadFile[], resultFiles: UploadFile[]) {\n const existFiles = uploadFiles.filter((t) => t.url);\n const newFiles = existFiles;\n for (let i = 0, len = resultFiles.length; i < len; i++) {\n const file = resultFiles[i];\n const index = uploadFiles.findIndex((item) => (\n (item.raw && item.raw === file.raw) || (item.name && item.name === file.name)\n ));\n const tmpFile = index >= 0 ? { ...uploadFiles[index], ...file } : file;\n newFiles.push(tmpFile);\n }\n return newFiles;\n}\n\n/**\n * 可能单个文件上传,也可能批量文件一次性上传\n * 返回上传成功或上传失败的文件列表\n */\nexport function upload(params: HandleUploadParams):\nPromise<UploadRequestReturn> {\n const { uploadAllFilesInOneRequest, toUploadFiles, uploadedFiles, isBatchUpload } = params;\n // 一批文件上传,部分文件失败,重新上传失败的文件\n const thisUploadFiles = toUploadFiles.filter((t) => (\n !t.response || (t.response && !t.response.error)\n ));\n return new Promise((resolve) => {\n // 所有文件一次性上传\n if (uploadAllFilesInOneRequest || !params.multiple) {\n uploadOneRequest(params).then((r) => {\n if (r.status === 'success') {\n r.data.files = isBatchUpload || !params.multiple\n ? r.data.files\n : updateUploadedFiles(uploadedFiles, r.data.files);\n }\n const failedFiles = r.status === 'fail' ? r.data.files : [];\n resolve({ ...r, failedFiles });\n });\n return;\n }\n // 一个文件一个文件上传\n const list = thisUploadFiles.map((file) => (\n uploadOneRequest({ ...params, toUploadFiles: [file] })\n ));\n Promise.all(list).then((arr) => {\n const files: UploadFile[] = [];\n const failedFiles: UploadFile[] = [];\n arr.forEach((one) => {\n if (one.status === 'success') {\n files.push(one.data.files[0]);\n } else if (one.status === 'fail') {\n failedFiles.push(one.data.files[0]);\n }\n });\n const tFiles = params.autoUpload\n ? uploadedFiles.concat(files)\n : uploadedFiles;\n const newFiles = isBatchUpload || !params.multiple ? files : tFiles;\n resolve({\n status: files.length ? 'success' : 'fail',\n data: {\n files: newFiles,\n },\n // 上传失败的文件,需等待继续上传\n failedFiles,\n list: arr,\n });\n });\n });\n}\n\nexport function formatToUploadFile(\n files: File[],\n format: FileChangeParams['format'],\n status: UploadFile['status'] = undefined,\n percent = 0,\n) {\n return files.map((fileRaw: File) => {\n let file: UploadFile = fileRaw;\n if (isFunction(format)) {\n file = format(fileRaw);\n }\n const uploadFile: UploadFile = {\n raw: fileRaw,\n lastModified: fileRaw.lastModified,\n name: fileRaw.name,\n size: fileRaw.size,\n type: fileRaw.type,\n percent,\n status,\n ...file,\n };\n return uploadFile;\n });\n}\n\nexport function validateFile(\n params: FileChangeParams\n): Promise<FileChangeReturn> {\n const { files, uploadValue, max, allowUploadDuplicateFile } = params;\n return new Promise((resolve) => {\n // 是否允许相同的文件名存在\n let tmpFiles = files.filter((file) => {\n const sameNameFile = uploadValue.find((t) => t.name === file.name);\n return allowUploadDuplicateFile || !sameNameFile;\n });\n\n let hasSameNameFile = false;\n if (tmpFiles.length < files.length) {\n hasSameNameFile = true;\n }\n if (!tmpFiles.length) {\n const tFiles = formatToUploadFile(files, params.format, params.autoUpload ? 'progress' : 'waiting');\n resolve({ hasSameNameFile, file: tFiles?.[0], files: tFiles, validateResult: { type: 'FILTER_FILE_SAME_NAME' } });\n return;\n }\n // 上传文件数量限制\n let lengthOverLimit = false;\n if (max && tmpFiles.length && !params.isBatchUpload) {\n const tmpFilesLenToBeAdded = tmpFiles.length;\n tmpFiles = tmpFiles.slice(0, max - uploadValue.length);\n if (tmpFilesLenToBeAdded + uploadValue.length > max) {\n lengthOverLimit = true;\n }\n }\n\n // 格式化文件对象\n const formattedFiles = formatToUploadFile(tmpFiles, params.format, params.autoUpload ? 'progress' : 'waiting');\n\n // 全量文件,一波校验,整体上传 或 终止上传\n let allFileValidatePromise;\n if (params.beforeAllFilesUpload) {\n const r = params.beforeAllFilesUpload?.(formattedFiles);\n allFileValidatePromise = r instanceof Promise ? r : new Promise((resolve) => resolve(r));\n }\n\n // 单文件合法性校验,一个文件校验不通过其他文件可继续上传\n const promiseList = formattedFiles.map((file: UploadFile) => new Promise((resolve) => {\n handleBeforeUpload(\n file,\n { beforeUpload: params.beforeUpload, sizeLimit: params.sizeLimit },\n ).then(([sizeResult, customResult]) => {\n if (sizeResult) {\n resolve({ file, validateResult: { type: 'FILE_OVER_SIZE_LIMIT', extra: sizeResult } });\n } else if (customResult === false) {\n resolve({ file, validateResult: { type: 'CUSTOM_BEFORE_UPLOAD' } });\n }\n resolve({ file });\n });\n }));\n Promise.all([allFileValidatePromise].concat(promiseList)).then((results) => {\n const [allFilesResult, ...others] = results;\n // 如果 beforeAllFilesUpload 校验未通过\n if (allFilesResult === false) {\n resolve({\n lengthOverLimit,\n hasSameNameFile,\n validateResult: { type: 'BEFORE_ALL_FILES_UPLOAD' },\n files: formattedFiles,\n });\n } else {\n resolve({\n lengthOverLimit,\n hasSameNameFile,\n fileValidateList: others,\n files: formattedFiles,\n });\n }\n });\n });\n}\n\nexport function getFilesAndErrors(fileValidateList: FileChangeReturn[], getError: (p: {[key: string]: any }) => string) {\n const sizeLimitErrors: FileChangeReturn[] = [];\n const beforeUploadErrorFiles: UploadFile[] = [];\n const toFiles: UploadFile[] = [];\n fileValidateList.forEach((oneFile) => {\n if (oneFile.validateResult?.type === 'CUSTOM_BEFORE_UPLOAD') {\n beforeUploadErrorFiles.push(oneFile.file);\n return;\n }\n if (oneFile.validateResult?.type === 'FILE_OVER_SIZE_LIMIT') {\n if (!oneFile.file.response) {\n oneFile.file.response = {};\n }\n oneFile.file.response.error = oneFile.file.response.error\n || getError(oneFile.validateResult.extra);\n sizeLimitErrors.push(oneFile);\n return;\n }\n toFiles.push(oneFile.file);\n });\n\n return { sizeLimitErrors, beforeUploadErrorFiles, toFiles };\n}\n\n/**\n * 获取文件上传触发元素文本 在全局配置中的字段\n */\nexport function getTriggerTextField(p: {\n status: 'success' | 'fail' | 'progress' | 'waiting',\n multiple: boolean,\n autoUpload: boolean;\n isBatchUpload: boolean;\n}): keyof UploadTriggerUploadText {\n if (p.isBatchUpload && p.status) return 'reupload';\n if (p.status === 'fail') return 'reupload';\n if (p.status === 'progress') return 'uploading';\n if (p.status === 'success' || (!p.autoUpload && p.status === 'waiting')) {\n return p.multiple ? 'continueUpload' : 'reupload';\n }\n return 'fileInput';\n}\n\nexport interface GetDisplayFilesParams {\n multiple: boolean;\n autoUpload: boolean;\n isBatchUpload: boolean;\n uploadValue: UploadFile[];\n toUploadFiles: UploadFile[];\n}\n\n/**\n * 获取文件列表显示\n */\nexport function getDisplayFiles(params: GetDisplayFilesParams) {\n const { multiple, uploadValue, toUploadFiles, autoUpload } = params;\n const waitingUploadFiles = autoUpload\n ? toUploadFiles\n : toUploadFiles.filter((file) => file.status !== 'success');\n if (multiple && !params.isBatchUpload) {\n if (!autoUpload) return uploadValue;\n return (waitingUploadFiles.length ? uploadValue.concat(waitingUploadFiles) : uploadValue) || [];\n }\n return (waitingUploadFiles.length ? waitingUploadFiles : uploadValue) || [];\n}\n"],"names":["_toArray","r","arrayWithHoles","iterableToArray","unsupportedIterableToArray","nonIterableRest","handleBeforeUpload","file","params","sizeLimit","beforeUpload","sizePromise","Promise","resolve","result","sizeLimitObj","isNumber","size","unit","limit","isOverSizeLimit","promiseList","isFunction","p","all","then","handleError","options","event","files","response","XMLHttpRequest","formatResponse","res","currentFiles","forEach","status","handleSuccess","length","log","error","_file$response","percent","url","handleRequestMethodResponse","includes","warn","uploadOneRequest","action","toUploadFiles","requestMethod","multiple","resultFiles","map","fileInfo","find","toFile","name","raw","_objectSpread","_response","uploadTime","getCurrentDate","_params$onResponseSuc","onResponseSuccess","call","_params$onResponseErr","onResponseError","data","_params$setXhrObject","xhrReq","xhr","useMockProgress","mockProgressDuration","onError","_params$onResponseErr2","onProgress","onResponseProgress","onSuccess","_params$onResponseErr3","_params$onResponseSuc2","formatRequest","headers","withCredentials","method","setXhrObject","updateUploadedFiles","uploadFiles","existFiles","filter","t","newFiles","_loop","i","index","findIndex","item","tmpFile","push","len","upload","uploadAllFilesInOneRequest","uploadedFiles","isBatchUpload","thisUploadFiles","failedFiles","list","arr","one","tFiles","autoUpload","concat","formatToUploadFile","format","arguments","undefined","fileRaw","uploadFile","lastModified","type","validateFile","uploadValue","max","allowUploadDuplicateFile","tmpFiles","sameNameFile","hasSameNameFile","validateResult","lengthOverLimit","tmpFilesLenToBeAdded","slice","formattedFiles","allFileValidatePromise","beforeAllFilesUpload","_params$beforeAllFile","_ref","_ref2","_slicedToArray","sizeResult","customResult","extra","results","_results","allFilesResult","others","fileValidateList","getFilesAndErrors","getError","sizeLimitErrors","beforeUploadErrorFiles","toFiles","oneFile","_oneFile$validateResu","_oneFile$validateResu2","getTriggerTextField","getDisplayFiles","waitingUploadFiles"],"mappings":"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"}