myImage.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <template>
  2. <view>
  3. <image v-if="isIcon" style="border-radius: 55rpx;" :class="[mymode=='widthFix'?'imageW':'imagev']" :src="showdefault==1?dfImage:baseUrl+comUrl" mode="scaleToFill" @error="imageError" @click="myimageclick"></image>
  4. <image v-if="!isIcon" :class="[mymode=='widthFix'?'imageW':'imagev']" :src="showdefault==1?dfImage:baseUrl+comUrl" :mode="mymode" @error="imageError" @click="myimageclick"></image>
  5. </view>
  6. </template>
  7. <script>
  8. export default {
  9. name:"myImage",
  10. props:{
  11. mysrc: '',
  12. mymode:'',
  13. isIcon:false,
  14. defaultImage:''
  15. },
  16. data() {
  17. return {
  18. baseUrl:'https://backend.fooder.tw/prod-api',
  19. showdefault:0,
  20. comUrl:this.mysrc,
  21. dfImage:this.defaultImage
  22. };
  23. },
  24. watch: {
  25. mysrc(val){
  26. this.showdefault=0;
  27. this.comUrl = this.mysrc
  28. // console.log(this.baseUrl+this.comUrl);
  29. }
  30. },
  31. methods:{
  32. imageError(){
  33. if(this.dfImage==''||undefined==this.dfImage){
  34. this.dfImage='/static/logo.png';
  35. }
  36. this.showdefault=1;
  37. },
  38. myimageclick(comUrl){
  39. this.$emit('Emyimageclick',comUrl);
  40. },
  41. },
  42. }
  43. </script>
  44. <style>
  45. .imageW{
  46. margin: 0rpx;
  47. width:100%;
  48. }
  49. .imageH{
  50. margin: 0rpx;
  51. height:100%;
  52. }
  53. .imagev{
  54. width:100%;
  55. height:100%;
  56. }
  57. </style>