小说小程序前端代码仓库(小程序)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
2.0 KiB

  1. <template>
  2. <view class="rank-item">
  3. <view class="rank-left">
  4. <image v-if="rankIcon" :src="rankIcon" class="rank-icon" />
  5. <image v-else-if="rankNumImg" :src="rankNumImg" class="rank-num-img" />
  6. <slot name="rankNum" v-else />
  7. <image v-if="medal" :src="medal" class="medal" />
  8. <image class="avatar" :src="avatar" mode="aspectFill" />
  9. <view class="name">{{ name }}</view>
  10. </view>
  11. <view class="rank-right">
  12. <view class="score">{{ score }} 亲密值</view>
  13. <view class="level">{{ level }}</view>
  14. </view>
  15. </view>
  16. </template>
  17. <script>
  18. export default {
  19. name: 'RankListItem',
  20. props: {
  21. rankIcon: String, // 排名图片(前3名)
  22. rankNumImg: String, // 排名数字图片(4-10名)
  23. medal: String, // 勋章图片
  24. avatar: String,
  25. name: String,
  26. score: [String, Number],
  27. level: {
  28. type: String,
  29. default: '护书使者 五级'
  30. }
  31. }
  32. }
  33. </script>
  34. <style lang="scss" scoped>
  35. .rank-item {
  36. display: flex;
  37. align-items: center;
  38. justify-content: space-between;
  39. background: #fffbe6;
  40. border-radius: 16rpx;
  41. margin-bottom: 18rpx;
  42. box-shadow: 0 2rpx 8rpx 0 rgba(184, 110, 59, 0.06);
  43. padding: 0 24rpx;
  44. height: 100rpx;
  45. .rank-left {
  46. display: flex;
  47. align-items: center;
  48. .rank-icon,
  49. .rank-num-img {
  50. width: 38rpx;
  51. height: 38rpx;
  52. margin-right: 10rpx;
  53. }
  54. .medal {
  55. width: 44rpx;
  56. height: 44rpx;
  57. margin-right: 10rpx;
  58. }
  59. .avatar {
  60. width: 44rpx;
  61. height: 44rpx;
  62. border-radius: 50%;
  63. margin-right: 14rpx;
  64. border: 2rpx solid #ffd700;
  65. object-fit: cover;
  66. }
  67. .name {
  68. font-size: 26rpx;
  69. color: #222;
  70. font-weight: 500;
  71. }
  72. }
  73. .rank-right {
  74. display: flex;
  75. flex-direction: column;
  76. align-items: flex-end;
  77. .score {
  78. font-size: 22rpx;
  79. color: #b86e3b;
  80. }
  81. .level {
  82. font-size: 20rpx;
  83. color: #fff;
  84. background: #e6b07c;
  85. border-radius: 8rpx;
  86. padding: 2rpx 10rpx;
  87. margin-top: 6rpx;
  88. font-weight: 500;
  89. }
  90. }
  91. }
  92. </style>