fs-wx-avatar.vue 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <template>
  2. <!-- #ifdef MP-WEIXIN -->
  3. <view
  4. class="fs-wx-avatar"
  5. :style="{width: width || size, height: height || size, border: borderStyle}"
  6. @click="handleClick">
  7. <open-data type="userAvatarUrl"></open-data>
  8. </view>
  9. <!-- #endif -->
  10. <!-- #ifndef MP-WEIXIN -->
  11. <view></view>
  12. <!-- #endif -->
  13. </template>
  14. <script setup>
  15. import { computed } from 'vue'
  16. const props = defineProps({
  17. width: String,
  18. height: String,
  19. size: {
  20. type: String,
  21. default: '140rpx'
  22. },
  23. border: Boolean,
  24. borderWidth: {
  25. type: String,
  26. default: '4rpx'
  27. },
  28. borderColor: {
  29. type: String,
  30. default: '#fff'
  31. },
  32. link: String,
  33. linkType: {
  34. type: String,
  35. default: 'navigateTo'
  36. },
  37. })
  38. const emits = defineEmits(['click'])
  39. const borderStyle = computed(() => props.border ? `${props.borderWidth} solid ${props.borderColor}` : 'none')
  40. const handleClick = () => {
  41. if (props.link) {
  42. uni[props.linkType]({
  43. url: props.link
  44. })
  45. }
  46. emits('click')
  47. }
  48. </script>
  49. <style lang="scss" scoped>
  50. .fs-wx-avatar{
  51. border-radius: 50%;
  52. overflow: hidden;
  53. }
  54. </style>