vue - element admin 公用上传

处理多个图片

<el-form-item label="封面图" prop="pic" :rules="[{ required: true, message: '请传入封面图', trigger: 'blur' }]">
                    <div class="pic-upload mini-upload">
                        <el-upload action="/admin/up/temp" accept=".jpg, .jpeg, .png, .JPG, .JPEG, .PNG" ref="uploadFilePic" style="width: 80px; height: 80px" list-type="picture-card" name="upfile" :data="{ type: 'image' }" :before-upload="beforeUpload" :file-list="editform.fileList" :on-success="uploadFile.bind(null, { name: 'pic' })">
                            <i class="el-icon-plus" ref="uploadPic"></i>
                            <div slot="file">
                                   <!--添加v-if防止出现图片加载失败-->
                                <el-image class="el-upload-list__item-thumbnail" v-if='editform.pic_url' :src="editform.pic_url" ref="pic" :preview-src-list="[editform.pic_url]"></el-image>
                                <span class="el-upload-list__item-actions">
                                    <span class="el-upload-list__item-preview" @click="handlePreview({ ref: 'pic' })">
                                        <i class="el-icon-zoom-in scale-icon"></i>
                                    </span>
                                    <span class="el-upload-list__item-delete" @click="removeFile({ name: 'pic', ref: 'uploadFilePic' })">
                                        <i class="el-icon-delete scale-icon"></i>
                                    </span>
                                    <div class="upload-list__item-change" @click="replaceFile({ name: 'pic', ref: 'uploadPic' })">点击替换</div>
                                </span>
                            </div>
                        </el-upload>
                    </div>
                    <div class="el-upload__tip">图片大小不超过2MB</div>
                </el-form-item>
  //展示图片
        handlePreview(data) {
            this.$refs[data.ref].clickHandler();
        },
        //上传前
        beforeUpload(file) {
            const isSize = file.size / 1024 / 1024 < 2;
            if (!isSize) {
                this.$message.error('上传图片大小不能超过2MB');
            }
            return isSize;
        },
        //成功上传文件
        uploadFile(data, res, file) {
            this.editform[data.name] = res.path;
            this.editform[data.name + '_url'] = res.url;
        },
        //删除图片
        removeFile(data) {
            this.editform[data.name] = '';
            this.editform[data.name + '_url'] = '';
            this.$refs[data.ref].clearFiles();
        },
        //替换图片,触发input
        replaceFile(data) {
            this.$refs[data.ref].click();
        },

      //配置图片初始化fileList
       this.editform.fileList = this.editform.pic== '' ? [] : [{ url: this.editform.pic_url }];
posted @ 2020-10-20 13:55  gggggggxin  阅读(625)  评论(0编辑  收藏  举报