u--image.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <uvImage
  3. :src="src"
  4. :mode="mode"
  5. :width="width"
  6. :height="height"
  7. :shape="shape"
  8. :round="round"
  9. :lazyLoad="lazyLoad"
  10. :showMenuByLongpress="showMenuByLongpress"
  11. :loadingIcon="loadingIcon"
  12. :errorIcon="errorIcon"
  13. :showLoading="showLoading"
  14. :showError="showError"
  15. :fade="fade"
  16. :webp="webp"
  17. :duration="duration"
  18. :bgColor="bgColor"
  19. :customStyle="customStyle"
  20. @click="$emit('click')"
  21. @error="$emit('error')"
  22. @load="$emit('load')"
  23. >
  24. <template v-slot:loading>
  25. <slot name="loading"></slot>
  26. </template>
  27. <template v-slot:error>
  28. <slot name="error"></slot>
  29. </template>
  30. </uvImage>
  31. </template>
  32. <script>
  33. /**
  34. * 此组件存在的理由是,在nvue下,u-image被uni-app官方占用了,u-image在nvue中相当于image组件
  35. * 所以在nvue下,取名为u--image,内部其实还是u-iamge.vue,只不过做一层中转
  36. */
  37. import uvImage from '../u-image/u-image.vue';
  38. import props from '../u-image/props.js';
  39. import mixin from '../../libs/mixin/mixin'
  40. import mpMixin from '../../libs/mixin/mpMixin'
  41. /**
  42. * Image 图片
  43. * @description 此组件为uni-app的image组件的加强版,在继承了原有功能外,还支持淡入动画、加载中、加载失败提示、圆角值和形状等。
  44. * @tutorial https://uviewui.com/components/image.html
  45. * @property {String} src 图片地址
  46. * @property {String} mode 裁剪模式,见官网说明 (默认 'aspectFill' )
  47. * @property {String | Number} width 宽度,单位任意,如果为数值,则为px单位 (默认 '300' )
  48. * @property {String | Number} height 高度,单位任意,如果为数值,则为px单位 (默认 '225' )
  49. * @property {String} shape 图片形状,circle-圆形,square-方形 (默认 'square' )
  50. * @property {String | Number} round 圆角值,单位任意,如果为数值,则为px单位 (默认 0 )
  51. * @property {Boolean} lazyLoad 是否懒加载,仅微信小程序、App、百度小程序、字节跳动小程序有效 (默认 true )
  52. * @property {Boolean} showMenuByLongpress 是否开启长按图片显示识别小程序码菜单,仅微信小程序有效 (默认 true )
  53. * @property {String} loadingIcon 加载中的图标,或者小图片 (默认 'photo' )
  54. * @property {String} errorIcon 加载失败的图标,或者小图片 (默认 'error-circle' )
  55. * @property {Boolean} showLoading 是否显示加载中的图标或者自定义的slot (默认 true )
  56. * @property {Boolean} showError 是否显示加载错误的图标或者自定义的slot (默认 true )
  57. * @property {Boolean} fade 是否需要淡入效果 (默认 true )
  58. * @property {Boolean} webp 只支持网络资源,只对微信小程序有效 (默认 false )
  59. * @property {String | Number} duration 搭配fade参数的过渡时间,单位ms (默认 500 )
  60. * @property {String} bgColor 背景颜色,用于深色页面加载图片时,为了和背景色融合 (默认 '#f3f4f6' )
  61. * @property {Object} customStyle 定义需要用到的外部样式
  62. * @event {Function} click 点击图片时触发
  63. * @event {Function} error 图片加载失败时触发
  64. * @event {Function} load 图片加载成功时触发
  65. * @example <u--image width="100%" height="300px" :src="src"></u--image>
  66. */
  67. export default {
  68. name: 'u--image',
  69. mixins: [mpMixin, mixin, props],
  70. components: {
  71. uvImage
  72. },
  73. }
  74. </script>