|
|
@@ -45,6 +45,7 @@
|
|
|
>
|
|
|
<el-scrollbar height="400px" class="replace-upload-scrollbar">
|
|
|
<div class="replace-upload-area" :class="{ 'upload-full': uploadedImageCount >= uploadMaxCount }">
|
|
|
+ <div class="upload-tip">只允许上传jpg,png格式图片;上传图片不得超过20M</div>
|
|
|
<el-upload
|
|
|
v-model:file-list="fileList"
|
|
|
list-type="picture-card"
|
|
|
@@ -351,6 +352,27 @@ const handleUploadChange: UploadProps["onChange"] = async (uploadFile, uploadFil
|
|
|
ElMessage.warning("只支持上传 JPG 和 PNG 格式的图片");
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ // 检查文件大小,不得超过20M
|
|
|
+ const maxSize = 20 * 1024 * 1024; // 20MB
|
|
|
+ if (uploadFile.raw.size > maxSize) {
|
|
|
+ // 从文件列表中移除超过大小的文件
|
|
|
+ const index = fileList.value.findIndex((f: any) => f.uid === uploadFile.uid);
|
|
|
+ if (index > -1) {
|
|
|
+ fileList.value.splice(index, 1);
|
|
|
+ }
|
|
|
+ // 从 uploadFiles 中移除
|
|
|
+ const uploadIndex = uploadFiles.findIndex((f: any) => f.uid === uploadFile.uid);
|
|
|
+ if (uploadIndex > -1) {
|
|
|
+ uploadFiles.splice(uploadIndex, 1);
|
|
|
+ }
|
|
|
+ // 如果文件有 blob URL,释放它
|
|
|
+ if (uploadFile.url && uploadFile.url.startsWith("blob:")) {
|
|
|
+ URL.revokeObjectURL(uploadFile.url);
|
|
|
+ }
|
|
|
+ ElMessage.warning("上传图片不得超过20M");
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 同步文件列表到表单数据(只添加通过验证的文件)
|
|
|
@@ -655,6 +677,9 @@ const getStatusName = (status: number) => {
|
|
|
.replace-upload-area {
|
|
|
min-height: 300px;
|
|
|
padding: 20px;
|
|
|
+ .upload-tip {
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
:deep(.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label) {
|
|
|
display: inline-flex !important;
|
|
|
opacity: 1 !important;
|