winningList.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <template>
  2. <view class="container">
  3. <uni-collapse class="collapse" v-model="collapseArr" @change="change">
  4. <uni-collapse-item
  5. class="collapseItem"
  6. v-for="(item, index) in prizeUserList"
  7. :title="item.userName"
  8. :thumb="item.userAvtar"
  9. :show-arrow="false"
  10. >
  11. <template v-slot:title>
  12. <view class="collapseTitle">
  13. <image class="photo" :src="item.userAvtar" mode="aspectFill"></image>
  14. <span class="text">{{ item.userName }}</span>
  15. <image
  16. v-if="collapseShow(index)"
  17. class="icon"
  18. :src="$fileUrl() + '/drawCard_fullSet/icon4.png'"
  19. mode="widthFix"
  20. ></image>
  21. <image v-else class="icon" :src="$fileUrl() + '/drawCard_fullSet/icon5.png'" mode="widthFix"></image>
  22. </view>
  23. </template>
  24. <view class="content">
  25. <view class="item" v-for="(item2, index2) in item.prizes">
  26. <image class="img" :src="item2.prizeIcon" mode="heightFix"></image>
  27. </view>
  28. </view>
  29. </uni-collapse-item>
  30. </uni-collapse>
  31. </view>
  32. </template>
  33. <script>
  34. import { prizeUserListApi } from '@/api/drawCard.js'
  35. export default {
  36. data() {
  37. return {
  38. collapseArr: [],
  39. params: {
  40. limit: 9999,
  41. page: 1,
  42. raffleId: null,
  43. },
  44. prizeUserList: [],
  45. userIds: [],
  46. }
  47. },
  48. onLoad(query) {
  49. console.log(query, 'query')
  50. if (query.raffleId) {
  51. this.params.raffleId = query.raffleId
  52. this.getPrizeUserList()
  53. }
  54. },
  55. onShow() {},
  56. computed: {},
  57. methods: {
  58. collapseShow(index) {
  59. console.log(this.collapseArr, 'this.collapseArr')
  60. let i = index + ''
  61. let b = false
  62. if (this.collapseArr.indexOf(i) != -1) {
  63. b = true
  64. }
  65. return b
  66. },
  67. change() {
  68. // console.log(this.collapseArr, 'this.collapseArr')
  69. },
  70. getPrizeUserList() {
  71. prizeUserListApi(this.params).then(res => {
  72. console.log(res, '中奖记录')
  73. let userIds = []
  74. let list = []
  75. for (var i = 0; i < res.data.length; i++) {
  76. let item = res.data[i]
  77. if (userIds.indexOf(item.userId) == -1) {
  78. userIds.push(item.userId)
  79. console.log(userIds.indexOf(item.userId))
  80. let index = userIds.indexOf(item.userId)
  81. list[index] = {
  82. userId: item.userId,
  83. userAvtar: item.userAvtar,
  84. userName: item.userName,
  85. prizes: [],
  86. }
  87. list[index].prizes.push(item)
  88. } else {
  89. let index = userIds.indexOf(item.userId)
  90. list[index].prizes.push(item)
  91. }
  92. }
  93. this.userIds = userIds
  94. this.prizeUserList = list
  95. })
  96. },
  97. },
  98. }
  99. </script>
  100. <style scoped lang="scss">
  101. .collapseItem {
  102. background: #fff;
  103. border-radius: 8px;
  104. margin: 0 10px 10px 10px;
  105. position: relative;
  106. }
  107. .collapseTitle {
  108. display: flex;
  109. align-items: center;
  110. padding: 10px;
  111. .photo {
  112. width: 40px;
  113. height: 40px;
  114. margin-right: 8px;
  115. border-radius: 50%;
  116. }
  117. .text {
  118. font-size: 12px;
  119. color: #333333;
  120. font-weight: 600;
  121. }
  122. .icon {
  123. width: 24px;
  124. height: 24px;
  125. position: absolute;
  126. right: 10px;
  127. }
  128. }
  129. .content {
  130. display: grid;
  131. grid-template-columns: 1fr 1fr 1fr 1fr;
  132. grid-gap: 10px;
  133. padding: 10px;
  134. .item {
  135. width: 100%;
  136. display: flex;
  137. justify-content: center;
  138. background: linear-gradient(180deg, #faf1a7 0%, #ffe456 100%);
  139. border-radius: 4px;
  140. .img {
  141. height: 76px;
  142. }
  143. }
  144. }
  145. </style>
  146. <style scoped>
  147. .collapse >>> .uni-collapse {
  148. background: none;
  149. }
  150. .collapse >>> .uni-collapse-item__wrap {
  151. border-radius: 0 0 8px 8px;
  152. }
  153. </style>