<template>
<div>
<ul class="el-upload-list el-upload-list--picture-card" style="display:flex;">
<div>
<!-- start:拖拽开始 end:拖拽结束 imageLists:需要展示图片的数组-->
<draggable class="el-upload-list el-upload-list--picture-card" v-model="imageLists" @start="onStart"
@end="onEnd">
<div class="el-upload-list__item is-success" v-for="(item, index) in imageLists" :key="item + index">
<li>
<div class="content1">
<img :src="item.url" class="el-upload-list__item is-success" />
<span class="el-upload-list__item-actions">
<!-- 删除图片 -->
<span class="remove">
<i class="el-icon-delete" @click="delImg(index)"></i>
</span>
<!-- 放大图片 -->
<span class="remove">
<i class="el-icon-circle-plus-outline"
@click="handlePictureCardPreview(item.url)"></i>
</span>
</span>
</div>
</li>
</div>
</draggable>
</div>
<el-upload action="#" list-type="picture-card" :auto-upload="false" :show-file-list="false" :on-change="handleChange" multiple>
<i slot="default" class="el-icon-plus"></i>
</el-upload>
<!-- 图片回显预览 -->
<el-dialog title="图片预览" :visible.sync="dialogVisible" width="50%" height="80%" append-to-body>
<img :src="dialogImageUrl" alt="" style="width:100%;height:100%" />
</el-dialog>
</ul>
</div>
</template>
<script>
import draggable from "vuedraggable";
export default {
components: {
draggable,
},
data() {
return {
imageLists: [
],
drag: false,
dialogImageUrl: "",
dialogVisible: false,
resourcesUrl: process.env.VUE_APP_RESOURCES_URL,
};
},
components: {
draggable,
},
methods: {
handleChange(file) {
debugger;
var obj = {
url: file.url,
name: file.name,
}
this.imageLists.push(obj);
},
//开始拖拽事件
onStart() {
},
//拖拽结束事件
onEnd(e) {
console.log(e); // 这里将会有调整前后的 index 及其他可能需要传递给接口的信息
},
beforeAvatarUpload(file) {
console.log(file);
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
delImg(index) {
this.imageLists.splice(index, 1)
},
handleUploadSuccess(response, file, fileList) {
console.log(response, file, fileList);
},
handlePictureCardPreview(url) {
this.dialogImageUrl = url;
this.dialogVisible = true;
},
},
};
</script>
<style lang="sass" scoped></style>