<template>
<div>
<div class="title-left">
现场照片:
</div>
<div class="peer">
<el-image
style="width: 150px; height: 150px;margin-left: 5px"
v-for="(item,index) in fileList"
:src="item"
ref="previewImage"
:key="index"
@click.capture="handlePreviewImage(index)">
</el-image>
</div>
<el-upload
ref="elUpload"
:action="uploadUrl"
:data="fileData"
list-type="picture-card"
:on-success="handleSuccess"
:on-error="uploadError"
:before-upload="beforeUpload"
style="padding: 0 20px; display: inline"
>
<i class="el-icon-plus"></i>
<div slot="file" slot-scope="{file}">
<el-image id="122" ref="previewImg" :src="file.url" :preview-src-list='file.url' lazy></el-image>
<span class="el-upload-list__item-actions">
<span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
<i class="el-icon-zoom-in"/>
</span>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)">
<i class="el-icon-download"/>
</span>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)">
<i class="el-icon-delete"/>
</span>
</span>
</div>
</el-upload>
<!--图片预览-->
<el-image-viewer :z-index="2002" v-if="showViewer"
:on-close="closeViewer" :initial-index="initialIndex"
:onSwitch="onSwitch"
:url-list="dialogImageUrl"/>
</div>
</template>
<script>
import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
import {getZjdlyFileInfo} from "@/assets/js/zjdsjjg/zd";
export default {
name: "ZjdsjjgZjdzdZjdly",
props: {
parameter: {}
},
created: function () {
this.getZjdlyFileInfo(this.parameter.iid);
},
computed: {
fileData: function () {
return {
iid: this.parameter.iid,
userid: window.getCookie('userId')
// "token": this.token,
// "args": [this.token, this.iid]
}
},
},
components: {
ElImageViewer
},
data() {
return {
uploadUrl: this.$API.uploadSignImg + "?jwt=" + window.getCookie("token"),
dialogImageUrl: [],
disabled: false,
fileList: [],
showViewer: false, // 显示查看器
token: window.getCookie("token"),
initialIndex: 0
}
},
methods: {
ontopfunction: function (data, json) {
this.$emit("ontopfunction", data, json);
},
// 删除
handleRemove(file, fileList) {
let uploadFiles = this.$refs.elUpload.uploadFiles;
uploadFiles.forEach((value, index) => {
if (value.uid === file.uid) {
uploadFiles.splice(index, 1)
this.fileList.splice(index, 1)
}
})
},
// 大图预览
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url || file.response.imgUrl;
this.showViewer = true;
},
// 下载图片
handleDownload(file) {
let a = document.createElement('a');
a.download = file.name;
a.href = (file.url);
a.click();
},
// 上传前检查
beforeUpload(file) {
const fileType = file.type,
isImage = fileType.indexOf('image') !== -1,
isLt2M = file.size / 1024 / 1024 < 2;
if (!isImage) {
this.$message.error('上传图片格式只能是png、jpg、gif!');
}
return isImage;
},
//上传失败
uploadError() {
this.$message.error('上传失败!');
},
//上传成功
handleSuccess(res, file, list) {
let self = this;
let status = res.status;
if (status == -1) {
self.$message.error('上传失败!');
} else {
self.fileList.push(res.data.result);
self.$message.success('上传成功!');
}
},
// 关闭
closeViewer() {
this.showViewer = false;
},
// 获取现场照片
getZjdlyFileInfo(iid) {
let self = this;
getZjdlyFileInfo([self.token, iid]).then(res => {
if (res.data.status == 0) {
let result = eval('(' + res.data.result + ')');
self.fileList = result;
}
});
},
// 预览图查看
handlePreviewImage(index) {
this.dialogImageUrl = this.fileList;
this.initialIndex = index;
this.showViewer = true;
},
// 切换下一张预览图
onSwitch(index){
this.initialIndex = index;
}
}
}
</script>
<style scoped>
.title-left {
font-size: 26px;
height: 40px;
}
.peer {
display: inline-block;
}
</style>