<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>