浏览代码

fix: el-upload移除文件的提醒

10702 4 年之前
父节点
当前提交
82a78aef23
共有 1 个文件被更改,包括 47 次插入10 次删除
  1. 47 10
      src/views/file/Upload.vue

+ 47 - 10
src/views/file/Upload.vue

@@ -24,6 +24,7 @@
           <el-form-item label="上传文件">
           <el-form-item label="上传文件">
             <!-- accept接收文件类型,auto-upload:false 关闭自动上传,drag 允许拖动,name=file,上传文件的字段名           -->
             <!-- accept接收文件类型,auto-upload:false 关闭自动上传,drag 允许拖动,name=file,上传文件的字段名           -->
             <!-- file-list:接收文件上传的数组,before-upload:配合accept属性,检查文件类型、后缀           -->
             <!-- file-list:接收文件上传的数组,before-upload:配合accept属性,检查文件类型、后缀           -->
+            <!-- on-change:获取文件,将文件保存在fileList里           -->
             <el-upload
             <el-upload
                 ref="uploadRef"
                 ref="uploadRef"
                 accept='text/csv,	application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
                 accept='text/csv,	application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
@@ -32,7 +33,8 @@
                 name="file"
                 name="file"
                 :file-list="fileList"
                 :file-list="fileList"
                 :before-upload="beforeUploadFile"
                 :before-upload="beforeUploadFile"
-                @change="logFileList"
+                :before-remove="beforeRemoveFile"
+                :on-change="getFile"
                 style="width: 500px;"
                 style="width: 500px;"
                 >
                 >
             </el-upload>
             </el-upload>
@@ -50,7 +52,7 @@
           <!--                           :before-upload="beforeUploadFile"-->
           <!--                           :before-upload="beforeUploadFile"-->
           <!--                           :on-exceed="handleExceed"-->
           <!--                           :on-exceed="handleExceed"-->
           <!--                           :limit="1"-->
           <!--                           :limit="1"-->
-          <!--                           :auto-upload="false"-->
+          <!--                           :auto-upload=false-->
           <!--                           :on-change="getFile"-->
           <!--                           :on-change="getFile"-->
           <!--                           :data="form"-->
           <!--                           :data="form"-->
           <!--                           :file-list="fileList"-->
           <!--                           :file-list="fileList"-->
@@ -96,7 +98,7 @@ export default {
     //文件列表
     //文件列表
     let fileList= []
     let fileList= []
     //用于放数据  FormData类型
     //用于放数据  FormData类型
-    let formData= {}
+    let formData= new FormData()
 
 
     //校验规则
     //校验规则
     const rules = reactive({
     const rules = reactive({
@@ -117,11 +119,14 @@ export default {
 
 
     //————————————————————————————————方法区——————————————————————————————————————————————
     //————————————————————————————————方法区——————————————————————————————————————————————
 
 
-    //测试用方法
-    function logFileList() {
+    //文件上传后,保存在数组fileList里
+    function getFile(file, files) {
+      fileList = files;
+      console.log(file)
+      console.log("file")
       console.log(fileList)
       console.log(fileList)
+      console.log("fileList")
     }
     }
-
     //提交表单
     //提交表单
     const submitForm = async (formEl) => {
     const submitForm = async (formEl) => {
       if (!formEl) return
       if (!formEl) return
@@ -165,16 +170,47 @@ export default {
       formEl.resetFields()
       formEl.resetFields()
     }
     }
 
 
+    //判断后缀是否符合要去
+    function isFileExtensionRight(extension){
+      return extension === 'csv' || extension === 'xls' || extension === 'xlsx';
+    }
+
     //上传前,配合accept属性,检查文件类型、后缀
     //上传前,配合accept属性,检查文件类型、后缀
     function beforeUploadFile(file) {
     function beforeUploadFile(file) {
       let extension = file.name.substring(file.name.lastIndexOf('.') + 1);
       let extension = file.name.substring(file.name.lastIndexOf('.') + 1);
-      console.log(extension);
-      if (extension !== 'csv' && extension !== 'xls' && extension !== 'xlsx') {
+      if (isFileExtensionRight(extension)) {
         ElMessage.warning('文件类型不对,只接受csv|xls|xlsx类型的文件'); //控制文件类型
         ElMessage.warning('文件类型不对,只接受csv|xls|xlsx类型的文件'); //控制文件类型
         return false
         return false
       }
       }
     }
     }
 
 
+    //移除文件时的提醒
+    function beforeRemoveFile(file) {
+      let extension = file.name.substring(file.name.lastIndexOf('.') + 1);
+      if (!isFileExtensionRight(extension)) return;
+
+      return ElMessageBox({
+        title: '移除待上传文件?',
+        message: `确定要删除文件: ${file.name} 吗?`,
+        showCancelButton: true,
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        beforeClose: (action, instance, done) => {
+          if (action === 'confirm') {
+            instance.confirmButtonLoading = true
+            instance.confirmButtonText = 'Loading...'
+            setTimeout(() => {
+              done()
+              setTimeout(() => {
+                instance.confirmButtonLoading = false
+              }, 125)
+            }, 125)
+          } else {
+            done()
+          }
+        },
+      })
+    }
 
 
     return{
     return{
       form,
       form,
@@ -184,8 +220,9 @@ export default {
       submitForm,
       submitForm,
       resetForm,
       resetForm,
       formRef,
       formRef,
-      logFileList,
-      beforeUploadFile
+      getFile,
+      beforeUploadFile,
+      beforeRemoveFile
     }
     }
   }
   }
 }
 }