| <template> | 
|   <div> | 
|     <el-upload | 
|       class="avatar-uploader" | 
|       :action="uploadImgUrl" | 
|       :data="uploadData" | 
|       :show-file-list="false" | 
|       :on-success="handleAvatarSuccess" | 
|       :on-error="uploadError" | 
|       :before-upload="beforeAvatarUpload"> | 
|       <template v-if="file.imgurlfull"> | 
|         <img  :src="file.imgurlfull" class="avatar"> | 
|       </template> | 
|       | 
|       <i v-else class="el-icon-plus avatar-uploader-icon"></i> | 
|        | 
|     </el-upload> | 
|   </div> | 
|    | 
| </template> | 
|   | 
| <script> | 
| export default { | 
|   props: { | 
|     file: { | 
|       type: Object, | 
|       default: () => {} | 
|     }, | 
|     uploadData: Object | 
|   }, | 
|   data() { | 
|     return { | 
|       uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/uploadLocal', | 
|       // uploadData: { | 
|       //   folder: 'upload', | 
|       //   type: 'image' | 
|       // }, | 
|       imgurlfull: '' | 
|     } | 
|   }, | 
|    | 
|   methods: { | 
|     // 上传图片 | 
|     handleAvatarSuccess(res, file) { | 
|       if (res.code == 200) { | 
|         this.file.imgurl = res.data.imgaddr; | 
|         this.file.imgurlfull = res.data.url; | 
|         this.$tip.apiSuccess('上传成功') | 
|         this.$emit('uploadSuccess', { imgurl: res.data.imgaddr, imgurlfull: res.data.url }) | 
|       } else { | 
|         this.$tip.apiFailed('上传失败') | 
|       } | 
|       this.$emit('uploadEnd') | 
|     }, | 
|     uploadError() { | 
|       this.$tip.apiFailed('上传失败') | 
|       this.$emit('endUpload') | 
|     }, | 
|     // // 拦截 | 
|     beforeAvatarUpload(file) { | 
|       this.$emit('uploadBegin') | 
|       return true; | 
|     }, | 
|   }, | 
| } | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
| $image-width: 100px; | 
| .avatar-uploader { | 
|   width: $image-width; | 
|   height: $image-width; | 
| } | 
| ::v-deep .el-upload { | 
|   border: 1px dashed #d9d9d9; | 
|   border-radius: 6px; | 
|   cursor: pointer; | 
|   position: relative; | 
|   width: $image-width; | 
|   height: $image-width; | 
|   overflow: hidden; | 
| } | 
| .avatar-uploader .el-upload:hover { | 
|   border-color: #409EFF; | 
| } | 
| .avatar-uploader-icon { | 
|   font-size: 28px; | 
|   color: #8c939d; | 
|   width: $image-width; | 
|   height: $image-width; | 
|   line-height: $image-width; | 
|   text-align: center; | 
| } | 
| .avatar { | 
|   width: $image-width; | 
|   height: $image-width; | 
|   display: block; | 
| } | 
| </style> | 
| <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> |