|
|
@ -51,7 +51,7 @@ export function exportFile({ |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* |
|
|
|
* Loading 状态的消息 |
|
|
|
* @param {ElMessageOptions} options |
|
|
|
* @returns |
|
|
|
*/ |
|
|
@ -94,3 +94,95 @@ export function confirm({ |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
export function uploadFile( |
|
|
|
{ url, method = "POST", data } = {}, |
|
|
|
{ |
|
|
|
// 接受的文件类型
|
|
|
|
accept = ".xls,.xlsx", |
|
|
|
// 是否多选
|
|
|
|
multiple, |
|
|
|
// 最大文件大小 (单位: MB)
|
|
|
|
maxSize = 15, |
|
|
|
} = {} |
|
|
|
) { |
|
|
|
return new Promise((resolve, reject) => { |
|
|
|
if (!url) return reject("未配置上传地址"); |
|
|
|
|
|
|
|
const fileDom = document.createElement("input"); |
|
|
|
|
|
|
|
fileDom.type = "file"; |
|
|
|
fileDom.setAttribute("type", "file"); |
|
|
|
accept && fileDom.setAttribute("accept", accept); |
|
|
|
multiple && fileDom.setAttribute("multiple", ""); |
|
|
|
|
|
|
|
fileDom.click(); |
|
|
|
|
|
|
|
fileDom.oncancel = function () { |
|
|
|
reject("取消 Upload"); |
|
|
|
}; |
|
|
|
|
|
|
|
fileDom.onchange = function () { |
|
|
|
const [file] = fileDom.files; |
|
|
|
|
|
|
|
if (!file) return reject("未选择文件"); |
|
|
|
|
|
|
|
if (file.size > 1024 * 1024 * maxSize) { |
|
|
|
Message.error(`文件大小不能超过${maxSize}MB`); |
|
|
|
reject(`文件大小不能超过${maxSize}MB`); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
const close = loadingMessage({ message: "文件上传中..." }); |
|
|
|
|
|
|
|
const formData = new FormData(); |
|
|
|
|
|
|
|
formData.append("file", file); |
|
|
|
|
|
|
|
for (const key in data) { |
|
|
|
formData.append(key, data[key]); |
|
|
|
} |
|
|
|
|
|
|
|
request({ |
|
|
|
url, |
|
|
|
method, |
|
|
|
headers: { |
|
|
|
"Content-Type": "multipart/form-data", |
|
|
|
}, |
|
|
|
data: formData, |
|
|
|
}) |
|
|
|
.then((res) => { |
|
|
|
if (res.code !== 200) { |
|
|
|
Message.error("上传失败"); |
|
|
|
reject(res.msg); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
Message.success("上传成功"); |
|
|
|
|
|
|
|
resolve(res); |
|
|
|
}) |
|
|
|
.catch((err) => { |
|
|
|
reject(err); |
|
|
|
}) |
|
|
|
.finally(() => { |
|
|
|
close(); |
|
|
|
}); |
|
|
|
}; |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* |
|
|
|
* @param {*} number |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
export function returnFileSize(number) { |
|
|
|
if (number < 1024) { |
|
|
|
return `${number} bytes`; |
|
|
|
} else if (number >= 1024 && number < 1048576) { |
|
|
|
return `${(number / 1024).toFixed(1)} KB`; |
|
|
|
} else if (number >= 1048576) { |
|
|
|
return `${(number / 1048576).toFixed(1)} MB`; |
|
|
|
} |
|
|
|
} |
|
|
|