فهرست منبع

组件fileUpload支持多文件同时选择上传

RuoYi 3 سال پیش
والد
کامیت
8dc3321907
3فایلهای تغییر یافته به همراه18 افزوده شده و 8 حذف شده
  1. 15 5
      src/components/FileUpload/index.vue
  2. 2 2
      src/components/ImageUpload/index.vue
  3. 1 1
      src/views/system/user/index.vue

+ 15 - 5
src/components/FileUpload/index.vue

@@ -1,6 +1,7 @@
 <template>
   <div class="upload-file">
     <el-upload
+      multiple
       :action="uploadFileUrl"
       :before-upload="handleBeforeUpload"
       :file-list="fileList"
@@ -67,6 +68,8 @@ const props = defineProps({
 
 const { proxy } = getCurrentInstance();
 const emit = defineEmits();
+const number = ref(0);
+const uploadList = ref([]);
 const baseUrl = import.meta.env.VITE_APP_BASE_API;
 const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/common/upload"); // 上传的图片服务器地址
 const headers = ref({ Authorization: "Bearer " + getToken() });
@@ -120,6 +123,8 @@ function handleBeforeUpload(file) {
       return false;
     }
   }
+  proxy.$modal.loading("正在上传文件,请稍候...");
+  number.value++;
   return true;
 }
 
@@ -130,14 +135,19 @@ function handleExceed() {
 
 // 上传失败
 function handleUploadError(err) {
-  proxy.$modal.msgError("上传失败");
+  proxy.$modal.msgError("上传文件失败");
 }
 
 // 上传成功回调
 function handleUploadSuccess(res, file) {
-  proxy.$modal.msgSuccess("上传成功");
-  fileList.value.push({ name: res.fileName, url: res.fileName });
-  emit("update:modelValue", listToString(fileList.value));
+  uploadList.value.push({ name: res.fileName, url: res.fileName });
+  if (uploadList.value.length === number.value) {
+    fileList.value = fileList.value.concat(uploadList.value);
+    uploadList.value = [];
+    number.value = 0;
+    emit("update:modelValue", listToString(fileList.value));
+    proxy.$modal.closeLoading();
+  }
 }
 
 // 删除文件
@@ -149,7 +159,7 @@ function handleDelete(index) {
 // 获取文件名称
 function getFileName(name) {
   if (name.lastIndexOf("/") > -1) {
-    return name.slice(name.lastIndexOf("/") + 1).toLowerCase();
+    return name.slice(name.lastIndexOf("/") + 1);
   } else {
     return "";
   }

+ 2 - 2
src/components/ImageUpload/index.vue

@@ -157,7 +157,7 @@ function handleBeforeUpload(file) {
       return false;
     }
   }
-  proxy.$modal.loading("上传中");
+  proxy.$modal.loading("正在上传图片,请稍候...");
   number.value++;
 }
 
@@ -168,7 +168,7 @@ function handleExceed() {
 
 // 上传失败
 function handleUploadError() {
-  proxy.$modal.msgError("上传失败");
+  proxy.$modal.msgError("上传图片失败");
   proxy.$modal.closeLoading();
 }
 

+ 1 - 1
src/views/system/user/index.vue

@@ -413,7 +413,7 @@ const data = reactive({
     userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
     nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
     password: [{ required: true, message: "用户密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" }],
-    email: [{ type: "email", message: "'请输入正确的邮箱地址", trigger: ["blur", "change"] }],
+    email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
     phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }]
   }
 });