| 对比新文件 | 
|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <div> | 
|---|
|  |  |  | <el-upload | 
|---|
|  |  |  | :action="uploadImgUrl" | 
|---|
|  |  |  | :data="uploadData" | 
|---|
|  |  |  | list-type="picture-card" | 
|---|
|  |  |  | :file-list="fileList" | 
|---|
|  |  |  | accept=".jpg,.png" | 
|---|
|  |  |  | :before-upload="beforeUpload" | 
|---|
|  |  |  | :on-success="uploadSuccess" | 
|---|
|  |  |  | :on-error="fail" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <i class="el-icon-plus icon"></i> | 
|---|
|  |  |  | <div slot="file" slot-scope="{file}"> | 
|---|
|  |  |  | <img | 
|---|
|  |  |  | class="el-upload-list__item-thumbnail" | 
|---|
|  |  |  | :src="file.url" alt="" | 
|---|
|  |  |  | style="width: 100px;height: 100px;" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <span class="el-upload-list__item-actions"> | 
|---|
|  |  |  | <span | 
|---|
|  |  |  | class="el-upload-list__item-preview" | 
|---|
|  |  |  | @click="handlePictureCardPreview(file)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <i class="el-icon-zoom-in"></i> | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | <span | 
|---|
|  |  |  | class="el-upload-list__item-delete" | 
|---|
|  |  |  | @click="handleRemove(file)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <i class="el-icon-delete"></i> | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-upload> | 
|---|
|  |  |  | <el-image-viewer | 
|---|
|  |  |  | v-if="showViewer" | 
|---|
|  |  |  | :on-close="closeViewer" | 
|---|
|  |  |  | :initialIndex="tempIndex" | 
|---|
|  |  |  | :url-list="srcList" | 
|---|
|  |  |  | :z-index="3000" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import ElImageViewer from 'element-ui/packages/image/src/image-viewer' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | components: { | 
|---|
|  |  |  | ElImageViewer | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | props: { | 
|---|
|  |  |  | fileList: { | 
|---|
|  |  |  | type: Array, | 
|---|
|  |  |  | default: () => [] | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | uploadData: Object, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/web/public/uploadLocal', | 
|---|
|  |  |  | realList: [], | 
|---|
|  |  |  | srcList: [], | 
|---|
|  |  |  | tempIndex: 0, | 
|---|
|  |  |  | showViewer: false, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | watch: { | 
|---|
|  |  |  | fileList: { | 
|---|
|  |  |  | handler(val) { | 
|---|
|  |  |  | console.log(val); | 
|---|
|  |  |  | if (val.length==0) { | 
|---|
|  |  |  | this.realList = [] | 
|---|
|  |  |  | this.srcList = [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | beforeUpload(file) { | 
|---|
|  |  |  | this.$emit('beginUpload') | 
|---|
|  |  |  | return true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 涓婁紶鍥剧墖鎴愬姛 | 
|---|
|  |  |  | uploadSuccess (res, file, fileList) { | 
|---|
|  |  |  | // console.log('this.fileList', this.fileList); | 
|---|
|  |  |  | // console.log('fileList', fileList); | 
|---|
|  |  |  | this.$emit('uploadEnd') | 
|---|
|  |  |  | this.realList = fileList | 
|---|
|  |  |  | this.srcList.push(res.data.url) | 
|---|
|  |  |  | // console.log('file', file); | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | this.fileList.push( | 
|---|
|  |  |  | { | 
|---|
|  |  |  | fileurl: res.data.imgaddr, | 
|---|
|  |  |  | name: res.data.originname, | 
|---|
|  |  |  | url: res.data.url | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.$message.error(res.msg || '涓婁紶澶辫触') | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | fail (err, file, fileList) { | 
|---|
|  |  |  | this.$emit('uploadEnd') | 
|---|
|  |  |  | this.$message.error('涓婁紶澶辫触') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | handlePictureCardPreview(file) { | 
|---|
|  |  |  | // this.tempIndex = this.srcList.findIndex(item => item == file.response.data.url ) | 
|---|
|  |  |  | // console.log(file); | 
|---|
|  |  |  | this.tempIndex = this.fileList.findIndex(item => item.url == file.url ) | 
|---|
|  |  |  | // console.log( this.tempIndex); | 
|---|
|  |  |  | this.srcList = this.fileList.map(item => item.url) | 
|---|
|  |  |  | this.showViewer = true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | closeViewer() { | 
|---|
|  |  |  | this.showViewer = false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | handleRemove(file) { | 
|---|
|  |  |  | console.log(this.fileList); | 
|---|
|  |  |  | let tempIndex = this.realList.findIndex(item => item.url === file.url) | 
|---|
|  |  |  | // debugger | 
|---|
|  |  |  | this.realList.splice(tempIndex, 1) | 
|---|
|  |  |  | this.fileList.splice(tempIndex, 1) | 
|---|
|  |  |  | this.srcList.splice(tempIndex, 1) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|
|  |  |  | ::v-deep .el-upload--picture-card{ | 
|---|
|  |  |  | width: 90px !important; | 
|---|
|  |  |  | height: 90px !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ::v-deep .el-upload-list__item { | 
|---|
|  |  |  | width: 90px !important; | 
|---|
|  |  |  | height: 90px !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .icon { | 
|---|
|  |  |  | -webkit-transform: translate(-50%,-50%); | 
|---|
|  |  |  | -ms-transform: translate(-50%,-50%); | 
|---|
|  |  |  | transform: translate(0%, -85%); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ::v-deep .el-upload-list__item { | 
|---|
|  |  |  | width: 90px !important; | 
|---|
|  |  |  | height: 90px !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|
|  |  |  |  | 
|---|