winningList.vue 3.8 KB

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