element ui (簡單的手動上傳文件,submit方式)

<template>
    <el-form ref="form" label-position="left" :model="form" :rules="rules" label-width="80px"  style="margin:20px;width:60%;min-width:600px;">
        <el-form-item label="座標類型" prop="coordinateType">
            <el-radio-group v-model="form.coordinateType">
                <el-radio label="BD09">百度</el-radio>
                <el-radio label="GCJ02">谷歌</el-radio>
                <el-radio label="GW84">GW84</el-radio>
                <el-radio label="Mercat">墨卡託</el-radio>
            </el-radio-group>
        </el-form-item>
        <el-form-item label="上傳文件" prop="excelFile">
            <el-upload 
                class="upload-demo"
                ref="upload"
                :action="uploadUrl()"
                name="excelFile"
                drag
                :data="upData"
                :file-list="fileList"
                :on-error="uploadFalse"
                :on-success="uploadSuccess"
                :auto-upload="false"
                :before-upload="beforeAvatarUpload">
                <i class="el-icon-upload"></i>
                <div class="el-upload__text">將文件拖到此處,或<em>點擊上傳</em></div>
                <!-- <el-button slot="trigger" size="small" >選取文件</el-button> -->
                <div slot="tip" class="el-upload__tip" style="color:red">上傳文件只能是 xls、xlsx、txt 格式!</div>
            </el-upload>
        </el-form-item>
        
        <el-form-item>
            <el-button type="primary" @click="submitUpload(form)">導入</el-button>
            <el-button   @click="onCancel(form)">取消</el-button>
        </el-form-item>
    </el-form>
</template>
 

<script>
    export default {
        data() {
            return {
                rules: {
                    coordinateType: [
                        { required: true, message: '請選擇文件中的座標類型', trigger: 'change' }
                    ],
                },
                form: {
                    fileName:'',
                    coordinateType: 'BD09',
                },
                fileList: [],
            }
        },
        computed: {
            // 這裏定義上傳文件時攜帶的參數,即表單數據
            upData: function() {
                return this.form
            }
        },
        methods: { 
            //導入接口地址
            uploadUrl: function() {
                return ‘http://172.16.82.63:8080/uploadPath‘  //接口
            },
            //文件上傳成功觸發
            uploadSuccess(response, file, fileList) {
                console.log(response)
                if(response.code == 0){
                    this.$message({
                        message: '導入成功',
                        type: 'success'
                    });
                }else {
                     this.$message({
                        message: '導入失敗',
                        type: 'error'
                    });
                }
            },
             //文件上傳失敗觸發
            uploadFalse(response, file, fileList) {
                 this.$message({
                        message: '文件上傳失敗!',
                        type: 'error'
                    });
            },
            // 上傳前對文件的大小和類型的判斷
            beforeAvatarUpload(file) {
                this.form.fileName = file.name;
                const extension = file.name.split(".")[1] === "xls";
                const extension2 = file.name.split(".")[1] === "xlsx";
                const extension3 = file.name.split(".")[1] === "txt";
                if (!extension && !extension2 && !extension3) {
                this.$message({
                        message: '上傳文件只能是 xls、xlsx、txt 格式!',
                        type: 'error'
                    });
                }
                return extension || extension2 || extension3 ;
            },
            //表單提交
            submitUpload(form) {
               this.$refs.form.validate((valid) => {
                    if (valid) {
                        //觸發組件的action
                        this.$refs.upload.submit();  //主要是這裏
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                });
            },
            //表單取消
            onCancel(form){
                this.$refs.form.resetFields();
            }



        }
    }
</script>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章