winningList.vue 3.4 KB

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