vue3 -element-plus 表格上傳

<!--    action="http://10.27.126.155:2616/uploadSystemControl" -->
<template>
    <el-upload
    class="upload-demo"
    action="https://jsonplaceholder.typicode.com/posts/"
    :on-change="handleChange"
    :on-success="handleSuccess"
    :before-upload="beforeUpload"
    :on-progress="uploadProcess"
    :file-list="fileList"
    >
    <el-button size="small" type="primary">點擊上傳</el-button>
  </el-upload>
// 100% 加載效果
  <el-progress type="circle" :percentage="percent" style="margin-top: 20px"></el-progress>

  </template>
  <script>
  import { defineComponent,reactive,ref } from 'vue'
  export default defineComponent({
    components:{

    },
      setup() {
      
        const fileList=reactive([]);

        const percent=ref(0);

        // 上傳前校驗
      const beforeUpload=(file)=> {
        console.log('上傳前端校驗',file.size);
         const isLt10M = file.size / 1024 / 1024  < 10;
         if (!isLt10M) {
          this.$message.error('上傳圖片不能超過10MB哦!');
          return false;
        }
        
      }

      //上傳成功回調
      const handleSuccess=(res, file)=>{
        console.log('handleSuccessres',res)
        console.log('handleSuccessfile',file)
        if (res) {
            setTimeout(() => {
                alert('上傳成功')
            }, 1500);
          
        } else {
          alert('視頻上傳失敗,請重新上傳!');
        }
      }
  
      //上傳文件
       const  handleChange=(file, fileList)=>{
           console.log('file---',file)
           console.log('fileList---',fileList)
            fileList = fileList.slice(-3);
        }


        // 上傳時候的鉤子
      const uploadProcess=(event, file, fileList)=> {
            console.log(event.percent);
            percent.value = Math.floor(event.percent);
      }

  // 定義變量和方法必須返回
      return {
        fileList,
        beforeUpload,
        handleChange,
        handleSuccess,
        uploadProcess,
        percent
      }

      },
  })
  </script>
  <style scoped>
  .text-left{text-align: left;padding-left:30px;}
  h3{padding-bottom:20px;}
  .cust_btn30{padding-bottom:60px;padding-top:30px;}
  .text_fise{font-size:16px;}
  .text_fise>div{padding-bottom:20px;}
  </style>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章