小说小程序前端代码仓库(小程序)
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.

92 lines
2.1 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, .rank-num-img {
  49. width: 38rpx;
  50. height: 38rpx;
  51. margin-right: 10rpx;
  52. }
  53. .medal {
  54. width: 44rpx;
  55. height: 44rpx;
  56. margin-right: 10rpx;
  57. }
  58. .avatar {
  59. width: 44rpx;
  60. height: 44rpx;
  61. border-radius: 50%;
  62. margin-right: 14rpx;
  63. border: 2rpx solid #ffd700;
  64. object-fit: cover;
  65. }
  66. .name {
  67. font-size: 26rpx;
  68. color: #222;
  69. font-weight: 500;
  70. }
  71. }
  72. .rank-right {
  73. display: flex;
  74. flex-direction: column;
  75. align-items: flex-end;
  76. .score {
  77. font-size: 22rpx;
  78. color: #b86e3b;
  79. }
  80. .level {
  81. font-size: 20rpx;
  82. color: #fff;
  83. background: #e6b07c;
  84. border-radius: 8rpx;
  85. padding: 2rpx 10rpx;
  86. margin-top: 6rpx;
  87. font-weight: 500;
  88. }
  89. }
  90. }
  91. </style>